5

私はGlassfishとCDIを注入に使用していますが、(ほとんど)正常に使用しています。Quartzジョブをインジェクションで動作させることができないようです-注釈が付けられたBeanはインジェクションされ@Injectません。

Quartzは、インジェクションの発生を防ぐ、ある種の異なるクラスローダーを使用していますか?

私は自分のweb.xmlでQuartzをそのように構成しています:

<context-param>
    <param-name>quartz:config-file</param-name>
    <param-value>quartz.properties</param-value>
</context-param>
<context-param>
    <param-name>quartz:shutdown-on-unload</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>quartz:wait-on-shutdown</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>quartz:start-scheduler-on-load</param-name>
    <param-value>true</param-value>
</context-param>

<listener>
    <listener-class>
        org.quartz.ee.servlet.QuartzInitializerListener
    </listener-class>
</listener>

私のquartz.propertiesは次のようになります:

org.quartz.scheduler.instanceName = MyScheduler
org.quartz.scheduler.instanceId = 1
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false

org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 3

org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz-config.xml
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
4

3 に答える 3

2

アプリケーションの CDI を使用してジョブ クラスをインスタンス化し、それらを注入する方法を認識している org.quartz.spi.JobFactory の独自の実装を作成する必要があります。

于 2011-01-29T03:10:17.210 に答える
0

githubにはQuartzCDI統合ライブラリがあります。まだ試していません。

于 2011-12-13T05:32:46.647 に答える