研究Spring集成的hessian-rpc在不同版本的JVM之间是否支持传递复杂对象以及是否支持引用参数传递。
1.核心对象ComplexModel、Person、TestModel1、TestModel2、User。通过Hessian传输的对象都要实现java.io.Serializable接口。
2.接口PeopleService 接口实现PeopleServiceImpl
PeopleService.java
public interface PeopleService {
public String showMessage(String name);
public User getUser();
public ComplexModel getModel();
public void compareModel(ComplexModel model);
}
PeopleServiceImpl.java
public class PeopleServiceImpl implements PeopleService {
public User getUser() {
User result = new User();
result.setId("007");
result.setUserName("zhangsan");
result.setPassword("123456");
List<String> fs = new ArrayList<String>();
fs.add("sdsfdsfsd");
fs.add("sfsdfdsgsdf");
result.setFriends(fs);
return result;
}
public ComplexModel getModel() {
ComplexModel model = new ComplexModel();
User user = new User();
user.setId("007");
user.setUserName("zhangsan");
user.setPassword("123456");
List<String> fs = new ArrayList<String>();
fs.add("sdsfdsfsd");
fs.add("sfsdfdsgsdf");
user.setFriends(fs);
TestModel1 m1 = new TestModel1();
m1.setUser(user);
TestModel2 m2 = new TestModel2();
m2.setUser(user);
model.setModel1(m1);
model.setModel2(m2);
System.out.println("....." + (model.getModel1().getUser() == model.getModel2().getUser()));
return model;
}
public void compareModel(ComplexModel model) {
System.out.println("....." + (model.getModel1().getUser() == model.getModel2().getUser()));
}
public String showMessage(String name) {
return null;
}
}
3.web.xml配置文件
web.xml
<servlet>
<servlet-name>hessianService</servlet-name>
<servlet-class>
com.caucho.hessian.server.HessianServlet
</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>
com.mangocity.hessianrpc.service.impl.PeopleServiceImpl
</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>
com.mangocity.hessianrpc.service.PeopleService
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hessianService</servlet-name>
<url-pattern>/hessianService</url-pattern>
</servlet-mapping>
4.hessian访问客户端
HessianRPCClient.java
public class HessianRPCClient {
public static String url;
/**
*
*/
public HessianRPCClient(String url) {
this.url = url;
}
/**
* @param args
*/
public static void main(String[] args) {
for (int index = 0; index < 1000; index++) {
String url = "http://10.10.40.9/hessian/hessianService";
HessianProxyFactory factory = new HessianProxyFactory();
PeopleService service;
try {
service = (PeopleService) factory.create(PeopleService.class, url);
ComplexModel cm = service.getModel();
System.out.println(cm.getModel1().getUser() == cm.getModel2().getUser());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
}
6.将项目发布到tomcat上,启动客户访问,测试结果:
Hessian-rpc支持在不同的JVM版本之间传递复杂对象,并且还支持引用参数传递。速度的话,在传输小对象比RMI还快,传输大对象则不如RMI。
分享到:
相关推荐
基于加密技术的Hessian 远程调用的研究与实现
NULL 博文链接:https://zwustudy.iteye.com/blog/1611651
深度学习数值计算之Hessian矩阵与牛顿法
NULL 博文链接:https://fansofjava.iteye.com/blog/1028520
Hessian与spring整合的dome
Hessian矩阵以及在血管增强中的应用—OpenCV3和c++版本,我用的是vs2015,大家如果不是vs2015,可以直接把工程里面cpp和.h文件三个文件复制到自己新建的工程就可以使用。
一个简单实用的hessian框架的应用实例,用于实现分布式开发远程调用!
使用hessian进行web与android的通讯,相关jar包都有,导入运行即可。有问题博客留言。http://blog.csdn.net/tan313/article/details/49536891
hessian与spring整合的jar包
另外,Hessian与WEB服务器结合非常好,借助WEB服务器的成熟功能,在处理大量用户并发访问时会有很大优势,在资源分配,线程排队,异常处理等方面都可以由成熟的WEB服务器保证。而RMI本身并不提供多线程的服务器。...
Hessian多个版本下载,包括Hessian3.1.6,Hessian3.2.1,Hessian4.0.7
该案例有hessian java python,该案例有hessian java python,该案例有hessian java python
例子代码 博文链接:https://zmx.iteye.com/blog/1847571
同现有的Harris-Laplace、Hessian-Laplace等角点检测算法以及SIFT、 SURF目标识别算法进行比较,该角点检测算法具有更高的重复率、识别率和实时性,能够为机器视觉识别与定位的基础研究提供理论参考和应用实践。
hessian php与java通讯demo源码
hessian源码
hessian资料3hessian资料3hessian资料3hessian资料3hessian资料3
Hessian一般是通过Web应用来提供服务,因此非常类似于平时我们用的 WebService。只是它不使用SOAP协议,但相比webservice而言更简单、快捷。这个文件可以是hessian在spring项目和web项目的简单配置