JBossAS7 データソース設定 WebコンソールとCLIの違い

JBossAS7でEJBのコンテナ管理トランザクションが動かないことではまっていたが、WebコンソールとCLIでJTAを有効にするかどうかのデフォルトが違ったのが原因だったようだ。

Webコンソールの場合

f:id:n_agetsuma:20130204231116p:plain

Webコンソールから作成すると、デフォルトでUse JTA?はfalseになっている。この属性がfalseになっていると、データソースから取得したコネクションはautocommit=trueになっていた。このため、EJBのコンテナ管理トランザクションがうまく動かず、insert/update/deleteするとEJBトランザクション管理を待たずして即時にコミットされていた。

standalone.xmlからもjta属性がfalseになっていることが確認できる。

<datasource jta="false" jndi-name="java:/test" pool-name="test" use-ccm="false">

CLIの場合

CLIのdatasource addコマンドで追加した場合は、jta属性は設定されず、デフォルトのtrueが適用されている。

standalone.xml

<datasource jndi-name="java:/test" pool-name="test">

もちろん、Webコンソールでデータソースを作成したあとに、Use JTAにチェックを入れると有効にすることもできる。しかし忘れそうなので、今後からはまらないようにCLIを使おうと思う。