2009-11-12 7 views
3

Lorsque mon ressort se charge, il est indiqué que applicationContext.xml ne se trouve pas dans le classpath en lançant FileNotFoundException comme indiqué ci-dessous. S'il vous plaît, aidez-moi à résoudre ce problème.Problème ContextLoaderListener lors du chargement du ressort

mon contenu web.xml est la suivante,

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    version="2.4"> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/Context.xml</param-value> 
    </context-param> 

    <servlet> 
     <servlet-name>flex</servlet-name> 
     <servlet-class> 
      org.springframework.web.servlet.DispatcherServlet 
     </servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/web-spring-context.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <listener> 
     <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
     </listener-class> 
    </listener> 

    <servlet-mapping> 
     <servlet-name>flex</servlet-name> 
     <url-pattern>/messagebroker/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

L'exception levée est la suivante,

GRAVES: Exception contexte envoi événement initialisé à l'auditeur par exemple de classe org.springframework .web.context.ContextLoaderListener org.springframework.beans.factory.BeanDefinitionStoreException: IOException analyse XML docum ent de ressource de chemin de classe [applicationContext.xml]; imbriqué exception est java.io.FileNotFoundException: classe chemin ressource [applicationContext.xml] ne peut pas être ouvert car il ne exist causée par: java.io.FileNotFoundException: chemin classe ressources [applicationContext.xml] ne peut pas être ouvert car il ne existe à org.springframework.core.io.ClassPathResource.getInputStream (ClassPathResource.java:135) à org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java: 297) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.load BeanDefinitions (XmlBeanDefinitionReader.java:280) à org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:131) à org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader. java: 147) à org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions (XmlWebApplicationContext.java:123) à org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions (XmlWebApplicationContext.java:91) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory (AbstractRefreshabl eApplicationContext.java:100) à org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:298) à org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh (AbstractRefreshableWebApplicationContext.java:156) à org.springframework.web.context.ContextLoader.createWebApplicationContext (ContextLoader.java:246) à org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:184) à org.springframework.web .context.ContextLoaderListener.contextInitialized (ContextLoaderListener.java:49) at org.apache.catal ina.core.StandardContext.listenerStart (StandardContext.java:3843) à org.apache.catalina.core.StandardContext.start (StandardContext.java:4342) à org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase.java:791) at org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java: 771) à org.apache.catalina.core.StandardHost.addChild (StandardHost.java:525) à org.apache.catalina.startup.HostConfig.deployDirectory (HostConfig.java:926) à org .apache.catalina.startup.HostConfig.deployDirectories (HostConfig.java:889) à org.apache.catalina.startup.HostConfig.deployApps (HostConfig.java:492) à org.apache.catalina.startup.HostConfig .start (HostConfig.java:1149) à org.apache.catalina.startup.HostConfig.lifecycleEvent (HostConfig.java:311) à org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport .java: 117) à org.apache.catalina.core.ContainerBase.start (ContainerBase.java:1053) à org.apache.catalina.core.StandardHost.start (StandardHost.java:719) à org.apache.catalina.core.ContainerBase.start (ContainerBase.java:1045) à org.apache.catalina.core.StandardEngine.start (StandardEngine.java:443) à org.apache.catalina.core. StandardService.start (StandardService.java:516) à org.apache.catalina.core.StandardServer.start (StandardServer.java:710) à org.apache.catalina.startup.Catalina.start (Catalina.java: 578) à sun.reflect.NativeMethodAccessorImpl.invoke0 (native Method) à sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) à java.lang.reflect.Method.invoke (Method.java:585) à org.apache.catalina.startup.Bootstrap.start (Bootstrap.java:288) à org.apache.catalina.startup.Bootstrap .main (Bootstrap.java:413) Nov 12, 2009 4:02:09 PM org.apache.catalina.core.ApplicationContext log

Lorsque je ne veux pas que les fichiers soient nommés applicationContext.xml, pourquoi doit-il les rechercher? comme il a été clairement indiqué dans web.xml ..

Répondre

5

Désolé les gars, c'était dû à un problème simple dans Tomcat. Il y a longtemps que je travaillais sur un projet qui n'était pas supprimé du dossier tomcat webapp. C'était aussi un projet de printemps. Je l'ai compris en commentant tout dans web.xml dans le projet en cours, je travaille sur. Quand je l'ai fait, il essayait toujours de charger le conteneur de printemps. C'est à ce moment que j'ai ouvert l'application web de Tomcat Manager et plissé les yeux pour l'application qui n'était pas amorcée.

Je trouve une application qui n'a pas été bootstrapped dans l'application web de gestion tomcat, je supprimé cette application, maintenant ma demande a commencé à travailler comme un charme ...

4

Vous avez réellement configuré deux différents chargeurs bootstrap Spring - ContextConfigListener tente de charger un fichier de contexte (dont le défaut nom à applicationContext.xml), puis DispatcherServlet sera lancé deuxième et tentative pour charger votre /WEB-INF/web-spring-context.xml (DispatcherServlet charge ce contexte en tant qu'enfant du premier).

Si vous n'avez pas besoin de deux contextes pour charger (ou pour avoir un contexte parent et enfant), vous pouvez supprimer ContextConfigListener et utiliser DispatcherServlet seulement.

mise à jour: Quelle version de Spring utilisez-vous? Les numéros de ligne dans votre stacktrace ne correspondent pas à la source de org.springframework.web.context.ContextLoader que j'ai pour Spring 2.5.6. Êtes-vous sûr d'utiliser la même version de spring-core et spring-webmvc?

+1

-1 Les utilisations de 'ContextLoaderListener' (ou devrais utiliser) le 'contextConfigLocation' qui a été spécifié comme' ', dans ce cas'/WEB-INF/Context.xml'. La configuration à deux contextes est délibérée ici. – skaffman

+0

'contextConfigLocation' * est * spécifié en tant que' context-param', il est situé en haut du fichier. Il est également spécifié comme 'init-param' à la servlet. – skaffman

+0

skaffman est correct - j'ai manqué que quand je l'ai lu à l'origine - mais je me demande maintenant si inconnu a la version de printemps correcte –

0

Votre fichier Context.xml essaie-t-il de faire une importation de applicationContext.xml à partir du classpath?Le code ressemblerait à ceci:

<import resource="classpath:applicationContext.xml"/> 

Basé sur le stacktrace, il essaie de charger ce fichier à partir du chemin de classe (voir la 2e à la dernière entrée). J'ai juste essayé sur ma machine et s'il ne peut pas trouver le dossier de contexte de racine la 2ème ligne de la trace est ServletContextResource.getInputStream, ainsi il lit Context.xml.

+0

Context.xml n'a qu'un seul bean défini 'ArrayList' qui est également à des fins de test. – Antony

Questions connexes