3

デフォルトの Quartz.properties ファイルを長時間ロードしないという問題を解決しようとしました。誰かがここで手を貸してくれることを願っています。どうもありがとう!

基本的に、私はこの問題に関する多くの投稿を読みましたが、それらの解決策は私のケースを解決しませんでした. WEB-INF/classes の下に Quartz.properties ファイルを配置しました。以下は、コンテキスト リスナーを使用した web.xml の構成です。

<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>true</param-value>
</context-param>

<context-param>
   <param-name>quartz:start-on-load</param-name>
   <param-value>true</param-value>
</context-param>

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

結果はまだ次のように表示されました。

[INFO] 18 Feb 06:37:29.218 PM main [org.quartz.impl.StdSchedulerFactory]
Using default implementation for ThreadExecutor

[INFO] 18 Feb 06:37:29.265 PM main [org.quartz.core.SchedulerSignalerImpl]
Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl

[INFO] 18 Feb 06:37:29.265 PM main [org.quartz.core.QuartzScheduler]
Quartz Scheduler v.2.1.6 created.

[INFO] 18 Feb 06:37:29.265 PM main [org.quartz.simpl.RAMJobStore]
RAMJobStore initialized.

[INFO] 18 Feb 06:37:29.281 PM main [org.quartz.core.QuartzScheduler]
Scheduler meta-data: Quartz Scheduler (v2.1.6) 'MyQuartzTest' with instanceId       'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 12 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.

[INFO] 18 Feb 06:37:29.281 PM main [org.quartz.impl.StdSchedulerFactory]
Quartz scheduler 'MyQuartzTest' initialized from default resource file in Quartz package: 'quartz.properties'

[INFO] 18 Feb 06:37:29.281 PM main [org.quartz.impl.StdSchedulerFactory]
Quartz scheduler version: 2.1.6

[INFO] 18 Feb 06:37:29.281 PM main [org.quartz.core.QuartzScheduler]
Scheduler MyQuartzTest_$_NON_CLUSTERED started.

[INFO] 18 Feb 06:37:29.312 PM MyQuartzTest_Worker-1  [org.quartz.examples.example1.HelloJob]
Hello World! - Mon Feb 18 18:37:29 GMT+08:00 2013

[INFO] 18 Feb 06:38:09.296 PM MyQuartzTest_Worker-2 [org.quartz.examples.example1.HelloJob]
Hello World! - Mon Feb 18 18:38:09 GMT+08:00 2013

[INFO] 18 Feb 06:38:29.296 PM main [org.quartz.core.QuartzScheduler]
Scheduler MyQuartzTest_$_NON_CLUSTERED shutting down.

[INFO] 18 Feb 06:38:29.296 PM main [org.quartz.core.QuartzScheduler]
Scheduler MyQuartzTest_$_NON_CLUSTERED paused.

[INFO] 18 Feb 06:38:29.296 PM main [org.quartz.core.QuartzScheduler]
Scheduler MyQuartzTest_$_NON_CLUSTERED shutdown complete.

私が持っているもう 1 つの混乱は、それが実際にデフォルトの Quartz.properties ファイルをロードしていた場合、カスタマイズした Quartz.properties ファイルに基づいてスレッド プールとスケジューラ名が適切に設定されているのはなぜですか?

また、Quartz の公式ドキュメント: QuartzInitializerListnerに基づいて、 Quartz.properties ファイルに別のパスを設定しようとしました。例えば:

<context-param>
     <param-name>quartz:config-file</param-name>
     <param-value>/MyProject/WEB-INF/my_quartz.properties</param-value>
</context-param>

結果はさらに悪いことを示しました。完全にデフォルト設定になります。したがって、私は今かなり迷っています。このシナリオの根本的な原因を詳しく説明してください。どうもありがとうございました!

4

1 に答える 1

1

自分のリソース フォルダー (src/main/resources)にQuartz.propertiesを配置することで、この問題を修正しました。

コンテキスト パラメータは次のようになります。

<context-param>
     <param-name>quartz:config-file</param-name>
     <param-value>quartz.properties</param-value>
</context-param>

Quartz のコードを見てみましょう。

InputStream is = null;
Properties props = new Properties();
is = Thread.currentThread().getContextClassLoader().getResourceAsStream(filename);

ここで、filenameはプロパティ ファイルです。

そのため、ファイルをストリームとして取得しようとします。Java ドキュメントを確認してください:

https://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html

... 楽しんで

于 2016-07-08T21:30:27.820 に答える