play 2.2.1 - startup(开发模式) - 尝试从已关闭的池中获取连接

时间:2014-02-01 15:12:07

标签: java scheduled-tasks akka playframework-2.2

我在app启动时需要帮助以下异常(Play 2.2.1 / Java): javax.persistence.PersistenceException:java.sql.SQLException:尝试从已关闭的池中获取连接。

[请注意,此异常仅在开发模式下出现。]

我在我的本地PC(Windows)上使用Play 2.2.1,我正在尝试在应用启动时安排2个工作:a)安排一个工作每隔15分钟运行b)安排一个工作在每个午夜运行 我正在使用Akka系统在应用启动时安排这些工作。

覆盖Global.java以启动hook&委托给助手

Global.java
    @Override
    public void onStart(Application app) {
    // schedule jobs
    job.JobScheduler.scheduleJobs();
}

在这里执行实际的安排

    JobScheduler.java
        public static void scheduleJobs() {
                // schedule first job - every 15 mins
                Akka.system().scheduler().schedule(
            Duration.create(0, TimeUnit.MILLISECONDS),
            Duration.create(15, TimeUnit.MINUTES), 
                        new Runnable() {
                public void run() {
                    // some DB stuffs here
                }
            }, Akka.system().dispatcher());


               // schedule second job - every midnight
               Akka.system().scheduler().schedule... more code & DB stuffs
        }

但是我在应用启动时遇到异常堆栈跟踪:

[error] javax.persistence.PersistenceException: java.sql.SQLException: Attempting to [error]obtain a connection from a pool that has already been shutdown
[error]    .
[error]   Stack trace of location where pool was shutdown follows:
[error]     java.lang.Thread.getStackTrace(Unknown Source)
[error]     com.jolbox.bonecp.BoneCP.captureStackTrace(BoneCP.java:543)
[error]     com.jolbox.bonecp.BoneCP.shutdown(BoneCP.java:159)
...

请让我知道我做错了什么..提前谢谢。

0 个答案:

没有答案