如何在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:服務對應的接口類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM