android 通过 Hessian 与 j2ee 服务端交互

最近项目用到,记录一下。

    首先,让j2ee那帮兄弟把服务端Hessian实现的接口类以及这个接口类公共方法所传入、返回的那些需要序列化的类给自己,copy也行,打成jar包也行。

   

    接口相关的类的包名和类名也必须得和服务端的相同。

    剩下就是客户端加入 hessdroid这个包了,android的一个第三方Hessian库。

    调用很简单,下面是示例代码:

HessianProxyFactory factory=new HessianProxyFactory();

//如果需要用户验证的话
//factory.setUser("uname");
//factory.setPassword("xxx");


factory.setReadTimeout(5000);

//这个就是和服务端使用的相同的接口,从j2ee兄弟那靠过来,或者他们给的jar包也行,只要包名类名相同。
XxxxInterfaceService ifs=factory.create(XxxxInterfaceService.class,url,getClass().getClassLoader());
		



//这两个方法是设置使用的hessian协议版本是否为第2版,如果不是的话,就填false	
//factory.setHessian2Reply(false);
//factory.setHessian2Request(false);

//现在可以直接调用接口中的方法了,就和本地一样			
Response r=ifs.getSomthing("somthing");

很简单,比webservice方便多了。

这里顺便扯一下远程RPC

         这年头咱也得敢潮流,只要是个android客户端咱都要说是云端,不是么?

         哪个不是与服务器交互啊,至于怎么交互,我以前是倾向于json的,他比webservice之类的soap强多了,作为云端开发者,你敢让用户那可怜的gprs流量来传输xml这种形式大于实质的数据么?

         首先是webservice在android上面实现很麻烦,ksoap2用起来真的很麻烦,其次呢,谁能在sdk下找到jdk默认javax里的webservice包?谷歌都已经把它扔了,用json代替了。

         Hessian呢,确实是个不错的选择,hessdroid在客户端很好配置,几行代码搞定,传输的也都是序列化过的二进制数据,自己动手抓抓http包,各种远程rpc技术的优劣在心里就能有个底了。

原文地址:https://www.cnblogs.com/hangxin1940/p/2248640.html