Tugboat.GTD on JBoss AS

Jiemamy Projectで Tugboat.GTD を使いたかった。しかし、JIRAとTugboat.GTDは、Tomcat上で同時に動かす事ができなかった。*1

で、まぁ、先日 RedHat社のJBossレーニングを受講した為、JiemamyアプリケーションサーバTomcatからJBoss ASに移行しようと企んだ訳です。

JIRAに関しては、ドキュメント通りにインストール完了。

問題は Tugboat の方でした。Tomcatと同じようにして、デプロイする。と、例外がとぶとぶw ClassCastExceptionとか出て、デプロイに失敗する。

環境は JBoss AS 4.2.3.GA & Tugboat.GTD 0.9.3-4 WAR

というわけで、nekop に相談だ。


Tugboat(というか、内部で使用しているTeeda)は、基本的にTomcatターゲットで作られているみたい。JSFインターフェイスと実装は、基本的にAPサーバ側が持っているべきものであって、Webアプリ側で持つものではないとのこと。

まぁ、TomcatJSFなんか持ってないので、Teeda-coreは javax.faces パッケージの型を持っているんだな。Tomcatのための親切心。

だが、JBoss にデプロイするとなると、これが問題を引き起こす。JBossが既にJSF実装を持っているからねー。とのこと。なるほど。

色々試みたのがコレ。何とも乱暴な作戦だが、まぁ、どれも敢えなく撃沈。

  • teeda-coreからjavax.facesパッケージを消してしまおうww」→ 撃沈
  • 「javax.faces.internalパッケージは残してみようぜw」→ 撃沈
  • 「っていうか、teeda-core.jar 消しちゃってみようぜ…」→ 撃沈

もはや無理か… と諦め掛けた時。

daisuke-m: このアプリだけ、jbossのクラスパスをイジる、とか出来ない?
nekop: できないこともないけど
nekop: ちとまち
nekop: http://www.jboss.org/community/docs/DOC-10182

来ました! Tugboatの web.xml に以下の4行追加です。

<context-param>
     <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
     <param-value>true</param-value>
</context-param>

warファイルがJSF実装を持ってるからJBossによる実装は使わないでネ、という指定みたいですね。上記URLの説明は「MyFaces実装を使うには?」という趣旨ですが、Teedaにも応用できるようです。

というわけで、無事、Tugboat.GTD on JBoss AS を実現することができました。

Skypeごしに、親切に色々教えてくれた nekop に感謝! ありがとう!*2

サービスのおそうじ

一件落着後、要らないサービスを削ることも教えてくれました。このJBoss上では、JIRAとTugboatしか動いていないので、色々要らないサービスがあるんですね。

ただ、俺みたいにシロウトだと、どれ削っていいか分からない。

jboss-web.deployer
jbossjca-service.xml
jboss-local-jdbc.rar
jmx-invoker-service.xml

以外全部消していいよ

とのことなので、server/default/deploy 内に上記4つとTugboat, JIRAだけを残して、あとは server/default/deploy.bak に移動させてみた。

順調に動いてますよーー。

*1:JIRA on Tomcatって、tomcatの共用ライブラリにjarを追加させるんだよねー…。そいつと衝突するっぽい。

*2:焼肉喰いにいかにゃ。