z__leo 2015-09-11 07:35 采纳率: 50%
浏览 2348
已采纳

使用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又进不到监听器中的断点处,请各位大神帮帮忙,怎样解决这个问题,非常感谢!![![图片说明](https://img-ask.csdn.net/upload/201509/11/1441956886_219909.png)图片说明](https://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)

  • 写回答

2条回答 默认 最新

  • 安逸的萝卜 2015-09-11 09:56
    关注

    Web容器启动的时候就是通过监听来管理Bean的。在监听HttpSessionListener是还未完成Bean的注入,可以使用
    WebApplicationContext wb =WebApplicationContextUtils.getWebApplicationContext(arg0.getSession().getServletContext());
    userService = (UserService)wb.getBean("userService");
    来获取bean

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?