<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 81  文章 - 1033  trackbacks - 0
    <2014年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    在浮躁的年代里,我們進取心太切,患得患失;虛榮心太強,戰戰兢兢。一心爭強好勝,惟恐榜上無名。
    I think I can fly , and flying like a bird !
    程序員一名,已售出,缺貨中!

    我的郵件聯系方式

    用且僅用于MSN

    博客點擊率
    free web counter
    free web counter

    常用鏈接

    留言簿(36)

    隨筆檔案

    搜索

    •  

    積分與排名

    • 積分 - 186912
    • 排名 - 308

    最新評論

    閱讀排行榜

    評論排行榜

    ??? 在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源碼也沒看除個所以然,在網上找了很久也沒找到答案,很是郁悶!希望路過的高人們能夠不吝賜教,感激涕零!

    posted on 2007-02-08 10:10 cresposhi 閱讀(5526) 評論(20)  編輯  收藏

    FeedBack:
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 11:26 GoKu
    都說Resin速度比Tomcat快,為什么用Resin的人比較少...  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 11:29 施偉
    教科書上講的都是tomcat,大家都是從那個階段過來的,然后中國的教育從小到大都是這樣,都不怎么喜歡嘗試新的東西,喜歡照書做。不過話說回來,tomcat誰做的,apache啊,牛啊,讓人放心!  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 12:04 梅穎
    插不上嘴了。。。唉  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 13:11 BeanSoft
    哈,因為自己blog寫的牢騷貼說了幾句框架的壞話, 就有人留言說:
    ALin
    Posted @ 2007-02-08 09:56
    從此以后不再讀這個Blog里面的任何文章……
    見: Java 這么多框架, 前途在何方?
    http://www.tkk7.com/beansoft/archive/2007/02/03/97774.html

    Resin(有Open Source版本和商業版, 像 Mysql 那樣) 啟動的確比 Tomcat 快, 速度也快, 不過部分地方是不太符合 Tomcat 的慣例(不知道算不算 JSP 規范), 所以有些應用會報錯. 最新的Resin 3.0.22 修正了很多不兼容的 bug.

    at org.springframework.web.context.request.RequestContextListener.requestDestroyed(RequestContextListener.java:67)

    看看這個 Spring 中類的源碼是不是取不到 context 什么的.

      回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 13:27 BeanSoft
    public class RequestContextListener implements ServletRequestListener {

    /** Logger available to subclasses */
    protected final Log logger = LogFactory.getLog(getClass());


    public void requestInitialized(ServletRequestEvent requestEvent) {
    //....
    }

    public void requestDestroyed(ServletRequestEvent requestEvent) {
    ServletRequestAttributes requestAttributes =
    (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    requestAttributes.requestCompleted();
    RequestContextHolder.setRequestAttributes(null);
    LocaleContextHolder.setLocale(null);
    if (logger.isDebugEnabled()) {
    logger.debug("Cleared thread-bound request context: " + requestEvent.getServletRequest());
    }
    }

    }

    seems requestAttributes 取到的結果是 null, 把這里加個判斷修正一下重新編譯打包不知道會不會好. 我看的是 2.0.2 的 src.  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 13:39 施偉
    這個代碼我跟過了。。。 如果就這樣判斷然后就跳過去我總覺得不過,因為在tomcat里應該是沒有問題的 所以這里的對象應該是存在的,如果不找到根本原因 恐怕會有內存泄漏等問題。。。  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 13:47 施偉
    @BeanSoft
    在你的那篇文章里留了一句話,也在這里發一遍,緊記于心:框架是告訴人們不該去做什么,而不是告訴人們該去做什么;容器是告訴人們該去做什么,而不是告訴人們不該去做什么!
    有點繞口,不過味深!  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 13:54 BeanSoft
    看到了. 呵呵, 有時候是挺頭痛. 不過我想要是把你的問題放到 springside, 應該有人能指點一下吧. Google 一下看看有人遇到過沒有.  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 13:58 施偉
    昨天晚上google了半天都沒找到。。。等會到springside和spring中文站去逛逛,看有沒結果,現在只能將就著Filter用著了。。。框架啊框架 呵呵  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 13:59 BeanSoft
    開源的沒技術支持, API 不穩定, 的確是個大問題. 今天吃飯同事們還聊到 Struts 2.0 簡直就跟 1.0 沒共同點了快.  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 14:02 施偉
    Struts2就是webwork2。。。說是從Struts1過渡過來確實是瞎掰
    老項目還不如就用Struts1算了
    新的項目再說吧,不過webwork確實比Struts要爽的多,夠簡單。。。我喜歡。。。  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-08 14:21 梅穎
    你這熱鬧了,不要我了。。。  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-10 21:58 施偉
    要啊要啊,誰說不要啊,呵呵!  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-12 12:26 梅穎
    呵呵,我們老大都來了的,但是她冒留言,呵呵  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-02-13 09:08 施偉
    怎么不留言列?你們老大搞這么深沉搞么事灑,呵呵  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-03-20 15:32 ssmax
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問[未登錄] 2007-07-06 09:26 sun
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問 2007-08-14 01:04 farush
    我也是遇到同樣的問題。
    我用的是jetty5.1.12
    servlet2.4 (web.xml 頭也同樣正常聲明了使用servlet2.4)
    spring2.0.6

    我也是使用監聽器的方式。

    不過我的情況更壞,當使用
    org.springframework.web.context.ContextLoaderListener時:
    bean的scope為singleton或prototype時,正常,但scope為request或session時,容器在啟動就拋出異常。提示建議我使用:
    org.springframework.web.context.request.RequestContextListener
    于是,我將監聽器ContextLoaderListener換成了RequestContextListener,這里容器啟動拋新異常,提示WebApplicationContext沒初始化,建議我使用ContextLoaderListener,
    無奈,兩個監聽器都加上,
    這下兩個異常一起拋。。。。。

    更奇怪的是,即使bean是singleton,
    單單使用
    org.springframework.web.context.request.RequestContextListener
    這種方式還是啟動不了,提示WebApplicationContext沒得到初始化。。。

    PS:
    eclipse3.3
    jdk5.0
    maven2

    很是郁悶,郁悶了幾天了,只能暫時不用request和session bean了。。。  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問[未登錄] 2008-12-03 16:04 Dragon
    @BeanSoft
    兩者不同了,Struts2 是webwork升級版  回復  更多評論
      
    # re: Rensin3.0.19中不能使用Listener方式配置RequestContextListener支持Spring2中的web作用域的疑問[未登錄] 2014-08-09 20:14 CC
    雖然這么久遠了,但我還是回一個,讓碰到這個問題的兄弟們別走彎路

    程序用spring4.0.5,struts2.3.16.3,listener配置,測試環境tomcat7.0.54上程序正常,生產環境tomcat7.0.52,碰到了樓主一樣的問題,最后升級成tomcat7.0.55就沒問題了,所以在各種框架滿天飛的天下,webserver也要和第三方jar包同步更新,才能抵御隨時可能出現的各種不兼容問題  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲一区二区三区夜色| 亚洲高清中文字幕免费| 亚洲AV成人精品一区二区三区| 亚洲丝袜美腿视频| 中文字幕亚洲乱码熟女一区二区 | 色偷偷噜噜噜亚洲男人| 狼色精品人妻在线视频免费| 亚洲欧美日韩中文无线码| 亚洲国产精品成人精品软件| 久久亚洲精品成人av无码网站| 亚洲无砖砖区免费| 在线观看亚洲电影| 国产成人综合亚洲一区| 99视频在线免费观看| 国产午夜不卡AV免费| 精品一卡2卡三卡4卡免费视频| 免费在线观影网站| 黄页网站免费观看| 亚洲爽爽一区二区三区| 亚洲午夜久久久影院| 亚洲精品自产拍在线观看| 精品亚洲一区二区三区在线播放| 亚洲性在线看高清h片| 91天堂素人精品系列全集亚洲| 亚洲无圣光一区二区| 阿v免费在线观看| 91久久精品国产免费一区| 亚洲毛片免费观看| 啦啦啦中文在线观看电视剧免费版| 三年片在线观看免费大全| 午夜免费福利在线观看| 国产又长又粗又爽免费视频 | 亚洲国产精品无码久久九九| 亚洲精品无码专区2| 亚洲小说区图片区另类春色| 久久精品国产99国产精品亚洲| 丁香婷婷亚洲六月综合色| 亚洲av日韩av永久无码电影| 女人体1963午夜免费视频| 在线免费观看你懂的| 亚洲成a人片在线观看久|