spring-hessian简单示例

需要包:
spring 2.5.6
hessian 3.1.6
spring2.5.6不支持hessian4.0

web容器:
tomcat 6.0


1、定义接口;

public TBean implements Serializable
{
private String name;
private String code;
/**
*todo: get and set method here
*/
}

public interface IHello
{
TBean hello(TBean tb);
}

public class Hello implements IHello
{
/**todo:*/
}

2、通过spring mvc公布接口
spring配置文件中增加如下代码

<bean id="hello" class="Hello"/>

<bean name="helloHessian"
class="org.springframework.remoting.caucho.HessianServiceExporter">
<property name="service"><ref bean="hello"/></property>
<property name="serviceInterface">
<value>IHello</value>
</property>
</bean>


<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/helloHessian">helloHessian</prop>
</props>
</property>
</bean>

配置web.xml,增加如下代码:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:conf/spring/spring*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>remote</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:conf/spring/spring.remote.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>remote</servlet-name>
<url-pattern>/remote/*</url-pattern>
</servlet-mapping>

3、将接口发布到客户端程序
将IHello复制到客户端程序
客户端spring配置
<bean id="helloHessian" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<property name="serviceUrl">
<value>http://xxxx:8080/hessian/remote/helloHessian</value>
</property>
<property name="serviceInterface">
<value>IHello</value>
</property>
</bean>


4、客户端调用接口
helloHessian.hello(null);

具体实现时,客户端的配置没有用到spring配置文件,而是写代码手工创建一个对象,代码如下:

public class DataSyncRemote
{
private static HessianProxyFactoryBean hessianProxy = new HessianProxyFactoryBean();
private Logger logger = Logger.getLogger(DataSyncRemote.class);
static
{
hessianProxy.setServiceInterface(IDataSyncHessian.class);
}

public static IDataSyncHessian getRemoteService(String ip)
{
hessianProxy.setServiceUrl("http://"+ip+":8080/hessian/remote/helloHessian");
hessianProxy.setServiceInterface(IDataSyncHessian.class);
hessianProxy.afterPropertiesSet();
return (IDataSyncHessian) hessianProxy.getObject();
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值