java - 非托管线程 Spring Quartz Websphere Hibernate

标签 java hibernate spring websphere quartz-scheduler

看来我们使用 Quartz - JDBCJobStore 以及 Spring、Hibernate 和 Websphere 的实现正在抛出非托管线程。

我读了一些书,发现了一篇来自 IBM 的技术文章,指出将 Quartz 与 Spring 一起使用会导致这种情况。他们建议使用 CommnonJ 来解决这个问题。

我做了一些进一步的研究,到目前为止我看到的唯一例子都是处理不在数据库中的计划旧 JobStore。

所以,我想知道是否有人有解决此问题的示例。

谢谢

最佳答案

我们有一个可行的解决方案(实际上有两个)。

1) 更改 quartz 源代码以将 WorkManager 守护线程用作主调度程序线程。它可以工作,但需要更换夸脱。我们没有使用它,因为我们不想维护一个被黑的 quartz 版本。 (这让我想起了,我本来打算把这个提交给项目的,但完全忘记了)

2) 创建一个 WorkManagerThreadPool 用作 quartz 线程池。实现 quartz ThreadPool 的接口(interface),以便在 quartz 中触发的每个任务都包装在一个 commonj Work 对象中,然后在 WorkManager 中进行调度。关键是 WorkManagerThreadPool 中的 WorkManager 必须在调度程序启动之前从 Java EE 线程(例如 servlet 初始化)进行初始化。然后 WorkManagerThreadPool 必须创建一个守护线程,该线程将通过创建和调度新的 Work 对象来处理所有计划的任务。这样,调度程序(在它自己的线程上)将任务传递给托管线程(工作守护进程)。

不简单,不幸的是我没有现成的代码可以包含。

关于java - 非托管线程 Spring Quartz Websphere Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/175880/

相关文章:

JavaFX 2 Pane 动态调整大小

java - 在java中,Tcp Socket在一段时间后开始断开连接

java - 如何将 getRealPath ("/") 路径从 .metadata 更改为 WEB-INF

java - testng 类中的 Spring @ContextConfiguration 测试配置每个测试类只创建一次 beans,而不是每个测试

java - 尝试在多个实例上运行批处理作业时出现 DuplicateKey 异常

java - 为什么 XX :MaxDirectMemorySize can't limit Unsafe. 分配内存?

java - 尽管数组可能尚未初始化,但如何使我的代码编译无错误?

java - 使用 JPA 注释进行 Hibernate 映射 : Could not determine type

java - 通过 Hibernate Projections on Entity with ManyToOne 关系在 SQL 查询中使用更少的列

hibernate - grails/groovy 域类中 TimeDuration 的 Hibernate 类型是否正确?