使用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);
	}
	
}

 做完这些,依次启动服务端和客户端,就可以做简单的远程调用了。当服务端接口更新,需要重新打包给客户端。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值