分布式设计《hessian集成spring的应用》

      hessian是一个优秀的轻量级RMI框架,可以简单方便的实现分布式系统之间的web service。然而强大的spring也集成了hessian,封装了hessian客户端和服务端的实现。接下来简单说明下用spring实现hessian的应用。


【实现步骤】

1、编写服务端接口

package com.lvmama.hessian.service.impl;

public interface BaseService {

	public abstract void setStr(String str);

	public abstract void say();
}

2、编写服务端实现

package com.lvmama.hessian.service.impl;

public class BaseServiceImpl  implements BaseService {
	
	private String str;
	
	public void setStr(String str) {
		this.str = str;
	}


	public void say() {
		System.out.println(str);
	}

}


3、配置服务端web.xml

<servlet>
		<servlet-name>service</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
		<servlet-name>service</servlet-name>
		<url-pattern>/remoting/*</url-pattern>
  </servlet-mapping>


4、配置服务端web.xml同路径下的service-servlet.xml

<bean name="/baseService" class="org.springframework.remoting.caucho.HessianServiceExporter">
		<property name="service" ref="baseService" />
		<property name="serviceInterface" value="com.lvmama.hessian.service.impl.BaseService" />
	</bean> 
	
	<bean id="baseService" class="com.lvmama.hessian.service.impl.BaseServiceImpl" />

5、配置客户端applicationContext.xml

<bean id="baseService"
		class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
		<property name="serviceUrl"
			value="http://localhost:8080/hessian_service_implement/remoting/baseService" />
		<property name="serviceInterface"
			value="com.lvmama.hessian.service.impl.BaseService" />
		<property name="chunkedPost" value="false" />
		<property name="overloadEnabled" value="true" />
	</bean>


6、编写客户端测试类

package com.lvmama.hessian.client.test;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

import com.lvmama.hessian.service.impl.BaseService;

public class HessianSpringClientTestImpl {

	public static void main(String[] args) {
		
		Resource resource = new ClassPathResource("applicationContext.xml");
		
		BeanFactory factory = new XmlBeanFactory(resource);  
		
		BaseService service = (BaseService)factory.getBean("baseService");
		
		service.setStr("hi tony!");
		
		service.say();

	}

}

7、运行

hi tony!


【注意事项】
服务端web.xml中servlet-name为service,则同目录下服务端hessian的spring配置文件名就必须是service-servlet.xml,否则启动服务端时会报service-servlet.xml文件找不到,具体错误如下:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/service-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/service-servlet.xml]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值