概要
Spring Batch でDB2を用いて起動する方法
Spring batchでDBを使用する時、設定はXMLで行われる。
postgresqlで接続するときを例にすると、以下のようになる。
(Spring batch自身がDBを動かすためのDB設定と、起動されるバッチ処理(子プロセス)がDBを動かすための設定の二つが存在する。)
<!-- framework definitions -->
<bean
id="adminDataSource"
class="org.apache.commons.dbcp2.BasicDataSource"
destroy-method="close"
p:driverClassName="org.postgresql.Driver"
p:url="jdbc:postgresql://XXX.XXX.XXX.XXX:XXXX/DBNAME"
p:username="username"
p:password="password" />
<!-- Job-common definitions -->
<bean
id="jobDataSource"
class="org.apache.commons.dbcp2.BasicDataSource"
destroy-method="close"
p:driverClassName="org.postgresql.Driver"
p:url="jdbc:postgresql://XXX.XXX.XXX.XXX:XXXX/DBNAME"
p:username="username"
p:password="password" />
oracleDBやスキーマの定義されていないpostgresqlでは上記の設定で問題ないが、
スキーマ定義が分かれているpostgresqlやDB2に関してはスキーマまで指定しないといけないためSpring batch起動の際にエラーが発生する。
接続方法
DB接続URLに基準となる対象のスキーマ(currentSchema)を指定する。
以下はDB2のスキーマ指定の例
<!-- framework definitions -->
<bean
id="adminDataSource"
class="org.apache.commons.dbcp2.BasicDataSource"
destroy-method="close"
p:driverClassName="com.ibm.db2.jcc.DB2Driver"
p:url="jdbc:db2://XXX.XXX.XXX.XXX:XXXX/DBNAME:currentSchema=defaultSchema;"
p:username="username"
p:password="password" />
<!-- Job-common definitions -->
<bean
id="jobDataSource"
class="org.apache.commons.dbcp2.BasicDataSource"
destroy-method="close"
p:driverClassName="com.ibm.db2.jcc.DB2Driver"
p:url="jdbc:db2://XXX.XXX.XXX.XXX:XXXX/DBNAME:currentSchema=defaultSchema;"
p:username="username"
p:password="password" />


コメントを書く