zoukankan      html  css  js  c++  java
  • 如何在Spring中集成Hessian框架

    一、简介 
         Hessian是一个由Caucho Technology开发的轻量级二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。下面以hessian-3.0.20版本为例演示如何将Hessian整合到Spring中。 

    二、配置详解 
         1、在web.xml中的配置

    Xml代码  收藏代码
    1. <context-param>  
    2.     <param-name>contextConfigLocation</param-name>  
    3.     <param-value>  
    4.         /WEB-INF/config/applicationContext.xml,  
    5.         /WEB-INF/Hessian-servlet.xml  
    6.     </param-value>  
    7. </context-param>  
    8.           
    9. <servlet>  
    10.     <servlet-name>Hessian</servlet-name>  
    11.     <servlet-class>  
    12.         org.springframework.web.servlet.DispatcherServlet  
    13.     </servlet-class>  
    14.     <load-on-startup>1</load-on-startup>  
    15. </servlet>  
    16.           
    17. <servlet-mapping>  
    18.     <servlet-name>Hessian</servlet-name>  
    19.     <url-pattern>/hessian/*</url-pattern>  
    20. </servlet-mapping>  


           1)Hessian要求远程服务通过Servlet暴露出来,所以我们使用Spring的DispatcherServlet来暴露我们的服务。 
            2)我们必须在WEB-INF目录下创建一个文件名格式为 [Servlet Name]-servlet.xml 的配置文件,由于我们设定servlet-name为Hessian,所以我们在这里创建一个名为Hessian-servlet.xml的文件。 

        2、Hessian-servlet.xml文件的配置

    Xml代码  收藏代码
    1. <!-- 业务类 -->  
    2. <bean id="hessianService" class="com.cjm.webservice.hessian.HessianServiceImpl"/>  
    3.           
    4. <!-- 远程服务 -->  
    5. <bean name="/hessianService" class="org.springframework.remoting.caucho.HessianServiceExporter">  
    6.     <property name="service" ref="hessianService"/>  
    7.     <property name="serviceInterface">  
    8.         <value>  
    9.             com.cjm.webservice.hessian.HessianService  
    10.         </value>  
    11.     </property>  
    12. </bean>  


            1)实际业务类是通过Spring的HessianServiceExporter类来暴露给客户端的。 
            2)service:指定服务对应的业务类。 
            3)serviceInterface:指定业务类实现哪个接口。Spring推荐采用面向接口编程,因此,Hessian服务建议通过接口暴露。 
            4)Hessian的远程服务名为/hessianService。笔者使用的web服务器是Tomcat-5.5.23,端口是8888,web应用名为spring2,则远程服务的URL为:http://localhost:8888/spring2/hessian/hessianService。 

        3、业务类源代码

    Java代码  收藏代码
    1. //接口类:  
    2. public interface HessianService {  
    3.     public String sayHello(String username);  
    4.     public HessianModel getHessianModel(String username, String password);  
    5. }  
    6.           
    7. //实现类:  
    8. public class HessianServiceImpl implements HessianService {  
    9.     public String sayHello(String username){  
    10.         return "Hello " + username;  
    11.     }   
    12.   
    13.     public HessianModel getHessianModel(String username, String password) {  
    14.         return new HessianModel(username, password);  
    15.     }  
    16. }  
    17.           
    18. //领域模型类:  
    19. public class HessianModel implements Serializable{  
    20.     private String username;  
    21.     private String password;  
    22.                   
    23.     public HessianModel(String username, String password){  
    24.         this.username = username;  
    25.         this.password = password;  
    26.     }  
    27.     ……  
    28. }  



        4、客户端调用服务范例 
             1)在Jsp页面中调用服务

    Java代码  收藏代码
    1. String url = "http://localhost:8888/spring2/hessian/hessianService";  
    2. HessianProxyFactory factory = new HessianProxyFactory();  
    3. HessianService hessianServer =   
    4.             (HessianService)factory.create(HessianService.class, url);  
    5. String ret = hessianServer.sayHello("Raymond.chen");  
    6. out.print(ret);  
    7.           
    8. HessianModel model = hessianServer.getHessianModel("uid", "pwd");  
    9. out.print("username: " + model.getUsername() + "<br>");  


                 A)结果显示:Hello Raymond.chen 
                 B)客户端程序必须引用hessian-3.0.20.jar文件和远程服务对应的接口类。 
                 C)当调用的远程服务方法返回一个自定义类时,该自定义类必须实现Serializable接口。 

           2)在Spring环境中调用服务

    Xml代码  收藏代码
    1. <bean id="testHessianService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">  
    2.     <property name="serviceUrl" value="http://localhost:8888/spring2/hessian/hessianService"/>  
    3.     <property name="serviceInterface" value="com.cjm.webservice.hessian.HessianService"/>  
    4. </bean>  
    5.               
    6. <!- Struts2中调用服务 -->  
    7. <bean id="orgAction" class="com.cjm.web.action.OrganizationAction" parent="baseAction">  
    8.     <property name="organizationService" ref="organizationService"/>  
    9.     <property name="testHessianService" ref="testHessianService"/>  
    10. </bean>  



        OrganizationAction.java部分源代码:

    Java代码  收藏代码
    1. private HessianService testHessianService;  
    2.               
    3. HessianModel model = testHessianService.getHessianModel("uid", "pwd");  
    4. System.out.println("username: " + model.getUsername());  


            A)使用HessianProxyFactoryBean来连接服务。 
            B)serviceUrl:远程服务的URL。 
            C)serviceInterface:服务对应的接口类。

  • 相关阅读:
    机器学习知识总结---5、生成对抗网络的难点是什么
    博弈论---11、博弈论总结
    博弈论---10、零和博弈、正和博弈
    SSH Protocol
    log4net MaxSizeRollBackups
    Initializing a static field vs. returning a value in static property get?
    NLog Internal Logging
    NLog WriteToTargets method
    NLog rolling file
    Custom date and time format strings
  • 原文地址:https://www.cnblogs.com/chenying99/p/2555446.html
Copyright © 2011-2022 走看看