M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

shared.xmlのDB接続情報と.kjbファイルのDB接続情報

きょうはshared.xmlについてのメモです。

先日のポストで、Spoon(開発および手動実行ツール)やKitchen(バッチ実行ツール)を起動する際、環境変数KETTLE_HOME.kettleディレクトリの親ディレクトリを指定することで、任意のkettle.propertiesshared.xmlをロードさせることができると述べました。この後者のshared.xmlはデータベース接続を「共有」状態としたときに当該接続情報が記録され、複数のジョブで「共有」できるというものです。

ところでこの「共有」しているデータベースを使ったジョブのファイル(.kjb)をテキストエディタで開いてみるとここにも接続情報が記載されていることがわかります。

...
 <connection>
    <name>pgsql_localhost_dvdrental</name>
    <server>&#x24;&#x7b;PG_SERVER_HOST&#x7d;</server>
    <type>POSTGRESQL</type>
    <access>Native</access>
    <database>dvdrental</database>
    <port>&#x24;&#x7b;PG_SERVER_PORT&#x7d;</port>
    <username>&#x24;&#x7b;PG_USER_ID&#x7d;</username>
    <password>&#x24;&#x7b;PG_USER_PASSWORD&#x7d;</password>
    <servername/>
 ...

では、KETTLE_HOMEshared.xmlに記載された接続情報と.kjbに記載された接続情報はどちらが優先されるのでしょうか? 

KETTLE_HOMEを設定しつつspoon.shを起動してためしてみたところ、優先されるのはshared.xmlの接続情報でした。[ビュー]タブの[データベース接続]の欄に表示される接続情報はあくまでもshared.xmlからロードされる情報で、Spoon上でジョブを実行したときも同じ情報が使用されました。

これはKitchenも同様でkitchen.shでジョブを起動したときもKETTLE_HOMEshared.xmlの情報が優先されました。

「まあそうでなくては困る」という結論ではありますが、上述のようにジョブ・ファイルに冗長化記述されていることを考えれば、この挙動について理解しておくことは重要なことだと思います。

m12i.hatenablog.com