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アプリ側で持つものではないとのこと。
まぁ、TomcatはJSFなんか持ってないので、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 に移動させてみた。
順調に動いてますよーー。