StatisticsCollector

時間が出来たので、JBossのStatisticsCollectorの問題を見て行こうと思う。
前回がEJB3環境だったので、問題を簡単にするためJ2EE1.4環境で再現する。

[環境]
JDK5.0_05
JBoss:4.0.2
サンプルアプリ:J2EE Tutorial付属のbankアプリケーション


[デプロイ]
statscollector-service.xmlのBindName(アプリケーションが参照するデータソースJNDI名)をjava:/DefaultDSに、TargetName(統計対象のデータソースJNDI名)をjava:/DafaultDS_に設定。
更に、hsqldb-ds.xmlのデータソース名をDefaultDSからDefaultDS_に変更。
図にすると以下のような参照関係になる。

[bank] →  DefaultDS → [statscollector] → DefaultDS_ → [hsqldb-ds]

起動中に以下のエラーが発生。

org.jboss.deployment.DeploymentException: type-mapping is not initialized: java:/DefaultDS was not deployed or type-mapping was not configured.

type-mappingに問題ありそうなので、とりあえずhsqldb-ds.xmlのmetadataタグをコメントアウト

<metadata>
  <type-mapping>Hypersonic SQL</type-mapping>
</metadata>

事象変わらず。


DefaultDSに依存するサービスがいくつかあるが、DafaultDSの名前をDefaultDS_に変更したためにJMXへの登録名が変わり、サービスによっては正常に動作しないためと想定。特にejb-deployer.xmlに影響がありそう。

よって、HSQL側のデータソースJNDI名DefaultDSはそのままにして、アプリケーション側のデータソース参照名をDefaultDS_に変更。


事象変わらず。


type-mappingが取れないとのメッセージに従い、jbosscmp-jdbc.xmlのdefauls要素ででマッピングを明示的に指定。

<datasource-mapping>Hypersonic SQL</datasource-mapping>

今度はうまく行った。
(既存のデフォルト値を上書きしただけであり、デフォルト値は存在するはずなので、これはこれでおかしい。)

やはりトランザクション名がSQL文になっている。
なぜメソッド名にならないのかから調査していく。