服务端代码:
对外提供服务的接口,和普通接口一样
public interface MathService {
public int add(int a, int b);
}
接口实现类,
和普通接口实现类一样
public class HessianMathService implements MathService {
public int add(int a, int b){
return a + b;
}
}
要注意的是传输的JAVA对象(如DTO)需要序列化,如这里的a如果是个对象,就需要序列化。
服务端配置
web.xml
<!-- hessian服务配置 --> <servlet> <servlet-name>Hessian</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:webservice/spring-hessian-server.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Hessian</servlet-name> <url-pattern>/hessian/*</url-pattern> </servlet-mapping>spring-hessian-server.xml (名字随便起,但该配置要交给spring管理 ,并和上面的 param-value中相同 )
<bean id=" hessianService" class=" com.test.webservice.hessian. HessianServiceImpl" autowire="byType"/>
<bean name="/ hessianService" class="org.springframework.remoting.caucho.HessianServiceExporter">
<property name="service" ref=" hessianService "/>
<property name="serviceInterface" value=" com.test.webservice.hessian. HessianService "/>
</bean>
客户端
需引入hessian 的jar,还需要服务端导出接口类的jar,放入lib
客户端代码:
和使用客户端
本身的service一样。
客户端配置
<bean id=" hessianService" name=" hessianService " class="org.springframework.remoting.caucho.HessianProxyFactoryBean" > <property name="serviceUrl" value="http://127.0.0.1/test/hessian/hessianService" /> <property name="serviceInterface" value="com.test.webservice.hessian. HessianService" /> <property name="readTimeout" value="10000" /> </bean>注意: HESSIAN要求客户端和服务器端接口Package名Class名相同,传输DTO的Class相同。 服务器端新增字段不影响旧客户端调用,反之,客户端新增字段会造成调用失败。