首页 java三层 使用Spring AOP对service层进行日志记录 No session found for current thread

使用Spring AOP对service层进行日志记录 No session found for current thread

  如题,使用Spring AOP对service层进行日志记录,在日志记录类中调用dao层方法操作数据库,但…

 

如题,使用Spring AOP对service层进行日志记录,在日志记录类中调用dao层方法操作数据库,但是调用时一直报No Session found for current thread异常,配置文件如下,看起来好像是没有对LogService进行实物管理,导致没有注入SessionFactory,有没有人遇到过类似的情况,求指导。

 

正常调用的事务管理是成功的,只是在原有的基础上添加aop日志记录。也只有logService调用的时候会报这个异常,另外我发现如果在logService中调用其他dao层,即使logService中的方法还没被触发,被调用的dao层都会报No Session found for current thread异常,这中间是不是涉及到类似于初始化顺序什么的原因。

 

开始进行日志改造的时候给自己留了一个后备方案,就是在logService中自己进行jdbc连接,不使用框架的数据库操作。笨办法。
一直在找资料解决这个问题:通过action调用service,service调用dao可以成功,但是在配置文件中直接调用Service就会报No session found for current thread错误,这次是在<aop:aspect> 标签中ref的aspectBean,以前研究SpringSecurity时也碰到过这种情况,通过断点跟踪调试,bean依赖的dao确实注入了,dao层也有了SessionFactory对象,但是当前线程没有绑定Session。有点怀疑是不是配置文件引用bean和添加事务处理两者执行顺序的原因,但毕竟对细节不了解,只是揣测。

 

决绝办法

public Session getSession() {
    return sessionFactory.getCurrentSession();
}

 

改为

public Session getSession() {
    try {
        return sessionFactory.getCurrentSession();
    } catch (Exception e) {
        System.out
                .println("Open new Session with sessionFactory.openSession() method, Remenber to close it!");
        return sessionFactory.openSession();
    }
}

 

问题是使用openSession()打开新的Session需要自己手动关闭~而在哪里调用会打开新的Session就只有自己知道了。就这样结贴了,以后找到真正原因了再看。

http://bbs.csdn.net/topics/391039812

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

Hibernate 中对象 set 属性时自动保存入库的问题

Hibernate 中对象 set 属性时自动保存入库的问题

遇到这个问题了 背景 在某个项目中,通过 Heibernate 查出某个对象后,对属性进行了 set 操作,并没有进行 ...
hibernate中@DynamicInsert和@DynamicUpdate

hibernate中@DynamicInsert和@DynamicUpdate

在Hibernate中可以利用@DynamicInsert和@DynamicUpdate生成动态SQL语句,即在插入和修...
redis简单命令

redis简单命令

linux进入redis redis-cli -p 6379 查询 config get requirepass # 对...
“”字符串解析为date报错

“”字符串解析为date报错

  Spring3MVC中Controller层接受前端页面的参数有一种情况: @RequestMapping...
Restrictions 非空验证

Restrictions 非空验证

Hibernate-Restrictions用法 Restrictions or用法   criteria.a...
返回顶部