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