SpringMVC集成Hessian

SpringMVC集成Hessian

首先強調這裏是SpringMVC,不是spring,這二者在集成Hessian的時候仍是有差異的。Spring集成相對簡單,網上隨便搜一個就行。java

SpringMVC有點麻煩。web

注:若是你還不瞭解Hessian,能夠看Hessian簡單示例spring

前提條件

假設你的SpringMVC環境已經配置了好了。瀏覽器

主要是在web.xml中有了以下的配置:服務器

<servlet>
    <!-- 名字隨便,和你springmvc的配置xml一致便可 -->
    <servlet-name>sys</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
   <!-- 你本身的映射配置 -->
</servlet-mapping>

另外你已經配置了相應的sys-servlet.xml文件(sys名字和你本身的保持一致便可)。mvc

集成Hessian

爲了針對Hessian的請求,在web.xml中增長了以下映射:app

<servlet-mapping>
    <!-- 名字要保持一致 -->
    <servlet-name>sys</servlet-name>
    <url-pattern>*.hessian</url-pattern>
</servlet-mapping>

而後在sys-servlet.xml中添加以下配置:url

<!--hessian-->
<bean id="httpRequestHandlerAdapter" class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean id="importService" class="com.xxx.pr.service.impl.ImportServiceImpl"/>
<bean name="/import.hessian" class="org.springframework.remoting.caucho.HessianServiceExporter">
    <property name="service" ref="importService"/>
    <property name="serviceInterface" value="com.xxx.pr.service.ImportService"/>
</bean>

HessianServiceExporter是繼承HttpRequestHandler接口的,因此須要HttpRequestHandlerAdapter來處理這種請求。spa

BeanNameUrlHandlerMapping的做用是,當<bean>name屬性以/開頭的時候,映射爲url請求。.net

HessianServiceExporter中的兩項屬性,一個是serviceref屬性指向的實現類。一個是serviceInterface,指向的是接口。

作好如上配置後,啓動服務器。

而後訪問http://localhost:8080/myweb/import.hessian便可。具體地址根據本身的來寫。

在瀏覽器打開後,會顯示下面的樣子:

HTTP Status 405 - HessianServiceExporter only supports POST requests

type Status report

message HessianServiceExporter only supports POST requests

description The specified HTTP method is not allowed for the requested resource.

Apache Tomcat/7.0.56

若是如上顯示,說明就沒有問題了。

調用

若是在Spring中調用,能夠嘗試以下配置

<bean id="importBean"   
class="org.springframework.remoting.caucho.HessianProxyFactoryBean">  
    <property name="serviceUrl"   
         value="http://localhost:8080/myweb/import.hessian"></property>  
    <property name="serviceInterface" value="com.xxx.pr.service.ImportService"></property>  
</bean>

也能夠直接使用Hessian調用

String url = "http://localhost:8080/myweb/import.hessian";
HessianProxyFactory factory = new HessianProxyFactory();
ImportService basic = (ImportService) factory.create(ImportService.class, url);
相關文章
相關標籤/搜索