程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> session-使用Session監聽器無法監聽到,各位大神幫幫忙

session-使用Session監聽器無法監聽到,各位大神幫幫忙

編輯:編程綜合問答
使用Session監聽器無法監聽到,各位大神幫幫忙

圖片說明我想做一個Session監聽器,用來監聽Session銷毀和超時的狀態,每次銷毀時,執行修改數據庫數據的一個方法,但是監聽器實現HttpSessionListener,Tomcat啟動不起來,報錯嚴重: Error configuring application listener of class com.fh.listener.SessionListener
javax.naming.NamingException: Cannot create resource instance;如果監聽器繼承SessionListenerAdapter,開始Session和關閉Session又進不到監聽器中的斷點處,請各位大神幫幫忙,怎樣解決這個問題,非常感謝!![![圖片說明](http://img.ask.csdn.net/upload/201509/11/1441956886_219909.png)圖片說明](http://img.ask.csdn.net/upload/201509/11/1441956876_99092.png)圖片說明

錯誤代碼
嚴重: Error configuring application listener of class com.fh.listener.SessionListener
javax.naming.NamingException: Cannot create resource instance
at org.apache.naming.factory.ResourceEnvFactory.getObjectInstance(ResourceEnvFactory.java:115)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
at org.apache.naming.NamingContext.lookup(NamingContext.java:842)
at org.apache.naming.NamingContext.lookup(NamingContext.java:167)
at org.apache.catalina.core.DefaultInstanceManager.lookupFieldResource(DefaultInstanceManager.java:557)
at org.apache.catalina.core.DefaultInstanceManager.processAnnotations(DefaultInstanceManager.java:449)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:135)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:116)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4933)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5531)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

最佳回答:


Web容器啟動的時候就是通過監聽來管理Bean的。在監聽HttpSessionListener是還未完成Bean的注入,可以使用
WebApplicationContext wb =WebApplicationContextUtils.getWebApplicationContext(arg0.getSession().getServletContext());
userService = (UserService)wb.getBean("userService");
來獲取bean

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved