来自过滤器

时间:2015-05-01 03:32:54

标签: spring tomcat

我尝试从过滤器中获取spring Web应用程序上下文。

我之前已经通过了:

WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext())

没关系,因为我得到了所谓的ROOT Web应用程序上下文。 现在,我想在web.xml中移动所有我的spring定义:

    <servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <!-- Configure DispatcherServlet to use AnnotationConfigWebApplicationContext instead of default XmlWebApplicationContext. --> 
    <init-param>
        <param-name>contextClass</param-name>
        <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
    </init-param>
    <!-- Custom web configuration annotated class. -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>foo.bar.WebConfiguration</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

我删除了&#34; old&#34; web.xml中的定义:

<!--    <context-param> -->
<!--        <param-name>contextConfigLocation</param-name> -->
<!--        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> -->
<!--    </context-param> -->
<!--    <listener> -->
<!--        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> -->
<!--    </listener> -->

现在,我没有更多&#34; ROOT&#34; Web应用程序上下文,并且过滤器无法获取另一个Web应用程序上下文。

我看到还有另一个电话:

WebApplicationContextUtils.getWebApplicationContext(sc, attrName)

它允许指定&#34;属性&#34;作为第二个参数,它实际上是您想要的Web应用程序上下文。默认情况下,它是&#34; org.springframework.web.context.WebApplicationContext。 ROOT&#34;

我想我必须称这种方法,但我不知道该把什么作为第二个参数。

PS:我也试过使用org.springframework.web.filter.DelegatingFilterProxy,但tomcat抛出了他没有找到经典(ROOT)Web应用程序上下文的错误:

java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?

但是还有另一个背景,它只是以另一种方式定义。我不可能只是试图获得ROOT的另一个背景。

感谢您到目前为止阅读。

0 个答案:

没有答案