首先強調這裏是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的請求,在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
中的兩項屬性,一個是service
,ref
屬性指向的實現類。一個是serviceInterface
,指向的是接口。
作好如上配置後,啓動服務器。
而後訪問http://localhost:8080/myweb/import.hessian便可。具體地址根據本身的來寫。
在瀏覽器打開後,會顯示下面的樣子:
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
若是如上顯示,說明就沒有問題了。
<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>
String url = "http://localhost:8080/myweb/import.hessian"; HessianProxyFactory factory = new HessianProxyFactory(); ImportService basic = (ImportService) factory.create(ImportService.class, url);