spring mvc hessian 整合

最近在整合spring mvc 和 hessian的时候 ,应该对spring mvc的HandlerMapping 的映射机制不太清楚。。花了老长时间!!最后还是解决了!!在这里把代码给贴出来 大家分享下

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>webapp</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>  
           WEB-INF/osgi-context.xml
           WEB-INF/applicationContext.xml
           WEB-INF/springMVC-servlet.xml
    </param-value>
  </context-param>
  <context-param>
    <param-name>contextClass</param-name>
    <param-value>org.eclipse.virgo.web.dm.ServerOsgiBundleXmlWebApplicationContext</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

	<servlet>
		<servlet-name>hessian-servlet</servlet-name>
		<servlet-class>com.artogrid.hessian.servlet.CustomDispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
               WEB-INF/hessian-remoting.xml
            </param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>hessian-servlet</servlet-name>
		<url-pattern>/hessian/*</url-pattern>
	</servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

注意:com.artogrid.hessian.servlet.CustomDispatcherServlet 是我自己集成了下DispatcherServlet 应该我想得到 WebApplicationContext这个上下文 为了在使用hessian的时候我可以知道bean的名称我找到具体的bean的事例!!

springMVC-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    					http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    					http://www.springframework.org/schema/context
        				http://www.springframework.org/schema/context/spring-context-3.0.xsd
        				http://www.springframework.org/schema/mvc
        				http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 
    
    <context:component-scan base-package="com.venusource.app.contact" />
    
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
    
    <mvc:annotation-driven />
     
</beans>


hessian-remoting.xml的代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
    					http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    					http://www.springframework.org/schema/context
        				http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	<bean id="hessian" class="com.artogrid.hessian.service.impl.Hessian"/>  
	
	<bean id="httpRequestHandlerAdapter" class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
	
	
	<bean name="/helloHessian"  
	   class="org.springframework.remoting.caucho.HessianServiceExporter">  
	   <property name="service"><ref bean="hessian"/></property>  
	   <property name="serviceInterface">  
	   		 <value>com.artogrid.hessian.service.IHessian</value>  
	   </property>  
	</bean>
	
	
	<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
	    <property name="order" value="1" />
	  </bean>
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
	    <property name="order" value="2" />
	</bean>

</beans>


注意::
<bean id="httpRequestHandlerAdapter" class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>

	<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
	    <property name="order" value="1" />
	  </bean>
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
	    <property name="order" value="2" />
	</bean>

是能否成功的关键

我已经测试过了spring mvc 和 hessian 都是可以使用的!!由于我的工程是OSGI virgo 工程代码不好分享!!

猜你喜欢

转载自wangxingrang.iteye.com/blog/1738383