【问题标题】:Spring UnknownServiceException春天未知服务异常
【发布时间】:2017-06-13 11:01:34
【问题描述】:

我在访问@Transactional 服务的单独线程中安排了任务。 在这个任务中,我尝试访问这样的方法

List<Obj> objects = new ArrayList<Obj>(objService.getObjWithStatus(Status.PROCESSING));

有时会出现异常

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:544)

Caused by: org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]

我尝试在所有线程上同步对服务的访问,但异常仍然随机发生。有什么办法可以防止这种错误发生吗?

【问题讨论】:

    标签: java spring multithreading hibernate spring-mvc


    【解决方案1】:

    似乎 spring 不会在退出时关闭计划任务,并且它们会在没有上下文的情况下继续运行。添加

    @PreDestroy
    private void destroyListener() {
        synchronized (this) {
            scheduledTask.cancel(false);
        }
    }
    

    似乎解决了这个问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 2021-10-15
      • 2013-04-14
      • 1970-01-01
      相关资源
      最近更新 更多