ServletなDeployを試してみた。

 そのうちそのうちと言っていたけれども、ついに重い腰を上げてやってみた。と言っても、トーフサロンのsuzukiさんもおっしゃられていた様に非常にあっさりとできてしまい逆に面白くなかった(←えーっ)。
 実際にテストしたのは普段使っているMac上で、未だJ2SE1.4辺りという事もありTomcat4.1系との組み合わせです(←Tomcatは事前にインストールされている事とします)。始めからServlet運用を前提としてProjectを作成〜なんて記事は近く某所で公開されるので、うちは既存のWebObjectsアプリケーションでのServler運用への切り替えって事でれいあれさん.woaを動かしてみました。

 まず、WebObjectsアプリケーションをServlet化する為に必要なフレームワーク、JavaWOJSPServlet.framework(/System/Library/Frameworks/JavaWOJSPServlet.framework)をプロジェクトへ追加します。

 次にターゲットの設定を幾つか調整します。SERVLET_DEPLOY_LICENSEに
/System/Library/Frameworks/JavaWebObjects.framework/Resources/License.keyから取り出したライセンスキーを、SERVLET_TRUE_WARにYESを、SERVLET_WEBAPPS_DIRにTomcatのアプリケーション配置場所を(←ビルドを行うと配置場所へいきなりインストールされるので)それぞれ設定します。

 実はこれだけ。後はビルドして、必要ならばTomcatを起動してhttp://localhost:8080/AppName/WebObjects/AppName.woaなどへアクセスすれば(←もちろん環境に因ります)普通に表示されるはず。そして、この設定でビルドを行うと一切WebObjectsのインストールの類いは必要ありません、必要なフレームワークも一切合切内包して.warファイルを作成してくれます。素晴らしい、まさにお手軽。

 少しだけ注意点もあって、一つはPropertiesファイルの内容が有効にならない事、もう一つは自前のWebObjectsフレームワーク等を使っている場合、そのフレームワークに含まれる.jarファイルを/Library/WebObjects/libへコピーもしくはリンクしておかないとビルド時に転ける事(←もしかすると、ちゃんとフレームワークをインストールすると自動的に入るのかしらん。いつも、コピーして使っているもので)。

 最後にもう一つ、実際にこの様な形で私がLinux等で運用した場合、ライセンス的にグレー、と言うかクロな事。Mac OS X ServerにはWebObjectsの運用ライセンスが含まれているのでそれを一本持っていれば大丈夫だと思うのだけど、残念ながら私は持っていない。5.2が引き続き販売されているけれど、そのライセンスキーでは動作しないので現状ではMac OS X Serverを購入するしか方法がないっぽい。が、それを買っちゃったらMac OS X Server上で普通に素のWebObjectsアプリケーションとして運用した方がいいに決まっている様な……、とかも思ってしまうね。
 開発環境のライセンスは実質フリーで(←Xcode付属のため)、含まれているライセンスキーも無制限運用可能なものなのだけどなぁ……。どうせ色々と制限があるのだから(←マルチインスタンス不可とかスレッドセーフ無保証とか)いっそフリーにすればいいのに、「スケーラビリティが必要になったらMac OS X Server買ってね」とかいう路線で。ServletがDeploy可能なサーバなら無料で運用できるとなれば、少しくらいは普及に貢献しませんかねぇ。ま、普及させる気も(略)。