`

Hessian(Spring集成的)的应用与研究

阅读更多
      研究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与Spring集成的关键知识点。 首先,理解Hessian是什么至关重要。Hessian是一个二进制的Web服务协议,由Caucho公司开发。它提供了轻量级、高效的RPC(Remote Procedure Call)框架,使得Java...

    Spring中集成Hessian的问题

    而Spring框架如何与Hessian进行集成,包括服务注册、请求处理和代理创建等,也值得研究。 **工具支持** 为了方便调试和测试,可以使用一些工具,如Hessian Proxy Factory(一个命令行工具)或者Hessian Browser(一...

    Spring集成Hessian案例

    Spring集成Hessian的过程主要包括以下几个步骤: 1. **定义服务接口**:首先,我们需要创建一个Java接口,包含服务提供者需要暴露给消费者的方法。例如,我们可以定义一个名为`UserService`的接口,包含用户查询、...

    Hessian与Spring整合需要jar包

    在将Hessian与Spring进行整合时,我们需要确保引入了正确的jar包。这些jar包通常包括以下几个核心组件: 1. **Hessian库**:这是实现Hessian RPC的基础,包含了序列化和反序列化的类以及远程调用的相关接口。主要的...

    hessian与spring整合的jar包

    当我们将Hessian与Spring进行整合时,主要目标是利用Spring的依赖注入(Dependency Injection, DI)和组件管理能力来简化Hessian服务的创建和管理。以下是一些关键知识点: 1. **Spring核心模块**(spring-core-...

    Hessian与spring整合

    8. **测试与监控**:为了确保服务的稳定性和可靠性,我们需要编写单元测试和集成测试,同时可以借助Spring Boot Actuator等工具,监控服务的运行状态和性能指标。 综上所述,"Hessian与Spring整合"的核心是利用...

    在 Spring Web Flow 项目中应用 Hessian 服务

    综上所述,将Hessian服务应用于Spring Web Flow项目,能够有效提升前端与后端之间的通信效率,同时利用SWF的强大流程管理能力,为用户提供顺畅的交互体验。然而,这也需要开发者对Spring、Spring Web Flow以及...

    spring集成Hessian插件配置改成自动注入。

    总之,Spring集成Hessian插件并改用自动注入可以极大简化服务的管理和调用。通过合理的配置和注解,我们可以实现服务的自动发现和依赖注入,提升代码的灵活性和可维护性。同时,理解并熟练掌握这一技术对于提升开发...

    spring、hessian通过tomcat的简单环境应用源代码

    【标题】"spring、hessian通过tomcat的简单环境应用源代码"涉及到的是在Java Web开发中使用Spring框架和Hessian服务序列化技术在Tomcat服务器上的集成与应用。Spring是一个广泛使用的开源Java应用程序框架,它提供了...

    spring aop hessian 基础demo 部署即可运行

    **Spring AOP与Hessian的结合** 在Spring中,Hessian通常用来实现远程服务调用。通过AOP,我们可以对Hessian服务进行拦截,添加如日志、性能监控等额外功能。以下是一个基本的步骤: 1. **创建Hessian服务**:首先...

    基于spring+hessian框架的webservice实例

    Spring的核心特性包括依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP),它还支持数据库事务管理、JMS、JMX等功能,并且可以与其他Java EE技术如JPA、JSF等无缝集成。...

    hessian+spring

    ### Hessian与Spring整合知识点详解 #### 一、Hessian简介 ...通过本文的介绍,相信读者已经掌握了如何使用Hessian与Spring集成的基本步骤和技术要点。在实际项目开发中,还需要根据具体需求进行更深入的研究和实践。

    spring整合hessian进行远程通讯

    Spring框架提供了强大的依赖注入和AOP(面向切面编程)能力,可以帮助开发者轻松地集成各种服务,包括Hessian。在Spring中整合Hessian,首先需要在Spring配置文件中定义Hessian的服务和客户端bean。 1. **Hessian...

    spring boot整合hessian的示例

    在本文中,我们将通过实例代码来介绍如何将 Hessian 集成到 Spring Boot 应用程序中。Hessian 是一个基于 RPC(Remote Procedure Call,远程过程调用)的轻量级框架,它提供了一个高效、灵活和可扩展的方式来实现...

    Hessian

    2. **集成与兼容**:Hessian可以与Spring框架无缝集成,通过配置Spring的Bean,轻松实现服务的发布和消费。 **五、源码分析** 对于深入理解Hessian的工作机制,阅读和分析源码是必不可少的。Caucho Technology提供...

    轻量级远程服务调用Hessian的入门实例和与Spring整合的实例.zip

    这个压缩包文件包含了关于Hessian的入门实例以及如何将其与Spring框架整合的教程。 一、Hessian入门实例 Hessian的入门实例主要展示了如何创建一个简单的服务提供者和消费者。首先,我们需要定义一个服务接口,例如...

    spring hessian的使用

    在Spring框架中,Hessian服务可以被方便地集成,使得分布式应用的开发变得更加简单。 在Spring中使用Hessian主要涉及以下几个关键点: 1. **服务端配置**: - 首先,你需要创建一个服务接口和服务实现类。例如,...

    spring mvc hessian maven简单实例

    Hessian与Java、C++、Python等语言兼容,可以无缝地集成到Spring框架中,实现远程方法调用。 **Maven** Maven是一个项目管理和综合工具,主要用于Java项目。它通过定义项目对象模型(POM)来管理项目的构建、依赖...

    hessian3.1和spring2.5的结合

    标题 "Hessian3.1与Spring2.5的整合" 涉及的是在Java开发环境中,如何将Hessian远程调用服务与Spring框架相结合,以便实现高效、轻量级的分布式服务通信。Hessian是一种二进制协议,它允许远程方法调用(RMI)在HTTP上...

Global site tag (gtag.js) - Google Analytics