2009-12-08 4 views
0

J'essaie d'utiliser Spring pour configurer une application Web déployée dans JBoss. Je l'ai ajouté à la web.xml:Utilisation de Spring ContextLoaderListener dans JBoss config avec les guerres par défaut

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

Cependant, j'ai fondé ma config sur le « défaut » config JBoss qui inclut des guerres telles que JMX-console.war, et maintenant elles ne réussissent pas à déployer avec l'erreur:

[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] 

alors, comment puis-je savoir ContextLoaderListener d'ignorer cette erreur, ou au moins contourner ces guerres particulières, tout en essayant toujours de traiter mes propres guerres?

Répondre

3

Vous devez avoir votre contexte d'application à /WEB-INF/applicationContext.xml. Comme il s'agit d'une application spécifique, elle doit être configurée pour vos applications, pas pour d'autres applications. Autrement dit, ne mappez pas le ContextLoaderListener au niveau d'un serveur d'applications.

Vous pouvez configurer un autre emplacement, en utilisant:

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

Mais vous ne pouvez pas (et vous ne devez pas) l'ignorer.

+0

Je ne suis pas sûr de vous suivre ... êtes-vous en train de dire que je dois ajouter un /WEB-INF/applicationContext.xml à TOUS les fichiers .war, même s'il ne s'agit que d'un fichier vide? La configuration par défaut de jboss comprend 6 guerres: admin-console.war, http-invoker.sar/invoker.war, jbossws.sar/jbossws-management.war, jmx-console.war, gestion/console-mgr.war et ROOT .guerre. J'ai travaillé autour du problème en faisant ceci (en ajoutant un applicationContext.xml vide), il semble juste assez hackish pour devoir changer ces .wars qui viennent avec jboss par défaut et n'auront jamais aucune config de ressort. –

+0

Non, je voulais dire que vous devez avoir déclaré ContextLoaderListener seulement pour votre application, pas pour tous – Bozho

+0

Oh! Pour une raison que j'ignorais, j'avais l'idée fausse que le seul endroit où vous pouviez ajouter des filtres était dans le fichier web.xml sous jbossweb.deployer. Merci, c'est bien sûr la bonne solution! –

Questions connexes