2009-12-08 41 views
0

我试图用Spring来配置一个部署在JBoss中的web应用程序。我把这个添加到web.xml:在默认的战争中使用JBoss配置中的Spring ContextLoaderListener

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

不过,我根据我的“默认” JBoss的配置,其中包括战争,如JMX-console.war配置,现在这些失败部署与错误:

[ContextLoader] Context initialization failed 
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml] 

所以,我怎么能告诉的ContextLoaderListener忽略这个错误,或者至少绕过这些特殊的战争,同时仍试图处理我自己的战争?

回答

3

您必须拥有您的应用程序上下文/WEB-INF/applicationContext.xml。由于这是特定于应用程序的,因此应该为您的应用程序配置,而不是其他应用程序。也就是说,不要在应用程序服务器级映射ContextLoaderListener

你可以设置一个替代的位置,使用:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/mylocation/spring.xml 
    </param-value> 
</context-param> 

但你不能(也不可)忽略它。

+0

我不确定我是否关注你...你是说我必须添加一个/WEB-INF/applicationContext.xml到所有.war文件,即使它只是一个空文件? jboss默认设置包括6个战争:admin-console.war,http-invoker.sar/invoker.war,jbossws.sar/jbossws-management.war,jmx-console.war,management/console-mgr.war和ROOT 。战争。我已经解决了这个问题(添加一个空的applicationContext.xml),只是想要改变这些随jboss默认并且永远不会有任何spring配置的war。 – 2009-12-08 18:19:47

+0

不,我的意思是你必须有ContextLoaderListener只声明你的应用程序,而不是全部 – Bozho 2009-12-08 18:31:26

+0

哦!出于某种原因,我误解了你唯一可以添加过滤器的地方是在jbossweb.deployer下的web.xml中。谢谢,那当然是正确的解决方案! – 2009-12-08 19:46:36