JobStores

数あるJobStoreの違いを理解し、適切な選択を行いなさいと書いてあるっぽい。プロパティファイルで設定ができるらしい。SchedulerFactoryなんてのも出てきてる。JobStoreは裏方さんだからおまえのコード中で直接使うなと言ってらっしゃる。結局何者なのかはまだわからない…

  • >RAMJobStore

 設定が簡単でめちゃっ速なんだとさ。でもアプリが終了しちゃうと消えちゃうのが短所なんだとさ。そりゃメモリに格納してるんだもの。んで、

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

てな感じで設定するんだとさ。って設定ファイルがあるっぽいけど何それ?で、設定はこれだから心配スンナとおっしゃってます。

  • >JDBCJobStrore

 RAMよりちょっと複雑でちょっと遅いんだそうだ。でもそんなめちゃくちゃ遅いってわけではないのよ、とWindowsと古いSolarisで比較している。んで、使えるDBは

 Oracle, MySQL, MS SQLServer2000, HSQLDB, PostreSQL and DB2

てな感じ。JDBCJobStoreを使うには、
 1.テーブルの作成(SQLはdocs/dbTablesにある)
 2.トランザクション管理方法の決定
  大抵はJobStoreTXを使うんだと。アプリサーバにまかせる場合はJobStoreCMTを
  使うようだ。
 3.DataSourceの設定
  プロパティファイルで設定するんだってさ。Quartz自身での設定とJNDIからの取得が
  あるんだってさ。docs/configにサンプルがあるから参考にしろと。んで、

 org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
 #org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreCMT

で、DriverDelegateなんてのがJDBCで上手いことやるにあったて必要で、StdJDBCDelegate で大抵は上手くいくけども特殊な場合として何個かDB固有の実装が用意してある。詳細はorg.quartz.impl.jdbcjobstoreパッケージを参照のこと。

 org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate

でテーブル名のプレフィックスを指定する。

 org.quartz.jobStore.tablePrefix = QRTZ_

また、DataSoruceの名前を付ける。

  org.quartz.jobStore.dataSource = myDS

んでこの名前を使って、こんな感じで設定する。

 org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
 org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@10.0.1.23:1521:demodb
 org.quartz.dataSource.myDS.user = mops_proto
 org.quartz.dataSource.myDS.password = mops_proto
 org.quartz.dataSource.myDS.maxConnections = 5

んで、org.quartz.jobStore.usePropertiesってのはデフォルトfalseなんだけど、trueにするとJobDataMapsには文字列、つまり名前/値ペアで管理するってのをJDBCJobStoreに通知するんだけど何のことやらわからない〜。もっと複雑なオブジェクトで扱う場合はBLOBがどうとか…