2014-05-05 9 views
6

Sto cercando di implementare il registro di protezione in primavera e ho provato qualcosa di simile:Eccezione invio contesto evento a chi ascolta un'istanza della classe org.springframework.web.context.ContextLoaderListener inizializzata

spring-security.xml: 
<beans:beans xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
      http://www.springframework.org/schema/security 
      http://www.springframework.org/schema/security/spring-security-3.1.xsd"> 

    <http auto-config="true" use-expressions="true"> 
     <intercept-url pattern="/login" access="permitAll" /> 
     <intercept-url pattern="/logout" access="permitAll" /> 
     <intercept-url pattern="/accessdenied" access="permitAll" /> 
     <intercept-url pattern="/**" access="hasRole('ROLE_USER')" /> 
     <form-login login-page="/login" default-target-url="/list" authentication-failure-url="/accessdenied" /> 
     <logout logout-success-url="/logout" /> 
    </http> 

    <authentication-manager alias="authenticationManager"> 
     <authentication-provider> 
      <user-service> 
       <user name="lokesh" password="password" authorities="ROLE_USER" /> 
      </user-service> 
     </authentication-provider> 
    </authentication-manager> 

</beans:beans> 

web.xml:

<servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class> 
      org.springframework.web.servlet.DispatcherServlet 
     </servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/spring-servlet.xml, 
      /WEB-INF/spring-security.xml 
     </param-value> 
    </context-param> 

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



<!-- Spring Security --> 
<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Sto usando la versione di primavera: 3.1 e sto ricevendo l'errore sopra il file xml.

errore:

May 5, 2014 12:33:47 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/spring-security.xml]; nested exception is java.lang.NoClassDefFoundError: org/springframework/security/web/util/AntPathRequestMatcher 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) 
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) 
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) 
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131) 
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:377) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:278) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 
Caused by: java.lang.NoClassDefFoundError: org/springframework/security/web/util/AntPathRequestMatcher 
    at org.springframework.security.config.http.MatcherType.<clinit>(MatcherType.java:22) 
    at org.springframework.security.config.http.HttpConfigurationBuilder.<init>(HttpConfigurationBuilder.java:105) 
    at org.springframework.security.config.http.HttpSecurityBeanDefinitionParser.createFilterChain(HttpSecurityBeanDefinitionParser.java:116) 
    at org.springframework.security.config.http.HttpSecurityBeanDefinitionParser.parse(HttpSecurityBeanDefinitionParser.java:81) 
    at org.springframework.security.config.SecurityNamespaceHandler.parse(SecurityNamespaceHandler.java:88) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1414) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1404) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) 
    ... 28 more 
May 5, 2014 12:33:47 PM org.apache.catalina.core.StandardContext start 
SEVERE: Error listenerStart 
May 5, 2014 12:33:47 PM org.apache.catalina.core.StandardContext start 
SEVERE: Context [/HRportal] startup failed due to previous errors 
May 5, 2014 12:33:47 PM org.apache.catalina.core.ApplicationContext log 
INFO: Closing Spring root WebApplicationContext 
May 5, 2014 12:33:47 PM org.apache.catalina.core.StandardContext listenerStop 
SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener 
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext 
    at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172) 
    at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1066) 
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1040) 
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:988) 
    at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:534) 
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142) 
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:3882) 
    at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4516) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4380) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 

Qualcuno mi può correggere mi sbaglio da qualche parte?

+0

@geoand Il riferimento a codice su siti esterni è scoraggiato per una serie di motivi, soprattutto perché rompe l'essenza della domanda a parte. La traccia dello stack da sola ha informazioni sufficienti per diagnosticare il problema. – chrylis

+0

@chrylis Vedo totalmente il tuo punto, ma a volte non è possibile risolvere il problema con lo stacktrace da solo. Ad esempio, non esiste un modo definitivo per sapere quali dipendenze sono presenti nel classpath di OP. Se per esempio il codice funziona per me, allora sappiamo sicuramente che lui/lei ha impostato il progetto sul suo computer in modo errato. Come ho detto, vedo il tuo punto, ma la fine è aiutare l'utente e informare i futuri lettori – geoand

+1

@ user3448105 quale strumento di compilazione usi? come Maven, Ant ecc. e quale versione di sicurezza a molla? prova a pulire una volta e costruisci di nuovo, e anche a conformare quella classe è disponibile su buildpath facendo clic su ctrl + maiusc + t e scrivi 'AntPathRequestMatcher' e vedi se hai qualcosa? – Rembo

risposta

4

Ti manca spring-security-web-3.1.X.RELEASE.jar dal classpath

+0

No Non sto messaggiando il vaso sepring-security-web-3.0 ... Ce l'ho nella cartella lib ... Qualcos'altro è sbagliato .. – user3448105

+0

Quindi fornire ulteriori informazioni su questo errore. Dal file di registro fornito sembra che si stia riscontrando un problema con una libreria mancante. – Pantelis

+1

@ user3448105: Nel tuo stacktrace, le informazioni rilevanti sembrano essere 'Causato da: java.lang.NoClassDefFoundError: org/springframework/security/web/util/AntPathRequestMatcher'. In SpringSecurity 3.1, 'AntPathRequestMatcher' è in' spring-security-web-3.1.X.RELEASE.jar' quindi la risposta di Pantelis. Dovresti controllare se per ** il tuo ** rilascio di SpringSecurity è in un barattolo che si trova sul tuo percorso. E dovresti dire qual è il tuo rilascio ... –

0

Se si è sicuri di non aver rovinato il vaso, quindi si prega di pulire il progetto ed eseguire mvn clean install. Questo dovrebbe risolvere il problema.

Problemi correlati