struts + spring + xfire (组合)

一般情况下, spring+ struts的组合,struts 作为web展现层, 现在加xfire。其实,细心的朋友在做这个组合的时候,在配置的时候会出现一个问题。struts通过struts-config.xml文件中的 plugin与spring进行连接,而xfire通过在web.xml,配置一个listener和一个servlet与 spring 通信。struts会load一遍配置文件,listener也会load一遍配置文件。这样就会引起冲突。

我在做配置的时候,就是出现了上面的问题。两次load配置文件的问题。我让struts里,加载dao,service,transaction 层的配置文件,web.xml加载xfire文件。然后,启动web工程,开始是正常的。struts+spring+ibatis的正常网页,一切正 常。但是刚把service注入进xfire的时候,出现了无法加载的错误,也就是空指针。本来嘛,xfire和struts就是分着加载的。当时还想着 是两次启动造成了spring的两个实例,两个实例之间不能共享。

然后,尝试了N次,最后终于找到解决办法了。

struts里,plugin这样写,  value=""

 

<plug-in
 className="org.springframework.web.struts.ContextLoaderPlugIn">
 <set-property property="contextConfigLocation" value="" />
</plug-in>

 web.xml里,统一进行加载。

   1.  <context-param></context-param><context-param>
   2. <param-name>contextConfigLocation</param-name>
   3. <param-value>/WEB-INF/ApplicationContext.xml</param-value>
   4. </context-param>
   5. <listener></listener>
   6. <listener-class></listener-class>
   7.       <listener>
   8. <listener-class>
   9. org.springframework.web.context.ContextLoaderListener
  10. </listener-class>
  11. </listener>
  12. <servlet>
  13. <servlet-name>XFireServlet</servlet-name>
  14. <servlet-class>
  15. org.codehaus.xfire.spring.XFireSpringServlet
  16. </servlet-class>
  17. <load-on-startup>0</load-on-startup>
  18. </servlet>
  19. <servlet-mapping>
  20. <servlet-name>action</servlet-name>
  21. <url-pattern>*.do</url-pattern>
  22. </servlet-mapping>
  23. <servlet-mapping>
  24. <servlet-name>XFireServlet</servlet-name>
  25. <url-pattern>/services/*</url-pattern>
  26. </servlet-mapping>

 这样子,struts 和xfire就可以一起启动了。 因为xfire一定要通过web.xml启动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值