研究Spring集成的hessian-rpc在不同版本的JVM之间是否支持传递复杂对象以及是否支持引用参数传递。
1.核心对象People、Person、Address、Boyfriend1、Boyfriend2。通过Hessian传输的对象都要实现java.io.Serializable接口。
2.接口PeopleService 接口实现PeopleServiceImpl
PeopleService.java
public interface PeopleService {
public People getPeopleByName(String name);
}
PeopleServiceImpl.java
public class PeopleServiceImpl implements PeopleService {
private People people;
public void setPeople(People people) {
this.people = people;
}
public People getPeopleByName(String name) {
return people;
}
}
3.核心配置文件
applicationContext-hessianrpc-hessian.xml
<bean id="peopleServiceRemote" name="/peopleServiceRemote"
class="org.springframework.remoting.caucho.HessianServiceExporter">
<property name="service" ref="peopleService"></property>
<property name="serviceInterface">
<value>com.mangocity.hessianrpc.service.PeopleService</value>
</property>
</bean>
applicationContext-hessianrpc-services.xml
<bean id="peopleService" class="com.mangocity.hessianrpc.service.impl.PeopleServiceImpl">
<property name="people" ref="people">
</property>
</bean>
<bean id="people" class="com.mangocity.hessianrpc.pojo.People" >
<property name="name"> <value>fenglin</value></property>
<property name="boyfriend" ref="boyfriend"></property>
<property name="boyfriend1" ref="boyfriend1"></property>
<property name="boyfriends">
<list>
<ref bean="boyfriend"/>
<ref bean="boyfriend1"/>
</list>
</property>
<property name="boyfriendMap">
<map>
<entry>
<key><value>fengluan</value></key>
<ref bean="boyfriend"/>
</entry>
<entry>
<key><value>fengluan1</value></key>
<ref bean="boyfriend1"/>
</entry>
</map>
</property>
<property name="boyfriendSet">
<set>
<ref bean="boyfriend"/>
<ref bean="boyfriend1"/>
</set>
</property>
</bean>
<bean id="boyfriend" class="com.mangocity.hessianrpc.pojo.Boyfriend">
<property name="address">
<ref bean="address"/>
</property>
</bean>
<bean id="boyfriend1" class="com.mangocity.hessianrpc.pojo.Boyfriend1">
<property name="address">
<ref bean="address"/>
</property>
</bean>
<bean id="address" class="com.mangocity.hessianrpc.pojo.Address">
<property name="zipCode"><value>518000</value>
</property>
<property name="url"><value>深圳市芒果网有限公司</value>
</property>
</bean>
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/applicationContext-hessianrpc-beans.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>Hessian</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/applicationContext-hessianrpc-hessian.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Hessian</servlet-name>
<url-pattern>/hessian/*</url-pattern>
</servlet-mapping>
4.hessian访问客户端
HessianRPCClient.java
public class HessianRPCClient {
String url;
/**
*
*/
public HessianRPCClient(String url) {
this.url = url;
}
public People getPeopleFromPeopleService(String name){
HessianProxyFactory factory = new HessianProxyFactory();
try {
PeopleService proxy = (PeopleService)factory.create(PeopleService.class, url);
return proxy.getPeopleByName(name);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return new People();
}
/**
* @param args
*/
public static void main(String[] args) {
HessianRPCClient client = new HessianRPCClient("http://127.0.0.1:8088/hessianRPC/hessian/peopleServiceRemote");
People people = client.getPeopleFromPeopleService("people");
System.out.println(people.getName());
System.out.println(people.getBoyfriend().getAddress() == people.getBoyfriend1().getAddress());
System.out.println(people.getBoyfriend() == people.getBoyfriends().get(0));
System.out.println(people.getBoyfriendMap().get("fengluan") == people.getBoyfriendSet().iterator().next());
System.out.println(people.getBoyfriend() == people.getBoyfriendMap().get("fengluan"));
}
}
6.将项目发布到tomcat上,启动客户访问,测试结果:
Hessian-rpc支持在不同的JVM版本之间传递复杂对象,并且还支持引用参数传递。速度的话,在传输小对象比RMI还快,传输大对象则不如RMI。
分享到:
相关推荐
下面将详细讲解Hessian与Spring集成的关键知识点。 首先,理解Hessian是什么至关重要。Hessian是一个二进制的Web服务协议,由Caucho公司开发。它提供了轻量级、高效的RPC(Remote Procedure Call)框架,使得Java...
而Spring框架如何与Hessian进行集成,包括服务注册、请求处理和代理创建等,也值得研究。 **工具支持** 为了方便调试和测试,可以使用一些工具,如Hessian Proxy Factory(一个命令行工具)或者Hessian Browser(一...
Spring集成Hessian的过程主要包括以下几个步骤: 1. **定义服务接口**:首先,我们需要创建一个Java接口,包含服务提供者需要暴露给消费者的方法。例如,我们可以定义一个名为`UserService`的接口,包含用户查询、...
在将Hessian与Spring进行整合时,我们需要确保引入了正确的jar包。这些jar包通常包括以下几个核心组件: 1. **Hessian库**:这是实现Hessian RPC的基础,包含了序列化和反序列化的类以及远程调用的相关接口。主要的...
当我们将Hessian与Spring进行整合时,主要目标是利用Spring的依赖注入(Dependency Injection, DI)和组件管理能力来简化Hessian服务的创建和管理。以下是一些关键知识点: 1. **Spring核心模块**(spring-core-...
8. **测试与监控**:为了确保服务的稳定性和可靠性,我们需要编写单元测试和集成测试,同时可以借助Spring Boot Actuator等工具,监控服务的运行状态和性能指标。 综上所述,"Hessian与Spring整合"的核心是利用...
综上所述,将Hessian服务应用于Spring Web Flow项目,能够有效提升前端与后端之间的通信效率,同时利用SWF的强大流程管理能力,为用户提供顺畅的交互体验。然而,这也需要开发者对Spring、Spring Web Flow以及...
总之,Spring集成Hessian插件并改用自动注入可以极大简化服务的管理和调用。通过合理的配置和注解,我们可以实现服务的自动发现和依赖注入,提升代码的灵活性和可维护性。同时,理解并熟练掌握这一技术对于提升开发...
【标题】"spring、hessian通过tomcat的简单环境应用源代码"涉及到的是在Java Web开发中使用Spring框架和Hessian服务序列化技术在Tomcat服务器上的集成与应用。Spring是一个广泛使用的开源Java应用程序框架,它提供了...
**Spring AOP与Hessian的结合** 在Spring中,Hessian通常用来实现远程服务调用。通过AOP,我们可以对Hessian服务进行拦截,添加如日志、性能监控等额外功能。以下是一个基本的步骤: 1. **创建Hessian服务**:首先...
Spring的核心特性包括依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP),它还支持数据库事务管理、JMS、JMX等功能,并且可以与其他Java EE技术如JPA、JSF等无缝集成。...
### Hessian与Spring整合知识点详解 #### 一、Hessian简介 ...通过本文的介绍,相信读者已经掌握了如何使用Hessian与Spring集成的基本步骤和技术要点。在实际项目开发中,还需要根据具体需求进行更深入的研究和实践。
Spring框架提供了强大的依赖注入和AOP(面向切面编程)能力,可以帮助开发者轻松地集成各种服务,包括Hessian。在Spring中整合Hessian,首先需要在Spring配置文件中定义Hessian的服务和客户端bean。 1. **Hessian...
在本文中,我们将通过实例代码来介绍如何将 Hessian 集成到 Spring Boot 应用程序中。Hessian 是一个基于 RPC(Remote Procedure Call,远程过程调用)的轻量级框架,它提供了一个高效、灵活和可扩展的方式来实现...
2. **集成与兼容**:Hessian可以与Spring框架无缝集成,通过配置Spring的Bean,轻松实现服务的发布和消费。 **五、源码分析** 对于深入理解Hessian的工作机制,阅读和分析源码是必不可少的。Caucho Technology提供...
这个压缩包文件包含了关于Hessian的入门实例以及如何将其与Spring框架整合的教程。 一、Hessian入门实例 Hessian的入门实例主要展示了如何创建一个简单的服务提供者和消费者。首先,我们需要定义一个服务接口,例如...
在Spring框架中,Hessian服务可以被方便地集成,使得分布式应用的开发变得更加简单。 在Spring中使用Hessian主要涉及以下几个关键点: 1. **服务端配置**: - 首先,你需要创建一个服务接口和服务实现类。例如,...
Hessian与Java、C++、Python等语言兼容,可以无缝地集成到Spring框架中,实现远程方法调用。 **Maven** Maven是一个项目管理和综合工具,主要用于Java项目。它通过定义项目对象模型(POM)来管理项目的构建、依赖...
标题 "Hessian3.1与Spring2.5的整合" 涉及的是在Java开发环境中,如何将Hessian远程调用服务与Spring框架相结合,以便实现高效、轻量级的分布式服务通信。Hessian是一种二进制协议,它允许远程方法调用(RMI)在HTTP上...