首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑问
【标  题】:Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑问
【关键字】:Rensin3.0.19,Listener,RequestContextListener,Spring2,web
【来  源】:http://www.blogjava.net/crespo9907/archive/2007/02/08/resin3_spring2_requestcontextlistener_exception.html

Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑问

??? 在Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用域,分别为request、session和global session,它们的含义和用法请大家参考Spring官方手册的相关章节。如果你想让你的容器里的某个bean拥有其中某种新的web作用域,除了在bean级上配置相应的scope属性,还必须在容器级做一个额外的初始化配置。即在web应用的XML声明文件web.xml中增加下述ContextListener

1?<web-app>
2???
3???<listener>
4?????<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
5???</listener>
6???
7?</web-app>

??? 如果你用的是早期版本的web容器(Servlet 2.4以前),那么你要使用一个javax.servlet.Filter的实现。


?1?<web-app>
?2???..
?3???<filter>?
?4?????<filter-name>requestContextFilter</filter-name>?
?5?????<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
?6???</filter>?
?7???<filter-mapping>?
?8?????<filter-name>requestContextFilter</filter-name>?
?9?????<url-pattern>/*</url-pattern>
10???</filter-mapping>
11???
12?</web-app>

??? 两种方式完成完全一样的功能:基于LocalThread将HTTP request对象绑定到为该请求提供服务的线程上。这使得具有request和session作用域的bean能够在后面的调用链中被访问到。

??? 我一直使用的是Filter的配置方式,虽然使用的web容器Resin3.0.19是支持servlet2.4的但也懒得改为更为简洁的Listener了。使用一切正常,昨日无聊翻阅Spring的手册无意中又看到这一节,想想自己也太懒了,几句话就改了为什么不更简单呢?于是就把配置改成了Listener的方式,启动一切正常,但当请求第一个链接时居然报错了!

?1?java.lang.NullPointerException
?2?????at?org.springframework.web.context.request.RequestContextListener.requestDestroyed(RequestContextListener.java:67)
?3?????at?com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:120)
?4?????at?com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
?5?????at?com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:277)
?6?????at?com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:106)
?7?????at?org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
?8?????at?org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
?9?????at?org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
10?????at?org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
11?????at?org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
12?????at?javax.servlet.http.HttpServlet.service(HttpServlet.java:115)
13?????at?javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
14?????at?com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
15?????at?org.extremecomponents.table.filter.AbstractExportFilter.doFilter(AbstractExportFilter.java:49)
16?????at?com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
17?????at?org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:173)
18?????at?org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
19?????at?com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
20?????at?org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
21?????at?org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
22?????at?com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
23?????at?org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
24?????at?org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
25?????at?org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
26?????at?org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
27?????at?org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
28?????at?org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
29?????at?org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
30?????at?org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
31?????at?org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
32?????at?org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
33?????at?org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
34?????at?org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
35?????at?org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217)
36?????at?org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
37?????at?org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:106)
38?????at?org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
39?????at?org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:229)
40?????at?org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
41?????at?org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
42?????at?org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
43?????at?com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
44?????at?com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:178)
45?????at?com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
46?????at?com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:268)
47?????at?com.caucho.server.port.TcpConnection.run(TcpConnection.java:389)
48?????at?com.caucho.util.ThreadPool.runTasks(ThreadPool.java:507)
49?????at?com.caucho.util.ThreadPool.run(ThreadPool.java:433)
50?????at?java.lang.Thread.run(Thread.java:595)
51?[10:01:26.109]?java.lang.NullPointerException
52?[10:01:26.109]?????at?org.springframework.web.context.request.RequestContextListener.requestDestroyed(RequestContextListener.java:67)
53?[10:01:26.109]?????at?com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:188)
54?[10:01:26.109]?????at?com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
55?[10:01:26.109]?????at?com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:268)
56?[10:01:26.109]?????at?com.caucho.server.port.TcpConnection.run(TcpConnection.java:389)
57?[10:01:26.109]?????at?com.caucho.util.ThreadPool.runTasks(ThreadPool.java:507)
58?[10:01:26.109]?????at?com.caucho.util.ThreadPool.run(ThreadPool.java:433)
59?[10:01:26.109]?????at?java.lang.Thread.run(Thread.java:595)

??? 顺便说一下,用Listenter方式配置初始化ApplicationContext的ContextLoaderListener是正常的,它也是需要servlet2.4支持的,所以应该不是因为容器支持的servlet版本问题。 ?

??? 换回Filter后一切正常,看了一下Spring源码也没看除个所以然,在网上找了很久也没找到答案,很是郁闷!希望路过的高人们能够不吝赐教,感激涕零!

WebWork的强大的验证器:【上一篇】
簡單RSS編程 Only parsing RSS (XML) and displaying its contents:【下一篇】
【相关文章】
  • WebWork的强大的验证器
  • WebWork In Action学习笔记(一) WebWork的概貌
  • NetAdvantage 设计友好UI--WebCombo
  • WebLogic Server 8.1 SSL
  • Web网站安全概述
  • OnJava.com -- Web 服务实现中的概念分离 --> page1
  • ONJava.com -- Web 服务实现中的概念分离 --> page2
  • Web服务建模(一):XML模式
  • Web 服务建模(二): 建模并生成 WSDL
  • Web测试方法一
  • 【随机文章】
  • 特洛伊木马病毒“黑洞”分析报告
  • FlashFXP 1.2.602 破解
  • 在C#中建立复杂的、灵活的SQL查询/命令
  • 两个小问题备忘以及继续谈交互
  • 查看SUN V220CPU利用率
  • 存取XML实体与卷标
  • 类STL的内存分配,释放接口
  • 计算积分的function
  • 比较两个文件夹中的文件
  • IBM xSeries、Netfinity 系列服务器维修及更换备件服务。
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.