1. 程式人生 > >解決Hessian呼叫過載方法報錯問題

解決Hessian呼叫過載方法報錯問題

使用Hessian呼叫過載方法報異常問題,例如:

String SayHello();
	
String SayHello(String name);

客戶端呼叫上面的方法:

IHello hello = (IHello) hessianProxyFactory.create(IHello.class, url);
 String result = hello.SayHello();
 log.info("ClientTest1 返回結果:"+result);

 result = hello.SayHello("tom");
 log.info("返回結果:"+result);

呼叫第一個方法是ok,呼叫第二個方法後會報異常:

org.springframework.web.util.NestedServletException: Hessian skeleton invocation failed; nested exception is com.caucho.hessian.io.HessianProtocolException: 
   .......
 Caused by: com.caucho.hessian.io.HessianProtocolException: SayHello: expected end of call ('z') at 0x53 (S).  
   .....
 com.caucho.hessian.client.HessianRuntimeException: com.caucho.hessian.io.HessianProtocolException:
  .......

解決方法:

方法I、在呼叫方法前加上下面的設定 //設定是否允許過載方法(true:是,會以方法名和引數型別來唯一確定要遠端呼叫的方法,預設為false 以方法名來確定遠端呼叫的方法,以第一個方法名為準 )  hessianProxyFactory.setOverloadEnabled(true); 方法II、在客戶端的配置檔案中加入: <!-- 解決hessian 方法過載問題 -->    <property name="overloadEnabled" value="true"></property>