代码改变世界

Hessian使用

2009-12-21 20:16  Khotyn  阅读(993)  评论(0)    收藏  举报

Hessian 使用

最近团队在等着新项目,整个团队都没有什么事情干,趁闲的时间看了下Hessian,发现Hessian果然是个简单易用的东西,但是Hessian的官方网站上对于Hessian的使用感觉写得很一般,本文就来介绍下Hessian的使用。

Simple Hessian 

先来介绍下如何搭建一个简单的Hessian应用,先来看一下服务端的配置:要提供一个Hessian服务,只需要提供一个HessianServlet即可,也就是在web.xml需要配置一个HessianServlet,然后需要配置两个初始化值,分别是home-class:接口的实现;home-api:接口,具体的value就是类路径。 web.xml的配置如下:

web.xml
<servlet>
    
<servlet-name>hello</servlet-name>
    
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
    
<init-param>
        
<param-name>home-class</param-name>
        
<param-value>com.khotyn.hessianServer.BasicAPIImpl</param-value>
    
</init-param>
    
<init-param>
        
<param-name>home-api</param-name>
        
<param-value>com.khotyn.hessianServer.BasicAPI</param-value>
    
</init-param>
</servlet>

<servlet-mapping>
    
<servlet-name>hello</servlet-name>
    
<url-pattern>/hello</url-pattern>
</servlet-mapping>

 

再来看下客户端的实现,客户端的话通过一个HessianProxyFactory获取服务接口,然后调用服务接口的方法访问具体的实现类的方法:

client
 1 private static void simpleHessian() {
 2         HessianProxyFactory hessianProxyFactory = new HessianProxyFactory();
 3 
 4         try {
 5             BasicAPI basicAPI = (BasicAPI) hessianProxyFactory.create(BasicAPI.class,
 6                                                                       "http://localhost:8080/hessianServer/remoting/hello");
 7             System.out.println(basicAPI.hello());
 8         } catch (MalformedURLException e) {
 9             e.printStackTrace();
10         }
11 }

 

其中的URL地址("http://localhost:8080/hessianServer/remoting/hello")就是服务器端的Servlet配置的地址

Hessian In Spring

Spring对Hessian提供了良好的集成,通过Spring配置一个Hessian服务也是很简单的,还是先看下服务端是怎么配置的: 首先在web.xml为Hessian配置一个DispatcherServlet:

web.xml
 1 <servlet>
 2     <servlet-name>remoting</servlet-name>
 3     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 4     <load-on-startup>1</load-on-startup>
 5 </servlet>
 6 
 7 <servlet-mapping>
 8     <servlet-name>remoting</servlet-name>
 9     <url-pattern>/remoting/*</url-pattern>
10 </servlet-mapping>

 

  然后在WEB-INF下配置一个remoting-servlet.xml:

代码
1 <bean id="basicAPI" class="com.khotyn.hessianServer.BasicAPIImpl"></bean>
2 
3 <bean name="/basicAPI"
4     class="org.springframework.remoting.caucho.HessianServiceExporter">
5     <property name="service" ref="basicAPI"></property>
6     <property name="serviceInterface" value="com.khotyn.hessianServer.BasicAPI"></property>
7 </bean>
8 

 

其中,id为"basicAPI"的Bean配置一个basicAPI的具体的实现,也就是你需要提供的具体的服务。

而name为"/basicAPI"的Bean则配置一个HessianServiceExporter去将服务暴露到外部系统去,里面有两个属性,其中一个是服务接口的具体的实现类,一个是服务接口 

 

然后再去看下客户端的配置,客户端可以使用各种各样不同的配置,比如上面的那种简单的直接通过HessianProxyFactory去访问Hessian服务的,这里就讲下如何通过Spring去访问一个Hessian服务:

代码
1 <bean id="basicAPI"
2     class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
3     <property name="serviceUrl"
4         value="http://localhost:8080/hessianSpringServer/remoting/basicAPI"></property>
5     <property name="serviceInterface" value="com.khotyn.hessianServer.BasicAPI"></property>
6 </bean>

 

 

   这里面需要配置一个HessianProxyFactoryBean到Bean配置文件中去,里面需要提供两个属性,一个是服务接口的类路径,一个是URL,等等,有没有发现这两个属性刚好和我们刚才的通过HessianProxyFactory的时候调用的create方法里面的两个参数是基本上一致的,你是对的,事实上,HessianProxyFactoryBean就是HessianProxyFactory的封装