使用Hessian來進行遠程調用

Hessian是一個輕量級的remoting onhttp工具,使用簡單的方法提供了RMI的功能. Spring也對Hessian進行了支持,以下就用一個簡單的例子來說明下如何在Spring中使用Hessian吧。

 

Hessian的服務端配置:

在服務端的某個applicationContext-*.xml(命名不限)創建HessianServiceExporter來暴露你的服務接口(接口以及接口實現類略):

 

<!-- RemoteService的Hessian Exporter -->
	<bean name="remoteServiceExporter" class="org.springframework.remoting.caucho.HessianServiceExporter">
		<property name="service" ref="xxxRemoteService" />
		<property name="serviceInterface" value="com.nineclient.talk.service.xxxRemoteService" />

	</bean>

	<!-- 服務接口的實現Bean定義 -->
	<bean id="xxxRemoteService" class="com.nineclient.talk.service.impl.JtalkRemoteServiceImpl" />

 在web.xml中爲Exporter定義一個相應的Servlet,目的是爲了將這個Exporter映射到一個url地址中,但這個Servlet的名稱需和這個Exporter bean的name一樣!

 

 

<servlet>
    <servlet-name>remoteServiceExporter</servlet-name>
    <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>remoteServiceExporter</servlet-name>
    <url-pattern>/remoting/xxxRemoteservice</url-pattern>
  </servlet-mapping>
   <servlet>

 

 

Hessian客戶端的配置:

1)把服務端的接口(實現類不需要)打包成jar給客戶端

2)在一個配置文件如config.properties中,配置遠程服務的地址,如:

HESSIAN_REMOTESERVICE_URL=http://ip:port/serverName/remoting/xxxRemoteservice

2)不妨寫一個工具類來獲得遠程服務的調用地址

public class RemoteHessianUtil {
	public static HessianProxyFactory factory;
	public static String url;
	static {
		factory = new HessianProxyFactory();
		factory.setOverloadEnabled(true);
		url = PropertyReader.getProperty("HESSIAN_REMOTESERVICE_URL");//讀取配置文件屬性並把這些屬性放入map中過程略。。
	}
	
	public static Object create(Class<?> api, String urlName) {
		try {
			return factory.create(api, urlName);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	//獲取遠程調用服務的方法
	public static xxxRemoteService getRemoteService() {
		return (xxxRemoteService) RemoteHessianUtil.create(xxxRemoteService.class, url);
	}
	
}

 做完這些,依次啓動服務端和客戶端,就可以做簡單的遠程調用了。當服務端接口更新,需要重新打包給客戶端。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章