2009-12-08 4 views
0

Я пытаюсь использовать Spring для настройки веб-приложения, развернутого в JBoss. Я добавил это в web.xml:Использование Spring ContextLoaderListener в конфигурации JBoss с ошибками по умолчанию

<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 .war. Я работал над проблемой, выполнив это (добавив пустой applicationContext.xml), просто кажется, что это хакски, чтобы изменить эти .wars, которые по умолчанию поставляются с jboss и никогда не будут иметь конфигурацию пружины. –

+0

Нет, я имел в виду, что вы должны иметь ContextLoaderListener, объявленный только для вашего приложения, а не для всех – Bozho

+0

Oh! По какой-то причине я был под неправильным представлением о том, что единственное место, где вы могли бы добавить фильтры, было в web.xml под jbossweb.deployer. Спасибо, это, конечно, правильное решение! –

Смежные вопросы