Hessian(纯)的应用与研究

研究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。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值