Java动态代理的invoke方法返回值如何够自己定义? 5C

Java动态代理的invoke方法返回值,想根据不同的接口调用标识加载不同的xml获取相应的bean属性,设置对应的值返回。

1个回答

那你原方法为什么会有返回值?
比如你原方法要返回一个信息,难道代理之后这个返回信息就不需要了吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java 方法返回值类型 类型转换

![图片说明](https://img-ask.csdn.net/upload/201612/03/1480760258_469214.png) ![图片说明](https://img-ask.csdn.net/upload/201612/03/1480760272_241328.png) 第5行一直报错 说要返回long 类型的值 问题1:我认为我方法中的三种情况下的返回值都是long 不知道出了什么错 问题2:如果我在返回值为long的方法里写 renturn 1 ; 这个 1 会被自动转化为long类型吗 问题3 : 这么写可不可以 return (long )1;

java怎么在另外一个类里面调用一个无返回值方法里面的局部变量呢?

在mqtt订阅代码里面,我想将订阅的消息里面的部分内容提取出来作为另外一个方法里的变量。但是mqtt的messagearrived方法默认是无返回值的,所以想知道该怎么调用一个无返回值方法的局部变量。 public static void subscribe() { try { MqttClient client = new MqttClient(serviceURI, clientID, persistence); client.setCallback(new MqttCallback() { @Override public void connectionLost(Throwable cause) { System.out.println("订阅者连接丢失..."); System.out.println(cause.getMessage()); } @Override public void messageArrived(String topic, MqttMessage message) { String mes =message.toString(); String rssi = mes.substring(mes.indexOf("rssi")+7,mes.indexOf("ibeaconTxPower")-2); int abc = Integer.parseInt(rssi); System.out.println("第一个网关的RSSI值: "+Integer.parseInt(rssi)); } @Override public void deliveryComplete(IMqttDeliveryToken token) { } }); MqttConnectOptions connectOptions = new MqttConnectOptions(); connectOptions.setUserName(username); connectOptions.setPassword(password.toCharArray()); connectOptions.setCleanSession(false); //订阅者连接订阅主题 client.connect(connectOptions); client.subscribe(topic, qos); System.out.println("订阅者连接状态: " + client.isConnected()); } catch (MqttException e) { e.printStackTrace(); } } 想要获取messagearrived里的rssi,调用到另外一个类里面

java中调用一个类方法如何得到他的返回值。

**新手代码写的比较乱大佬们见谅,恳请大佬帮看一下,万分感谢** ``` @RequestMapping("/adg") public ModelAndView adg(Img img) { ModelAndView mv = new ModelAndView(); String imgName = img.getImgName(); System.out.println(imgName); mv.addObject("keyword", imgName); AdvancedGeneral adv = new AdvancedGeneral(); adv.advancedGeneral(imgName); mv.setViewName("login"); //mv.addObject("kwd", kwd); return mv; } ``` 1. 上面是第一个代码,imgName 是从前端输入框获取的值然后把它传到AdvancedGeneral类中advancedGeneral()方法中。 1. 然后下面是AdvancedGeneral类的代码。 1. 我想获取到kwd这个值再返回到前端页面去 应该如何实现。。。前段是用的jsp ``` public class AdvancedGeneral { /** * 重要提示代码中所需工具类 * FileUtil,Base64Util,HttpUtil,GsonUtils请从 * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3 * 下载 */ public static String advancedGeneral(String imgName) { // 请求url String url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general"; try { // 本地文件路径 System.out.println(imgName); String filePath = "C:\\Users\\Administrator\\Desktop\\photo\\"+imgName+".jpg"; byte[] imgData = FileUtil.readFileByBytes(filePath); String imgStr = Base64Util.encode(imgData); String imgParam = URLEncoder.encode(imgStr, "UTF-8"); String param = "image=" + imgParam; // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 String accessToken = "24.261799bd470fb0f8bbd5e1c86b5b0282.2592000.1589199374.282335-19377424"; String result = HttpUtil.post(url, accessToken, param); //System.out.println(result); // 用阿里 fastjson 解析器 解析json JSONObject jsonObject = JSON.parseObject(result); // 得到 result_num 的值 Integer resultNum = jsonObject.getInteger("result_num"); // System.out.println(resultNum); // 得到result集合 JSONArray jsa = jsonObject.getJSONArray("result"); List<Map<String, Object>> list =(List)jsa; String kwd = (String) list.get(0).get("keyword"); System.out.println(kwd); UserController uc = new UserController(); return kwd; } catch (Exception e) { e.printStackTrace(); } return null; } ```

创建对象调用方法,为什么 void的方法有返回结果,string的方法没有返回结果

``` package com; public class leetcode2 { public Integer id; public String name; @Override public String toString() { return "leetcode2 [id=" + id + ", name=" + name + "]"; } public void abc() { System.out.println("leetcode2 [id=" + id + ", name=" + name + "]"); } public static void main(String[] args) { leetcode2 lc = new leetcode2(); lc.id = 1; lc.name = "James"; lc.abc(); lc.toString(); } } ```

在看书《Java核心技术I》,在代理那章有一个关于InvocationHandler的问题没看懂,望大神能解释一下。

书上内容: 6.5.2 创建代理对象 要想创建一个代理对象,需要使用 Proxy类的 newProxylnstance方法。这个方法有三个 参数: •一个类加栽器(class loader)。作为 Java 安全模型的一部分,对于系统类和从因特网 上下载下来的类,可以使用不同的类加载器。有关类加载器的详细内容将在卷 章中讨论。目前,用 null 表示使用默认的类加载器。 •一个 Class对象数组,每个元素都是需要实现的接口。 n 第 9 •一个调用处理器。 还有两个需要解决的问题。如何定义一个处理器? 能够用结果代理对象做些什么? 当 然,这两个问题的答案取决于打算使用代理机制解决什么问题。使用代理可能出于很多原 因,例如: •路由对远程服务器的方法调用。 •在程序运行期间,将用户接口事件与动作关联起来。 •为调试,跟踪方法调用。 在示例程序中,使用代理和调用处理器跟踪方法调用,并且定义了一个 TraceHander 包 装器类存储包装的对象。其中_的 invoke方法打印出被调用方法的名字和参数,随_后用包装好的对象作为隐式参数调用这个方法。 class TraceHandler implements InvocationHandler { private Object target ; public TraceHandler(Object t) { target = t; } public Object invoke(Object proxy, Method m, Object[] args) throws Throwable { // print method name and parameters // invoke actual method return m.invoke(target , args) ; } } 问题:我不理解为什么invoke()可以打印出被调用的方法的名字和参数; 因为我看在这本书的解释里,invoke()只是起到类似C语言中函数指针的功能;这段代码里我找不到关于打印输出的内容,可能是我因为不知道调用处理器的工作方式,望大神能解释一下;

axis调用webservice:返回值不正确

本人对webservice的调用不熟悉,求助各位大侠!多谢! WSDL的XML文件中定义的参数如下 name="zone" type="xsd:string" default="CM-ACCTSPID" name="Id" type="xsd:string" name="rowCount" type="xsd:decimal" name="accountId" type="xsd:string" accountID是返回值 我自己写的调用程序是 Service service = new Service(); // 创建一个call对象 Call call = (Call) service.createCall(); // 设置目标地址,即webservice路径 call.setTargetEndpointAddress(endpoint); // 设置操作名称,即方法名称 call.setSOAPActionURI("http://ouaf.oracle.com/spl/XAIXapp/xaiserver/CM-ACCTSPID"); call.setOperationName("CM-ACCTID");// 调用的方法名 call.setUseSOAPAction(true); Object [] c={"CM-ACCTID","5706648717",1,""}; Object a=call.invoke(c); 但是上述打印出a是CM-ACCTID,这不是webservice的正确返回信息。求解答! 用soapUI测试webservice,输入参数CM-ACCTID、5706648717、1,就有输出参数 0614668080。

map 返回值为空 不知道为啥

//查询表中的所有的数据 @Action(value="user",results={@Result(name="succes", location="/WEB-INF/jsp/user.jsp")}) public String userall(){ Session session = sessionFactory.openSession(); Query<UserEntity> query=session.createQuery("from user"); List<UserEntity> userlist=query.list(); for (UserEntity userEntity : userlist) { listuser.add(userEntity); } session.close(); return "succes"; } @Action(value="json") public Map<String, Object> json(){ HttpServletResponse response = ServletActionContext.getResponse(); map=new HashMap<String, Object>(); int total=listuser.size(); map.put("total",total); map.put("rows", listuser); String data = JSON.toJSONString(map); try { response.setCharacterEncoding("UTF-8"); PrintWriter out; out = response.getWriter(); out.write(data.toString()); System.out.println(data); out.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return map; } ![f12调试后没有值图片说明](https://img-ask.csdn.net/upload/201709/03/1504416375_892008.png) java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String at com.opensymphony.xwork2.DefaultActionInvocation.saveResult(DefaultActionInvocation.java:483) at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:446) at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:284) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245) at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:253) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:177) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:260) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:69) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:139) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:133) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:133) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:192) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:69) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:121) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:88) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:245) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:139) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:155) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:174) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:97) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:151) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:171) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:195) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:193) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:54) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:564) at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81) at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:113) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

"main" java.lang.NullPointerException

//四、用Java实现掷骰子游戏:丢下两个骰子,若分值的总值为7点,则赢;否则输。 //编写步骤如下: //(1)首先定义Dice类。 //提示:Dice类表示一个骰子有faceValue一个属性,为整型; //有一个roll()方法和getFaceValue()。 //roll()方法功能使faceValue属性设置为1~6中的一个随机值,没有返回值。 //getFaceValue()方法功能为取出faceValue值。 //Math.random()方法是求随机数,返回值为double类型,值的范围为0.0~1.0 //(2)然后定义DiceGame类。 //提示:DiceGame类有dice1、dice2两个属性,类型分别为Dice类类型,有一个play()方法。 //play()方法返回一个布尔类型,true表示丢下两个骰子分值的总值为7点,否则为false。 //(3)最后编写一个测试类Test,对上面定义的类进行测试。 //提示: main()方法中产生DiceGame对象,执行play()方法后显示出输赢。 class Dice{ private int faceValue; public void roll(){ faceValue=(int)(6*Math.random()); } public int getFaceValue(){ return faceValue; } } class DiceGame extends Dice{ private Dice dice1; private Dice dice2; public boolean play(){ dice1.roll(); dice2.roll(); if(dice1.getFaceValue()+dice2.getFaceValue()==7){ System.out.println("赢了!"); return true; } else { System.out.println("输了!"); return false; } } } public class Test{ public static void main(String[] args){ DiceGame one=new DiceGame(); one.play(); } } 请问大神错在哪? 错在27和42行

webservice中定义的ref参数 用java怎么调用

接口格式是这样的 int HisTrans(string ParamIn, ref string ParamOut) 我java的写法是: String paramIn = "<HisTrans><TranCode>GetHealthYE</TranCode><DevNo></DevNo><DevSeqNo></DevSeqNo><HealthNo>卡号</HealthNo ></HisTrans>"; String url = "http://ip:668/jjzyy/weixinwebservice.asmx";// 访问的url String namespace = "http://tempuri.org/";// xml文件中的targetNamespace名称 String methodName = "HisTrans";// 要调用的方法名称 String soapActionURI = "http://tempuri.org/HisTrans";// targetNamespace+methodName try { Call call;// 引用org.apache.axis.client.Call; Service service = new Service();// org.apache.axis.client.Service; call = (Call) service.createCall(); call.setTargetEndpointAddress(url); call.setUseSOAPAction(true); call.setSOAPActionURI(soapActionURI); call.setOperationName(new QName(namespace, methodName)); call.addParameter(new QName(namespace, "ParamIn"), org.apache.axis.encoding.XMLType.XSD_STRING, ParameterMode.IN);// byProvinceName传人的参数名称要和wsdl文件的一样,XSD_STRING传人的参数类型 call.addParameter(new QName(namespace, "ParamOut"), org.apache.axis.encoding.XMLType.XSD_STRING, ParameterMode.IN);// byProvinceName传人的参数名称要和wsdl文件的一样,XSD_STRING传人的参数类型 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 返回的参数,根据具体返回值修改 String[] str = new String[2]; str[0] = paramIn;// 第一个参数值 str[1] = "";// 第一个参数值 Object obj = (Object) call.invoke(str); System.out.println("obj + " + obj.toString() + ";" + str[1]); } catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } 有没有什么方式可以获取到 ParamOut的值(把类型设置成OUT 会报错)

基于AXIS调用webservice报错:Connection refused: connect

我的调用方法: public static void main(String[] args) throws Exception { String client_id = "HeYiApp"; String orderNum = "2"; List numberList = new ArrayList(); numberList.add("120719"); numberList.add("120746"); numberList.add("113095"); String webUrl = "https://10.218.132.26/api/openapi/employee/getBatchEmpInfoList.json";// 服务端url地址 String webMethod = "getBatchEmpInfoList";// 调用方法名称 Service service = new Service(); // 建服务 Call call; try { call = (Call) service.createCall(); try { call.setTargetEndpointAddress(new URL(webUrl)); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); }// 设置访问地址 call.setOperationName(webMethod);// 设置访问方法 call.addParameter("arg0", XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);// 定义参数 call.addParameter("arg1", XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);// 定义参数 call.addParameter("arg2", XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);// 定义参数 call.setReturnType(XMLType.XSD_STRING);// 定义返回值格式 //List<Map<String, Object>> workersInfo= (List<Map<String, Object>>) call.invoke(new Object[] { client_id, numberList, orderNum }); //for(Map m:workersInfo){ // System.out.println(m.get("name")); //} JSONArray jsonObject = (JSONArray) call.invoke(new Object[] { client_id, numberList, orderNum }); System.out.println(jsonObject.toString()); } catch (ServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 建对话 } 报错: Exception in thread "main" AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.net.ConnectException: Connection refused: connect faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668) at sun.security.ssl.SSLSocketImpl.&lt;init&gt;(SSLSocketImpl.java:427) at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:88) at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:92) at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191) at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404) at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at webservice.Test.main(Test.java:52) {http://xml.apache.org/axis/}hostname:zhangxl java.net.ConnectException: Connection refused: connect at org.apache.axis.AxisFault.makeFault(AxisFault.java:101) at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:154) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at webservice.Test.main(Test.java:52) Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668) at sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:427) at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:88) at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:92) at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191) at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404) at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138) ... 10 more

JAVA cxf 返回数据问题

基本接口知道怎么写,问题在 我想实现 客户端 提交 一句SQL JAVA接口实现 return 整个查询后的数据, 百度上很多 都是 需要 单独建立一个 对象实例类 然后 返回LIST ,但 查询SQL返回 的数据不固定,每个表实例化 不太现实,求解决方案 最好能自由定义返回数据格式,或者自动定义, 还有就是 会话方式 能否使用SESSION 保存状态?

CXF动态生成client调用服务端,服务端收到参数为空,请教如何解决?

请教大家一个问题。 java做客户端,c#做服务端。java用apache.cxf的DynamicClientFactory或者JaxWsDynamicClientFactory根据wsdl生成client,调用服务端传递UserSyncData对象,服务端方法收到的参数对象是null,请问大家有解决办法吗?(需求:一定要用动态生成客户端的方式) 传递的对象UserSyncData 是jdk或者用cxf的wsdl2java在本地生成的pojo,服务端接受的参数就是空。如果用代理服务类的方式调用,是可以成功的,可以正常收到参数。但是我的项目要求用动态方式调用,所以来请教大家 java中调用的代码 ![CSDN移动问答][1] .net服务端方法:打断点看到userSyncData为null ![CSDN移动问答][2] [1]: http://c.hiphotos.baidu.com/zhidao/pic/item/adaf2edda3cc7cd95ffea4b53b01213fb90e918f.jpg [2]: http://c.hiphotos.baidu.com/zhidao/pic/item/738b4710b912c8fce13d66a1fe039245d788218b.jpg 我自己分析可能是pojo对象在java和c#中定义要达成某种规范,仅是猜测,也不知道应该怎么做。以前和同时调试hessian的时候,要求java和c#的pojo必须一模一样,包括namespace也必须一样,我按这个方法试了以后也没用。

axis访问sap的webserv多返回值问题

sap的 wsdl文件部分: ================================================== <xsd:schema xmlns:n0="urn:sap-com:document:sap:rfc:functions" attributeFormDefault="qualified" targetNamespace="urn:sap-com:document:sap:soap:functions:mc-style"> <xsd:import namespace="urn:sap-com:document:sap:rfc:functions"/> <xsd:element name="Zmminterface"> <xsd:complexType> <xsd:sequence> <xsd:element name="Iheads" type="n0:string" minOccurs="0"/> <xsd:element name="Iitems" type="n0:string" minOccurs="0"/> <xsd:element name="Intid" type="n0:char20"/> <xsd:element name="Iselec" type="n0:string" minOccurs="0"/> <xsd:element name="Paras" type="n0:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="ZmminterfaceResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="Eheads" type="n0:string"/> <xsd:element name="Eitems" type="n0:string"/> <xsd:element name="Emess" type="n0:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="Zmminterface"> <wsdl:part name="parameters" element="tns:Zmminterface"/> </wsdl:message> <wsdl:message name="ZmminterfaceResponse"> <wsdl:part name="parameter" element="tns:ZmminterfaceResponse"/> </wsdl:message> ========================================= 我的java代码: public static void main(String args[]) { String wsdlURISap = ""; String namespaceURI = ""; String operationName = ""; String serviceLocalPart = ""; // String portName = ""; // try{ wsdlURISap = "http://192.168.108.106:8001/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/zmminterface/300/mmservices/binding?sap-client=300?wsdl"; namespaceURI = "urn:sap-com:document:sap:soap:functions:mc-style";// operationName = "Zmminterface";// serviceLocalPart = "mmservices" ;// portName = "binding" ;// //5个参数测试值 String Iheads ="1"; String Iitems="2"; String Intid = "3"; String Iselec = "4"; String Paras ="5"; Object[] arg0 = new Object[] { Iheads, Iitems,Intid, Iselec , Paras }; Parser wsdlParser = new Parser(); //这里用户名密码设置有用 ,比如不设置会把url无效 wsdlParser.setUsername("sapuser"); wsdlParser.setPassword("123321"); wsdlParser.run(wsdlURISap); // 名命空间,服务名 QName qName = new QName(namespaceURI, serviceLocalPart); Service clientService = new Service(wsdlParser, qName); javax.xml.rpc.Call call = clientService.createCall( QName.valueOf(portName), QName.valueOf(operationName)); // http 方式认证用户名和密码 ((org.apache.axis.client.Call) call).getMessageContext().setUsername("sapuser"); // httpbase认证用户名 ((org.apache.axis.client.Call) call).getMessageContext().setPassword("123321"); ((org.apache.axis.client.Call) call).setTimeout(new Integer(30 * 1000)); //调用sap String result = (String) call.invoke(arg0); System.out.println(result); } catch(Exception e ){ System.out.println("clientSAP方法返回值 *****"+e.toString() ); } } ========================================== 异常: [ERROR] Exception: org.xml.sax.SAXException: Deserializing parameter 'Eheads': could not find deserializer for type {urn:sap-com:document:sap:rfc:functions}string at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:277) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384) at org.apache.axis.client.Call.invoke(Call.java:2467) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at com.infor.webService.client.SapWebServiceClinet.main(SapWebServiceClinet.java:60) ========================== 问题像是:三个字符型的返回值, 我要怎么 定义接收 ?

springboot使用spybean单元测试时,若被spy的类中有transactional注解会出现NotAMockException

在springboot中使用spybean单元测试时,发现在被spy的类中,若加入了Transactional注解后,在测试类中定义被spy类的某个方法的返回值时,会抛出NotAMockException. org.mockito.exceptions.misusing.NotAMockException: Argument passed to when() is not a mock! Example of correct stubbing: doThrow(new RuntimeException()).when(mock).someMethod(); at com.xxx.xxx.xxxx.service.impl.SubCustomerServiceImplTest.should_have_xxx_rights_when_maximum_rc_greater_than_0(SubCustomerServiceImplTest.java:222) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:73) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:83) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 请问有朋友知道如何解决吗?

aspectj 注解方式around,proceed()后又进入到同样的切面问题

以下问题,求教原因及解决方法。 定义了切面 @Pointcut("@annotation(annotation.definition.Filter)") public void filterPointcut(){} @Around("filterPointcut()") public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable { Object ret = null; System.out.println("i am in around"); ret = joinPoint.proceed(); return ret; } 当我起个main去调用被@Filter注解修饰的方法时, i am in around出现了2次。为什么会这样,怎么解决

ibatis调用存储过程入参问题

<p style="" align="left"><span lang="EN-US" style=""><span style="color: #000000;">CREATE OR REPLACE TYPE EMP_SALARY_REC AS OBJECT (<br> EMP_ID NUMBER(5),<br> EMP_NAME VARCHAR2(255),<br> START_DATE DATE,<br> SALARY NUMBER <br>);<br>/<br><br>CREATE OR REPLACE Type EMP_SALARY_TAB AS TABLE OF EMP_SALARY_REC;<br>/<br><br>next we will create a small package with one single test procedure<br><br>CREATE OR REPLACE PACKAGE EMP_SALARY_PKG IS<br> PROCEDURE GET_EMP_SALARIES(i_array IN EMP_SALARY_TAB,o_array OUT<br>EMP_SALARY_TAB);<br>End EMP_SALARY_PKG;<br>/<br></span><br>用ibatis就不能配置调用吗?</span></p><br/><strong>问题补充</strong><br/><div class="quote_title">niwenbin 写道</div><div class="quote_div">SQL Map通过&lt;procedure&gt;元素支持存储过程。下面的例子说明如何使用具有输出参数的存储过程。 <br />&lt;parameterMap id="swapParameters" class="map" &gt; <br />&lt;parameter property="email1" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/&gt; <br />&lt;parameter property="email2" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/&gt; <br />&lt;/parameterMap&gt; <br />&lt;procedure id="swapEmailAddresses" parameterMap="swapParameters" &gt; <br />{call swap_email_address (?, ?)} <br />&lt;/procedure&gt; <br />调用上面的存储过程将同时互换两个字段(数据库表)和参数对象(Map)中的两个email <br />地址。如果参数的mode属性设为INOUT或OUT,则参数对象的值被修改。否则保持不变。</div> <br /> <br /> <br />参数是自定义的type类型(EMP_SALARY_TAB): <br />CREATE OR REPLACE TYPE EMP_SALARY_REC AS OBJECT ( <br />EMP_ID NUMBER(5), <br />EMP_NAME VARCHAR2(255), <br />START_DATE DATE, <br />SALARY NUMBER <br />); <br />CREATE OR REPLACE Type EMP_SALARY_TAB AS TABLE OF EMP_SALARY_REC; <br /><br/><strong>问题补充</strong><br/><div class="quote_title">threejin520 写道</div><div class="quote_div">Ibatis访问存储过程的配置 zz&nbsp; 2009-10-30 16:35:48|&nbsp; 分类: Java |&nbsp; 标签: |字号大 <br />中 <br />小 订阅 <br /> <br />最近项目里经常需要配置用Ibatis访问存储过程(或函数),多次摸索,发现配置的难点是在于如何配置输入输出参数。现以访问Oracle的存储过程(或函数)举例说明。 <br /> <br />一般基本的配置要点如下: <br /> <br />(1)、访问存储过程(或函数)一般以procedure标签来定义statement。 <br /> <br />(2)、输入输出的参数需要用parameterMap标签单独定义。 <br /> <br />(3)、区分输入输出参数用parameter标签的mode属性来定义,分别为”OUT”和”IN”。 <br /> <br />按照是否有返回值,是否使用游标分类说明如下: <br /> <br />第一类,没有返回结果,有输出参数以out标识的过程访问配置样式: <br /> <br />&lt;parameterMap id=”functionPramsMap” class=”map”&gt; <br /> <br />&lt;parameter property=”p1″ jdbcType=”VARCHAR” javaType=”string” mode=”IN”/&gt; <br /> <br />&lt;parameter property=”p2″ jdbcType=”INTEGER” javaType=”int” mode=”IN”/&gt; <br /> <br />&lt;parameter property=”p3″ jdbcType=”INTEGER” javaType=”int” mode=”OUT” /&gt; <br /> <br />&lt;/parameterMap&gt; <br /> <br />&lt;procedure id=”statementId” parameterMap=”functionPramsMap”&gt; <br /> <br />{call packageName.functionName(?,?,?)} <br /> <br />&lt;/procedure&gt; <br /> <br />第二类,有返回结果,有输出参数以out标识的过程访问配置样式: <br /> <br />&lt;parameterMap id=”functionParamsMap” class=”map”&gt; <br /> <br />&lt;parameter property=”p0″ jdbcType=” INTEGER” javaType=”string” mode=”OUT”/&gt; <br /> <br />&lt;parameter property=”p1″ jdbcType=”VARCHAR” javaType=”string” mode=”IN”/&gt; <br /> <br />&lt;parameter property=”p2″ jdbcType=”INTEGER” javaType=”int” mode=”IN”/&gt; <br /> <br />&lt;parameter property=”p3″ jdbcType=”INTEGER” javaType=”int” mode=”OUT” /&gt; <br /> <br />&lt;/parameterMap&gt; <br /> <br />&lt;procedure id=”statementId” parameterMap=” functionParamsMap”&gt; <br /> <br />{?=call packageName.functionName(?,?,?)} <br /> <br />&lt;/procedure&gt; <br /> <br />这里参数p0标识调用过程的返回结果。 <br /> <br />第三类,有使用游标的的过程访问配置样式: <br /> <br />&lt;resultMap id=”resultMap” class=”package.ClassA”&gt; <br /> <br />&lt;result property=”property0″ column=”field0″ /&gt; <br /> <br />&lt;result property=”property1″ column=”field2″ /&gt; <br /> <br />&lt;result property=”property2″ column=”field3″ /&gt; <br /> <br />&lt;/resultMap&gt; <br /> <br />&lt;parameterMap id=”functionParamsMap” class=”map”&gt; <br /> <br />&lt;parameter property=”p0″ jdbcType=” INTEGER” javaType=”string” mode=”OUT”/&gt; <br /> <br />&lt;parameter property=”p1″ jdbcType=”VARCHAR” javaType=”string” mode=”IN”/&gt; <br /> <br />&lt;parameter property=”p2″ jdbcType=”INTEGER” javaType=”int” mode=”IN”/&gt; <br /> <br />&lt;parameter property=”p3″ jdbcType=”ORACLECURSOR” <br /> <br />javaType=”java.sql.ResultSet” mode=”OUT” resultMap=”resultMap” /&gt; <br /> <br />&lt;/parameterMap&gt; <br /> <br />&lt;procedure id=”statementId” parameterMap=”functionPramsMap”&gt; <br /> <br />{?=call packageName.functionName(?,?,?)} <br /> <br />&lt;/procedure&gt; <br /> <br />这里,关键注意的是p3参数,由于使用的是oracle数据库驱动,所以用jdbcType=”ORACLECURSOR”表示oracle游标,同时由于是游标,所以javaType=”java.sql.ResultSet”。最后必须要给参数p3配置好resultMap属性,以说明游标返回的结果集映射方式,不配置此属性,在代码里来访问结果集是不行的。此时,在Java代码里调用的样式如下: <br /> <br />HashMap&lt;String, Object&gt; params = new HashMap&lt;String, Object&gt;(); <br /> <br />params.put(”p1″, p1); <br /> <br />params.put(”p2″, p2); <br /> <br />sqlMapClient.queryForObject(”statementId”, params); <br /> <br />List&lt;ClassA&gt; list = (List&lt;ClassA&gt;) params.get(”p3″); <br /> <br />if (list != null &amp;&amp; list.size() &gt; 0) { <br /> <br />return userList.get(0); <br /> <br />} <br /> <br />return null; <br /> <br />第四类,有复杂的参数类型的存储过程: <br /> <br />(1)、对于BLOB或者CLOB,在POJO里的属性都定义为byte[]类型,iBatis配置里跟普通类型参数一样处理; <br /> <br />(2)、实现TypeHandler来自定义类型处理器用户处理复杂的字段; <br /> <br />(3)、对于数据库自定义的数据类型,首先要定义实现了java.sql.SQLData的类Class TypeA。实现getSQLTypeName方法,返回值为数据库的自定义类型名。配置文件里parameter标签的属性如:jdbcType=”TypeB” JavaType=”TypeA”,同时还要写TypeHandlerCallback用于处理jdbcType=”TypeB”的类型。 <br /></div> <br />我现在需要第四类的例子,如何构建ARRAY

匿名类中如何传值出来呢?

先来看代码: [code="java"]@Controller public class T1 implements MethodInterceptor { private Object obj; @Autowired private SimpleAsyncTaskExecutor task; public Object invoke(final MethodInvocation mi) throws Throwable { task.execute(new Runnable(){ public void run() { try { obj = mi.proceed(); // 这里我需要把执行的结果传入到T1类,我定义了一个Object对象,可是值是传不出来的 } catch (Throwable e) { e.printStackTrace(); } } }); return obj; // 刚才传的值这里要用 } }[/code] MethodInterceptor是我实现了spring中一个接口,关于aop的。 SimpleAsyncTaskExecutor是spring中的一个类,用于实现对并发的总数做限制的。 上面我写的有注释,内部类执行的值怎么才能传出来给T1类使用呢? [b]问题补充:[/b] @RednaxelaFX,非常感谢,按照你的方法,问题解决了: [code="java"]@Controller public class T1 implements MethodInterceptor { @Autowired private SimpleAsyncTaskExecutor executor; public Object invoke(final MethodInvocation mi) throws Throwable { FutureTask<Object> task = new FutureTask<Object>(new Callable<Object>() { public Object call() { try { return mi.proceed(); } catch (Throwable e) { return null; } } }); executor.execute(task); return task.get(); } }[/code]

一个关于Spring AOP的问题

先说一下情况:小弟现正用Spring AOP实现日志记录功能,上面交待Web层,Service层,Dao层都要记录,所以打算在Web层只记一下用户请求的情况,也就是说用户请求哪个Action时,记录一下操作步骤,Service层记录方法调用时的参数及返回值以及异常情况,Dao层上面交待要记录最终SQL(这个小弟现在还不知道怎么实现)。 在此只说一下Web层的日志记录,其它的略过了。我是这样的,先定义一个名为ActionName的annotation,有一个value属性,这个value属性的值就表示该Action方法的功能说明。然后我定义一个Pointcut匹配该annotation。到这里一切都没问题,能正常拦截并代理Action方法,但是前提是必须使用CGLIB! 我记得好像Spring能自动地判断目标方法并决定是使用动态代理还是CGLIB代理实现的。但是我在配置文件中如果不强制使用CGLIB代理则程序运行报错呢? 下面是我的代码: LogHandler类 package com.delver.bms.log.util; import java.lang.reflect.Method; import java.sql.Timestamp; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import com.delver.bms.exception.BusinessException; import com.delver.bms.log.annotation.ActionName; import com.delver.bms.log.annotation.TaskScheduling; import com.delver.bms.log.dao.IAppLogDao; import com.delver.bms.log.to.AppLog; import com.delver.bms.util.AutoID32; import com.delver.bms.util.TenantUtil; import com.ibm.crl.mmt.datamodel.MTUtilFactory; import com.ibm.crl.mmt.exception.MTException; /** * 日志记录切面类 * * @author yue.ch * */ @Aspect public class LogHandler { private IAppLogDao appLogDao; public void setAppLogDao(IAppLogDao appLogDao) { this.appLogDao = appLogDao; } /** * 定义切入点,匹配使用@ActionName注解的方法 * @param actionName @ActionName注解value值(功能解释) */ @Pointcut("@annotation(actionName)") public void annotationMethod(ActionName actionName) { } /** * 定义切入点,匹配使用@TaskScheduling注解的方法 * @param taskScheduling @TashScheduling注解value值(功能解释) */ @Pointcut("@annotation(taskScheduling)") public void annotationTaskMethod(TaskScheduling taskScheduling) { } /** * 定义切入点,匹配Service层方法 */ @Pointcut("execution(* com.delver.bms.*.service.*.*(..))") public void serviceMethod() { } /** * 定义切入点,排除UserDetailsServiceImpl类 */ @Pointcut("!within(com.delver.bms.identity.service.UserDetailsServiceImpl)") public void identityServiceMethod(){} /** * 定义切入点,排除日志记录功能模块的Service层方法 */ @Pointcut("!execution(* com.delver.bms.log.service.*.*(..))") public void logServiceMethod(){} /** * 定义切入点,排除日志记录功能模块的Dao层方法 */ @Pointcut("!execution(* com.delver.bms.log.dao.*.*(..))") public void logDaoMethod(){} /** * 定义切入点,匹配Dao层方法 */ @Pointcut("execution(* com.delver.bms.*.dao.*.*(..))") public void daoMethod(){} /** * 系统任务调度方法前置通知(记录任务调度方法功能说明及执行) * * @param joinPoint * @param taskScheduling */ @Around("annotationTaskMethod(taskScheduling)") public void aroundTaskScheduling(ProceedingJoinPoint joinPoint, TaskScheduling taskScheduling) throws Throwable { System.out.println("ddd"); } /** * Action方法前置通知(记录Action方法功能说明) * * @param joinPoint * @param actionName */ @Before("annotationMethod(actionName)") public void beforeActionLog(JoinPoint joinPoint, ActionName actionName) { System.out.println("ddd"); } /** * Service方法环绕通知 * * @param joinPoint * @return */ @Around("serviceMethod() && identityServiceMethod() && logServiceMethod()") public Object aroundServiceLog(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("ddd"); } /** * Dao方法环绕通知(记录SQL) * * @param jointPoint * @return */ @Around("daoMethod() && logDaoMethod()") public Object aroundDaoLog(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("ddd"); } 配置文件: <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <aop:aspectj-autoproxy proxy-target-class="true"/> <bean id="appLogDao" class="com.delver.bms.log.dao.AppLogDaoiBatis"> <property name="sqlMapClient" ref="sqlMapClient" /> </bean> <bean id="appLogManager" class="com.delver.bms.log.service.AppLogManagerImpl"> <property name="appLogDao" ref="appLogDao" /> </bean> <bean id="appLogInfo" class="com.delver.bms.log.web.AppLogInfo" scope="prototype"> <property name="appLogManager" ref="appLogManager" /> <property name="tenantManager" ref="tenantManager" /> </bean> <!-- 系统日志处理类 --> <bean id="appLogHandler" class="com.delver.bms.log.util.LogHandler"> <property name="appLogDao" ref="appLogDao" /> </bean> </beans> 异常信息: java.lang.NoSuchMethodException: $Proxy51.visit() at java.lang.Class.getMethod(Unknown Source) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:55) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:41) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123) 下面略。。。 [b]问题补充:[/b] 我希望的是Service层,Dao层用动态代理,web层用CGLIB代理,是不是不能实现?我试过配多个<aop:config>,但是只要其中有一个配置了proxy-target-class="true",就全都用CGLIB实现了,网上搜了下,貌似确实是这样的。还有,CGLIB代理与动态代理在运行期性能上有区别吗?

从webservice获取成功的xml如何转成对象

如,webservice定义return System.Data.DataTable对象, 在浏览器端获取到xmlhttp对象,//xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") 接收到 xmlhttp.responseText 为 ----------------- <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetDt2Response xmlns="http://tempuri.org/"> <GetDt2Result> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="rr1" msdata:UseCurrentLocale="true"> <xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="rr1"><xs:complexType><xs:sequence> <xs:element name="sdfs1" type="xs:string" minOccurs="0" /><xs:element name="sdfs2" type="xs:string" minOccurs="0" /> </xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <DocumentElement xmlns=""> <rr1 diffgr:id="rr11" msdata:rowOrder="0" diffgr:hasChanges="inserted"> <sdfs1>b1</sdfs1><sdfs2>45 2</sdfs2></rr1> <rr1 diffgr:id="rr12" msdata:rowOrder="1" diffgr:hasChanges="inserted"><sdfs1>b2</sdfs1> <sdfs2>60 name22</sdfs2></rr1> </DocumentElement> </diffgr:diffgram> </GetDt2Result> </GetDt2Response> </soap:Body> </soap:Envelope> ---------------- 说明返回结果为,函数为 GetDt2 的 DataTable对象,有两行(b1,b2) 两列(sdfs1,sdfs2) 表名为rr1, 但它在浏览器端以xml形式展示,或者 xmlhttp.responseText 或者 xmlhttp.responseXML 或者xmlhttp对象,,问题就是,怎么才能将 webservice返回的xml转成对象, ps: 记得ajax的返回结果是可以直接变成对象的, 而webservice允许 WebMethod 定义为返回对象类型,却在端获取只能是xml,还是说开放的接口有限制,要自己写转换函数??

学Python后到底能干什么?网友:我太难了

感觉全世界营销文都在推Python,但是找不到工作的话,又有哪个机构会站出来给我推荐工作? 笔者冷静分析多方数据,想跟大家说:关于超越老牌霸主Java,过去几年间Python一直都被寄予厚望。但是事实是虽然上升趋势,但是国内环境下,一时间是无法马上就超越Java的,也可以换句话说:超越Java只是时间问题罢。 太嚣张了会Python的人!找工作拿高薪这么简单? https://edu....

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java校招入职华为,半年后我跑路了

何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

@程序员:GitHub这个项目快薅羊毛

今天下午在朋友圈看到很多人都在发github的羊毛,一时没明白是怎么回事。 后来上百度搜索了一下,原来真有这回事,毕竟资源主义的羊毛不少啊,1000刀刷爆了朋友圈!不知道你们的朋友圈有没有看到类似的消息。 这到底是啥情况? 微软开发者平台GitHub 的一个区块链项目 Handshake ,搞了一个招募新会员的活动,面向GitHub 上前 25万名开发者派送 4,246.99 HNS币,大约价...

用python打开电脑摄像头,并把图像传回qq邮箱【Pyinstaller打包】

前言: 如何悄悄的打开朋友的摄像头,看看她最近过的怎么样,嘿嘿!这次让我带你们来实现这个功能。 注: 这个程序仅限在朋友之间开玩笑,别去搞什么违法的事情哦。 代码 发送邮件 使用python内置的email模块即可完成。导入相应的代码封装为一个send函数,顺便导入需要导入的包 注: 下面的代码有三处要修改的地方,两处写的qq邮箱地址,还有一处写的qq邮箱授权码,不知道qq邮箱授权码的可以去百度一...

做了5年运维,靠着这份监控知识体系,我从3K变成了40K

从来没讲过运维,因为我觉得运维这种东西不需要太多的知识面,然后我一个做了运维朋友告诉我大错特错,他就是从3K的运维一步步到40K的,甚至笑着说:我现在感觉自己什么都能做。 既然讲,就讲最重要的吧。 监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。目前业界有很多不错的开源产品可供选择。选择一款开源的监控系统,是一个省时省力、效率最高的方...

计算机网络——浅析网络层

一、前言 注意,关于ipv4和ipv6,ipv4是ip协议第4版本,也表示这个版本的ip一共4个字节,同样地,ipv6是ip协议第6版本,也表示这个版本的ip一共6个字节。 关于网络层使用路由器实现互联:在计算机网络的分层结构中,不同层有不同的中继设备: 计算机网络层 中继设备/中继系统 物理层 中继器、集线器Hub 数据链路层 网桥或交换机(交换机是多端口网桥,两者本质上是一个东西) 网络层 路...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

立即提问
相关内容推荐