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がどうとか…