我在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)
...
请让我知道我做错了什么..提前谢谢。