WildFly8でJDBCジョブレポジトリを使ってみる
TweetPosted on Saturday Feb 08, 2014 at 04:36PM in Technology
WildFly8.0.0.CR1ではジョブレポジトリがデフォルトではインメモリH2になっているが、スタンドアロンのDBにしてみる。現状H2しかサポートしてないようなのでサーバモードのH2を立ててやってみる
この例では普通のデータソースを使ってますが、バッチから他のデータベースも参照する場合は、XAデータソースにしておかないと問題が起こると思われるので注意
環境
- WildFly8.0.0.CR1
- H2 1.3.175 (2014-01-18)
- Oracle JDK7u51
- OS X 10.9.1
準備
プロジェクト
動かしてみるで作ったプロジェクトをそのまま使う。
H2を立ち上げる
- H2のzipファイルをとってきて展開する
- h2/binに存在するh2.shを実行する
- ブラウザにH2管理コンソールへのログイン画面が表示される。デフォルトでTCP接続のH2にログインする内容になっているのでそのままログインする
- 適当にSQLを実行してみて普通に動いている事を確認する
データソースを作る
jboss-cliで叩くコマンドはこんな感じ。この環境だとH2は最初から入っているようなので特にJDBCドライバのデプロイ等は不要。
data-source add \ --name=JBatchDS \ --driver-name=h2 \ --connection-url=jdbc:h2:tcp://localhost/~/test \ --jndi-name=java:jboss/jdbc/JBatchDS \ --user-name=sa \ --password=
一応接続チェック
[standalone@localhost:9990 /] /subsystem=datasources/data-source=JBatchDS:test-connection-in-pool { "outcome" => "success", "result" => [true] }
ジョブレポジトリを変更
JDBCレポジトリのデータソース名を設定
[standalone@localhost:9990 /] /subsystem=batch/job-repository=jdbc:write-attribute(name=jndi-name, value=java:jboss\/jdbc\/JBatchDS) { "outcome" => "success", "response-headers" => { "operation-requires-reload" => true, "process-state" => "reload-required" } }
job-repository-typeをjdbcに設定
[standalone@localhost:9990 /] /subsystem=batch:write-attribute(name=job-repository-type, value=jdbc) { "outcome" => "success", "response-headers" => { "operation-requires-restart" => true, "process-state" => "restart-required" } }
restart-requiredだそうなので再起動する。
実行してみる
TestServletにアクセス
普通に動いているようです
DBを見てみる
事前にDDLを流したりは一切していないが、H2のWebコンソールから見てみると自動的に必要なテーブル等が作られている
備考
GlassFishにあるlist-batch-jobs的なコマンドがあれば良いのだけどまだ見つけられていない。また調べる
参考文献
Tags: jbatch