Spring Struts2 Hessian整合的一個問題

來源:互聯網
上載者:User

最近在做系統改造的時候,還遇到了一個問題是,如何整合Spring Struts2和Hessian。


當配置Spring和Struts2的時候,在web.xml做了如下配置:

<context-param>   <param-name>contextConfigLocation</param-name>   <param-value>classpath:/spring/*.xml</param-value></context-param><listener>  <listener-class>    org.springframework.web.context.ContextLoaderListener  </listener-class></listener>

通過設定listener載入Spring的上下文環境,並在struts.xml中設定對象工廠為Spring:

<constant name="struts.objectFactory" value="spring" />

這樣,Struts2就可以使用Spring上下文環境中的action bean了。


但在配置Hessian的時候,以前在web.xml中是這樣配置的:

<servlet>  <servlet-name>Remoting</servlet-name>  <servlet-class>    org.springframework.web.servlet.DispatcherServlet  </servlet-class>  <init-param>    <param-name>contextConfigLocation</param-name>    <param-value>classpath:/spring/*.xml</param-value>  </init-param>  <load-on-startup>1</load-on-startup></servlet><servlet-mapping>   <servlet-name>Remoting</servlet-name>   <url-pattern>/remoting/*</url-pattern></servlet-mapping>

在初始化Hessian的servlet的時候又一次把Spring設定檔作為參數,這樣又會重建一個Spring上下文環境,導致Spring中bean的重複。


為瞭解決這個問題,在配置Hessian時,做了一下修改,如下:

<servlet>   <servlet-name>Remoting</servlet-name>   <servlet-class>     org.springframework.web.servlet.DispatcherServlet   </servlet-class>   <init-param>      <!-- <param-name>contextConfigLocation</param-name>      <param-value>classpath:/spring/*.xml</param-value> -->      <!-- 該servlet的spring上下文採用WebApplicationContext,不再重複產生上下文 -->      <param-name>contextAttribute</param-name>      <param-value>        org.springframework.web.context.WebApplicationContext.ROOT      </param-value>   </init-param>   <load-on-startup>1</load-on-startup></servlet>

即在初始化Hessian時不再傳入Spring設定檔,而是傳入通過listener初始化的Spring WebApplicationContext上下文環境,即使用同一個上下文環境。


本文出自 “學習文檔” 部落格,請務必保留此出處http://zephiruswt.blog.51cto.com/5193151/1290391

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.