Hessian入门(与Spring集成)
By:wtang
说明 :
1. 讲述如何配置Hessian的服务器端(与Spring集成).
2. 讲述客户端如何调用
① 使用HessianProxyFactory Hessian代理工厂直接调用
② 使用HessianProxyFactoryBean Hessian代理工厂Bean来完成接口调用.
1. 讲述如何配置Hessian的服务器端(与Spring集成).
接口定义类: com.wtang.isay. Isay:
- packagecom.wtang.isay;
- publicinterfaceIsay{
- publicStringsayHello(Stringarg1,Stringarg2);
- }
接口具体实现类: com.wtang.isay. IsayImpl
- packagecom.wtang.isay;
- publicclassIsayImplimplementsIsay{
- publicStringsayHello(Stringarg1,Stringarg2){
- return"Hello:"+arg1+arg2;
- }
- }
配置Web.xml:
- <servlet>
- <servlet-name>remote</servlet-name>
- <!--使用Spring的代理Servlet-->
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>namespace</param-name>
- <param-value>classes/remote-servlet</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>
配置remote-servlet.xml[该文件位于src目录下,即编译后存在与classes下]:
- <!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <!--接口的具体实现类-->
- <beanid="impl"class="com.wtang.isay.IsayImpl"/>
- <!--使用Spring的HessianServie做代理-->
- <beanname="/helloSpring"
- class="org.springframework.remoting.caucho.HessianServiceExporter">
- <!--service引用具体的实现实体Bean-->
- <propertyname="service"ref="impl"/>
- <propertyname="serviceInterface"value="com.wtang.isay.Isay"/>
- </bean>
- <!--可以配置多个HessianServiceExporter代理Bean-->
- </beans>
注:
这个文件为什么叫remote-servlet.xml呢?
因为我们在web.xml中有配置:<servlet-name>remote</servlet-name>。
所以remote-servlet.xml的文件名必须以
<servlet-name>中配置的servlet-name作为文件名的开头,
且文件名的格式必须是[servlet-name]-servlet.xml格式,否则检测不到。
即:
<param-value>classes/remote-servlet</param-value>
所以文件名为remote-servlet.xml。
2. 讲述客户端如何调用
①使用HessianProxyFactory Hessian代理工厂直接调用
即:
- packagecom.wtang.test;
- importjava.net.MalformedURLException;
- importcom.caucho.hessian.client.HessianProxyFactory;
- importcom.wtang.isay.Isay;
- publicclassNormalClient{
- publicstaticvoidmain(String[]args)throwsMalformedURLException{
- //SpringHessian代理Servelet
- Stringurl="http://localhost:8080/HessianSpring/remote/helloSpring";
- HessianProxyFactoryfactory=newHessianProxyFactory();
- Isayapi=(Isay)factory.create(Isay.class,url);
- System.out.println(api.sayHello("chen","weitang"));
- }
- }
输出Hello:chenweitang
2. 讲述客户端如何调用
②使用HessianProxyFactoryBean Hessian代理工厂Bean来完成接口调用.
配置客户端 remote-client.xml:
- <!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <!--客户端Hessian代理工厂Bean-->
- <beanid="clientSpring"class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
- <!--请求代理Servlet路径-->
- <propertyname="serviceUrl">
- <value>http://localhost:8080/HessianSpring/remote/helloSpring</value>
- </property>
- <!--接口定义-->
- <propertyname="serviceInterface">
- <value>com.wtang.isay.Isay</value>
- </property>
- </bean>
- </beans>
调用:
- packagecom.wtang.test;
- importorg.springframework.context.ApplicationContext;
- importorg.springframework.context.support.ClassPathXmlApplicationContext;
- importcom.wtang.isay.Isay;
- publicclassSpringClient{
- publicstaticvoidmain(String[]args){
- ApplicationContextcontex=newClassPathXmlApplicationContext(
- "remote-client.xml");
- //获得客户端的Hessian代理工厂bean
- Isayi=(Isay)contex.getBean("clientSpring");
- System.out.println(i.sayHello("chen","weitang"));
- }
- }
输出Hello:chenweitang