2012年9月21日金曜日

WebObjects + Heroku:その3・WOのWARを作る

■ProjectWOnderのセットアップ■

ここを参考にして進めます→「Project Wonder Installation

Step1-4までありますが、3まででOKです。「Step 4:  Import Project Wonder into your Eclipse workspace」はちょっと説明が必要なのでこの後の節で。

■WOnderのセットアップ■

大まかな手順は
  1. WOnderソースコードのダウンロード
  2. Java環境変数の確認と設定
  3. ビルド&インストール
です。前提として、以下の作業はhomeディレクトリ直下で行いますが、home下であればどこでも結構です。

まずはソースをダウンロードします。「Getting the Wonder Source Code」を参考にしました。

・Homeディレクトリへ移動
    $ cd

・WOnderソースコードのダウンロード
    $ git clone git://github.com/projectwonder/wonder.git WonderSource
    $ cd WonderSource

・最新版の確認とダウンロード
     $ git checkout integration


次に、javacの環境設定の確認です。ターミナルで
    $ setenv | grep JAVA_TOOL_OPTIONS
    JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
    $

のようにエンコーディングが指定されていればいいのですが、ない場合には適当なエディタで.csrcを開き、 setenv JAVA_TOOL_OPTIONS -Dfile.encoding=UTF-8 と追加します。追加したらシェルを再起動します。ターミナルごと再起動するか新しいウィンドウを開いてもOKです。上記のsetenv...を使って、設定が反映されていることを確認してください。

では、ビルドとインストールです。ターミナルから
    $ ant frameworks; sudo ant frameworks.install

を実行します。数分かかりますが、エラーやワーニングが出ていないか注意してください。buildが終わったところで一旦動きが止まり、sudoのパスワードを求められます。最後に
    BUILD SUCCESSFUL
    Total time: 25 seconds

が表示されれば終わりです。こう書くとあっという間なんですが…いろいろ試行錯誤があって数日ツブれました…いや、愚痴ですけどね。

■WOアプリを作る■

ではいよいよWOのアプリを作ります。

Eclipseで File>New>Wonder Application を選びます。Wonder Applicationが選択肢として出てこない場合には、PerspectiveをWOLipsに切り替えてからもう一度。プロジェクト名は WOHeroku にしてFinishボタンをクリックします。

プロジェクトを開き、Sources>your.app>Application.javaを右クリックし、Run As>WO Applicationを選びます。


コンソールに起動ログが真っ赤な字で表示されますが、お気になさらず。そのまま数秒後ブラウザ上に Hello World が表示されます。これでWOアプリが動くことは確認できました。


■ServletとしてDeployし、Herokuへ■

プロジェクト名を右クリックし、Properties>WOLips Deploymentを選びます。ここで「Servlet Deployment」と「Autogenerate web.xml」をチェックし、OKをクリックします。この時点でHerokuで動かせないことに気づきました。SDDオプションがありません。SDDでないとWOFが組み込まれないので…。

プロジェクトメニューを右クリックし、WOLips Ant Tools>Installを選びます。ビルドが行われますが、通常のビルドよりも時間がかかります。問題がなければ数分後、BUILD SUCCESSFULの表示が出てApplicationディレクトリにWOHerokuとWOHeroku.woaディレクトリ, WOHeroku.warが出来ているはずです。


が、私の環境もそうでしたが、/Library/WebObjects/Applicationディレクトリのパーミッションがユーザに対して許可されていないとBUILD FAILEDになります。対処方法は二つ、開発マシン上なら1、運用マシン上でビルドも行うのであれば2でしょうか。

1.パーミッションを変更する


標準的なインストール環境であれば、ターミナルで
    $ cd /Library/WebObjects/Versions/WebObjects543/Library/WebObjects
    $ sudo chmod 775 Applications/
    Password:
    $ sudo chgrp staff Applications/

などと設定します。ともかく、自分がApplicationに書き込みできるような権限を付与します。775とは古いねしかしorz

2.インストール先を変更する


プロジェクトWOHerokuディレクトリの直下にある build.properties に dist.dir=dest という一行を追加します。こうすると、ビルドした結果がWOHerokuディレクトリ直下のdestディレクトリに変更されます。

これでWOHeroku.warができました! ここまでホントに長かった…。

■HerokuへDeployment、できません■

ターミナルで、WOHeroku.warのあるディレクトリへ移動し、デプロイします。

    $ heroku deploy:war --war WOHeroku.war
     !    No app specified.
     !    Run this command from an app folder or specify which app to use with --app <app name>
    $
    $ heroku deploy:war --war WOHeroku.war -app WOHeroku
     !    No app specified.
     !    Run this command from an app folder or specify which app to use with --app <app name>
    $

と、いうことでapplicationとして認識してもらえません。mavenさんでWOFも送り込むようなpom.xmlを書いたりすれば技術的には可能だと思いますが、これからmavenさんを勉強するスキルがありません。

ごめんなさい。

ただ、今後もWOを趣味程度にいじっていこうと思ってます。最近会社にもMacが入ってXcode三昧だったりするので、家と会社では違うことをやらないとね。

0 件のコメント:

コメントを投稿