【Apache Geronimo2】己に酔っても酒に酔うな【geronimo-web.xml】
俺って天才wwww
IT業界にいると、そんな勘違いをしてしまう瞬間もあるものです(^ω^)
以前、わけ分からなすぎて一度挫折した、Apache Geronimo2ですが、やっと謎が解けましてオープンソースのソフトウェアのデプロイに成功しますた。
こいつは敷居高い。
日本語のドキュメントが全くと言っていいほどないから、俺みたいな頓珍漢英語しかできない日本人には特に難しい。
geronimo-web.xmlってのが全ての鍵を握っていらっしゃいました。
今回デプロイしたのがこれ。
前回はTomcatでのデプロイはすんなり行ったけど、GeronimoではJDBCのクラスパスが通せず、どうしてもうまくいかなかったわけです。
Tomcatでは環境変数「CLASSPATH」が通ってるディレクトリにjarライブラリをぶち込めばおkだったけど、Geronimoでは”Repository”ってのがライブラリの保管場所になるようだ。
こいつがまた、曲者で
/Path/To/geronimo2/repository
にただぶち込めばいいってわけじゃないんですね。
Geronimoの管理コンソールからでもインストールできるんだけど、今回はFreeBSDのportsでインストールしてあるmysql-connector-java.jarを使いたいってことで、このRepositoryの仕組みをハックして突っ込んでみました。
まず、GeronimoのRepository以下の構成はこのようになっております。
/Path/To/geronimo2/repository/(Group)/(Artifact)/(Version)/(Type)
どの項目も適当じゃダメみたい。
例えば、MySQLのJDBCだったら
/Path/To/geronimo2/repository/mysql/mysql-connector-java/5.1.12/mysql-connector-java-5.1.12.jar
のようになります。
Groupのところのmysqlは固定っぽい。
Artifactのところは、jarのファイル名の前方部分と一致するようにしなきゃいけないみたい。
Versionも同じく、ファイル名がバージョンとして扱われるようです。
そして、Typeはファイルの拡張子がタイプとなる模様。
そんなわけで、こんな手順をふんだら、見事に追加できました。
(わかりやすいように実際に打ってたコマンドとはちょっと違いますが。)
#mkdir -p /usr/local/geronimo2/repository/mysql/mysql-connector-java/5.x
#ln -s /usr/local/share/java/classes/mysql-connector-java.jar /usr/local/geronimo2/repository/mysql/mysql-connector/5.x/mysql-connector-java-5.x.jar
元のjarにはバージョンが入ってないのですが、バージョンが無いとダメっぽいので、シンボリックリンク作成時に「5.x」と適当なバージョンを付けてみました。
これでcom.mysql.jdbc.Driverを使用する準備が整いました。
ちなみにネットで調べてると、J/Connectorの使い方でorg.gjt.mm.mysql.Driverなんていうのが出てきますが、これは古いパッケージで現在は非推奨(既に使えないんだっけ?)なので、com.mysql.jdbc.Driverを使いましょう。
そんなわけで、ここまではたしか前回もできた気がする‥。
そして、これを各アプリケーションから使用できるようにする設定‥。
ここがさっぱり。チンプンカンプンでした。
geronimo-web.xmlが限っていうのは薄々感づいてたけど、書き方とかさっぱりわからなかった。
そして今回、JAMWikiをGeronimoに載せて、MSSQLで動かした動作事例があって、geronimo-web.xmlについて記載されてるのを見て、ピンと来ちゃいました。
もちろん英語なんで、単語単位でなんとか読める程度ですが…。
Installation – JAMWiki
Apache Geronimo 2.1.3 Configuration
<web:web-app>のところのxmlnsは、多分なくても動くんじゃないかと思います。
各モジュールをどの標準規格で動かすかのマニュフェストの指定だと思われ。
<dep:moduleId>もいらないかな。タダ、ここは明示しておいた方がデプロイ後のRepository管理が綺麗です。(warもリポジトリに入ります。)
そして非常に重要なのがここ。
<dep:dependencies>
これでどのリポジトリがこのアプリケーションに依存している勝手のを明示してやるようです。
<dep:hidden-class>はよく分からない。隠しクラス?
最終的にこうなりました。
<?xml version="1.0" encoding="UTF-8"?>
<web:web-app xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0"
xmlns:client="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0"
xmlns:conn="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2"
xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2"
xmlns:ejb="http://openejb.apache.org/xml/ns/openejb-jar-2.2"
xmlns:name="http://geronimo.apache.org/xml/ns/naming-1.2"
xmlns:pers="http://java.sun.com/xml/ns/persistence"
xmlns:pkgen="http://openejb.apache.org/xml/ns/pkgen-2.1"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0"
xmlns:web="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1">
<dep:environment>
<dep:moduleId>
<dep:groupId>org</dep:groupId>
<dep:artifactId>jamwiki</dep:artifactId>
<dep:version>0.8</dep:version>
<dep:type>war</dep:type>
</dep:moduleId>
<dep:dependencies>
<dep:dependency>
<dep:groupId>mysql</dep:groupId>
<dep:artifactId>mysql-connector-java</dep:artifactId>
<dep:version>5.x</dep:version>
<dep:type>jar</dep:type>
</dep:dependency>
</dep:dependencies>
<dep:hidden-classes>
<dep:filter>org.apache.commons.lang</dep:filter>
</dep:hidden-classes>
</dep:environment>
<web:context-root>/</web:context-root>
<virtual-host>wiki.makimaki.jp</virtual-host>
</web:web-app>
今回はVirtual Hostで運用したいため、<virtual-host>タグを付加しました。
ここまでくれば、このぐらいの調査は英語のドキュメントでも朝飯前ww
そんなわけで、上記してあるドメインで今回デプロイしたJAMWikiが見れますよw
ちなみに、今回GeronimoのServlet ContainerにはTomcatではなくJettyを使用しています。
さすがにもう自宅サーバのメモリーイッパイイッパイですw
Tomcatはなんか秋田市、Jetty使ってみるのもいいかなってw
Google AppsとかもJettyらしいしね。
しかし、JavaはTomcatでもJettyでも、高負荷時に弱いですな。
JAMWikiのインストールの時、一回Geronimoがダウンしましたw
まぁ、メモリー食い過ぎなのが悪いんだけど。
#top
last pid: 57495; load averages: 1.00, 0.96, 0.52 up 1+09:56:27 21:46:17 504 processes: 1 running, 503 sleeping CPU: 5.3% user, 0.0% nice, 10.2% system, 0.3% interrupt, 84.2% idle Mem: 1088M Active, 629M Inact, 211M Wired, 11M Cache, 112M Buf, 56M Free Swap: 4045M Total, 4045M Free
オワタ\(^o^)/
たぶん前に適当に行ったFreeBSDのチューニングが悪影響な気がするから、/etc/sysctlの設定とかそのうち見直してみたい。
No related posts.

コメントはまだありません。