2013-02-07 17 views
0

我想實現我的應用程序安全春3.2保安過濾器:無contextListener

我有一個使用的web.xml如下應用:

<web-app> 
<display-name>myapp</display-name> 

<servlet> 
    <servlet-name>tmodel</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>tmodel</servlet-name> 
    <url-pattern>/tm/*</url-pattern> 
</servlet-mapping> 
</web-app> 

這裏是我的* -servlet。 XML:

<context:annotation-config /> 
<context:component-scan base-package="net.nls"/> 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="webBindingInitializer"> 
     <!-- Configures Spring MVC DataBinder instances --> 
     <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> 
      <property name="validator" ref="validator" /> 
     </bean> 
    </property> 
</bean> 

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> 

<!-- Creates the JSR-303 Validator --> 
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> 


<bean id="beansConfiguration" class="net.nls.tm.config.BeansConfiguration"/> 

<bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" 
     destroy-method="stop"> 
    <property name="connectionFactory"> 
     <bean id="cf" class="org.apache.activemq.ActiveMQConnectionFactory" 
       p:brokerURL="tcp://localhost:61616" 
       p:useAsyncSend="true" 
       /> 
    </property> 
</bean> 

<!-- Spring JMS Template --> 
<bean id="myJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
    <property name="connectionFactory"> 
     <ref local="jmsFactory"/> 
    </property> 
</bean> 

<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/> 
<task:executor id="myExecutor" pool-size="50"/> 
<task:scheduler id="myScheduler" pool-size="10"/> 

<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
    <property name="prefix" value="/jsp/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

當我看着春天的安全文檔版本3.2,的指令之一是增加:

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

,然後將此添加到我的* -servlet.xml後綴

<http auto-config='true'> 
    <intercept-url pattern="/**" access="ROLE_USER" /> 
</http> 

<authentication-manager> 
    <authentication-provider> 
     <user-service> 
      <user name="jimi" password="jimispassword" authorities="ROLE_USER, ROLE_ADMIN" /> 
      <user name="bob" password="bobspassword" authorities="ROLE_USER" /> 
     </user-service> 
    </authentication-provider> 
</authentication-manager> 

當我編譯和運行,我得到了以下異常應用程序:

java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered? 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:251) 

當我搜索我看到網絡添加人

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

然後一切停止工作。

出了什麼問題?考慮到我是如何解決這個問題的?

我可以在* -servlet.xml中移動我的過濾器嗎?如果是的話,怎麼樣?

回答

0

看起來像您添加監聽到* -servlet.xml後綴添加

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

到web.xml

+0

嗨克里斯,感謝您的答覆,但如果我們的監聽器添加到* -servlet .xml你得到一個異常:D 這段代碼被添加到web.xml – user2049122