首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring 整合 Hessian 輕量級遠程調用實戰

     編輯:Java 相關知識

Hessian 是一種二進制 HTTP 遠程調用協議,配合 Spring 的 HessianServiceExporter 與 HessianProxyFactoryBean,幾行配置即可發布/調用服務,比傳統 Web Service 輕量得多。本文給出服務端與客戶端完整配置示例。

服務端配置

web.xml

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/config/applicationContext.xml, /WEB-INF/Hessian-servlet.xml</param-value>
</context-param>
<servlet>
  <servlet-name>Hessian</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>Hessian</servlet-name>
  <url-pattern>/hessian/*</url-pattern>
</servlet-mapping>

Hessian-servlet.xml

<!-- 業務實現 -->
<bean id="hessianService" class="com.cjm.webservice.hessian.HessianServiceImpl"/>
<!-- 導出為遠程服務 -->
<bean name="/hessianService" class="org.springframework.remoting.caucho.HessianServiceExporter">
  <property name="service" ref="hessianService"/>
  <property name="serviceInterface" value="com.cjm.webservice.hessian.HessianService"/>
</bean>

客戶端調用

原生 API

String url = "https://localhost:8888/spring2/hessian/hessianService";
HessianProxyFactory factory = new HessianProxyFactory();
HessianService service = (HessianService) factory.create(HessianService.class, url);
String ret = service.sayHello("Raymond.chen");

Spring 方式(推薦)

<bean id="hessianService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
  <property name="serviceUrl" value="https://localhost:8888/spring2/hessian/hessianService"/>
  <property name="serviceInterface" value="com.weijy.webservice.hessian.HessianService"/>
</bean>

注入後像普通 Bean 一樣使用:hessianService.sayHello(...)。

關鍵優勢

  • 二進制協議:體積小、解析快,適合高頻內部調用。
  • 無需 IDL:直接共享 Java 接口,開發效率高。
  • Spring 無縫整合:Exporter/ProxyFactoryBean 封裝所有底層細節。
  • 防火牆友好:走標準 HTTP/HTTPS 端口,穿透性強。

注意事項

  • 服務接口與實現類必須可序列化(參數/返回值實現 Serializable)。
  • 異常傳播:服務端拋出的棄查異常會自動序列化到客戶端重拋,受檢異常需在接口聲明。
  • 長連接優化:可配置 HttpClient 連接池(HessianProxyFactory.setHttpClient)復用連接。
  • 版本兼容:客戶端/服務端 Hessian 库版本建議保持一致。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved