2012年9月20日木曜日

WebObjects + Heroku:その2・WARを直接Herokuへ

■前回の続き■

前回はHerokuのアカウント取得、RubyサンプルのHerokuへのデプロイ、Tomcatのインストール、TomcatサンプルのHerokuへのデプロイ…まで済ませました。今回は下記の通り、ローカルでビルドしたWARを直接Herokuへデプロイして動かすところまで。

  • Eclipse+Tomcat
  • TomcatプロジェクトからWARを作成
  • HerokuへDeployment

■Eclipse+Tomcat■

EclipseでTomcatアプリ開発」を参考にしました。うーむデザインに時代を感じる…。

大まかな流れとしては、
  1. EclipseにTomcatプラグインを入れる
  2. EclipseからTomcatが起動・終了できることを確認する
  3. 新規にJava/Tomcatプロジェクトを作り、上記サンプルソースを貼ってEclipseのDebugまたはRunボタンをクリック→コンソールにエラーが出ないことを確認
  4. ブラウザでhttp://localhost:8080/アプリ名/servlet/helloを表示し、Hello, World!
最後のところでURLでちょっとハマりました。TomcatのManager画面にはアプリ名が表示されているのですが、そこをクリックしてもnot foundになってしまう。てっきりTomcatの設定の問題かとあちこちググったりしても思い当たらない。で、上記のページをよく見直したら、URLはアプリ名+web.xmlのurl-patternになっていました。素人はこういうところでハマるから困ったもんです。

ともかく、EclipseでTomcatアプリを作って動かすところまではOK。

■TomcatプロジェクトからWARを作成■

Tomcat JavaプロジェクトをWARにするのは:
  1. プロジェクトを右クリック>Properties
  2. Tomcat>WARエクスポート設定タブ

ここで「エクスポートするWARファイル」の出力先パスを指定します。私の環境ではなぜか「参照」ボタンからファイルダイアログを指定してもパスを選べなかったので、出力先をフルパスで入力し、OKをクリックします。

なお、「.javaファイルをエクスポート」してしまうとソースも一緒にエクスポートされてしまうのでご注意を。それにしても私の環境は日本語化していないのに、どうしてここだけ日本語なんでしょ?


続いて、プロジェクトを右クリック>Tomcat プロジェクト>


を選びます。さっき指定したところにWARができているはずです。


ということで、このwarを直接HerokuへPushします。

■WARをHerokuへDeployment■

参考にしたのはここです→「Getting started with WAR deployment on Heroku

記事にもありますが、Heroku toolbeltのインストールとHeroku Accountが必要です。またHerokuのバージョンは2.24.0以上が必要です。

まずツールをセットアップします。これはターミナルで以下の通りタイプするだけです。
    $ heroku plugins:install https://github.com/heroku/heroku-deploy

あとは、さっき作ったTestTomcat.warの置いてあるディレクトリに移動してから、HerokuにDeployするだけです。
    $ cd
    $ heroku deploy:war --war TestTomcat.war
    $ heroku open

…ここでブラウザが開きますが、エラーが出ます。


泣いてはいけません。ローカルで走らせた時と同様にブラウザ上のURL末尾に /servelet/hello/ を追加して再表示します。今度こそHello Worldが表示されます。って書くと2行だけど、実際は/servlet/hello/をすっかり忘れてて数時間グーグル先生と旅をしていまいたorz

ということで、次回いよいよWebObjectsのWARファイルを作って、Herokuへデプロイします。その前にPostgreSQLに対応したTomcatサンプルを作ってHerokuで動くことを確認したら?という声が聞こえますが、TomcatでのDB取り扱いを勉強しても将来おそらく使うことはないと思うので省略します。

その1でも書きましたが、WOはHerokuにはデプロイはできません。ただ、日本語のMac環境にWonder framework入れようとするとコケるので、その辺の情報提供としてその3を公開します。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。