2012-05-30

EclipseでのGWT(DevMode)+Tomcatアプリケーション開発

EclipseでGWTのDevModeを使いつつ、サーバをTomcatにする方法がわかりました。特にマニアックな設定というわけではない感じですが、意外とネットで見つからず手間がかかりました。手順をおって説明します。


(1)Google Webアプリケーションとしてプロジェクトを作成する
これは普通に作成してください。ただし、GAEは無効にしてください。サンプルコード自動生成もONにしておくといいでしょう。後の動作確認がラクですから。

(2)動的ウェブアプリケーション(Dynamic Web Application)を追加にする
プロジェクトのプロパティで、Facetsの設定を開き、Dynamic Web Applicationを追加してください。この設定をすることでTomcatが有効になります(Tomcatのプラグインが入ってない場合は入れておきましょう。)。この時、動的ウェブアプリケーションのバージョンは2.4にしておきましょう。
また、 コンテンツディレクトリ設定 をwarにしておいてください(デフォルトはWebContent)。この点については、GWTのウェブルートと統一しておくことが大切ですので、どちらを変えても結構です。

(3)サーバでデバッグ
デバッグをします。デバッグからサーバでデバッグを選びます。そこでTomcatを指定しましょう。また下にある「常にこのサーバーを使用」にチェックを入れておきます。実行するとTomcatが起動するはずです。

(4)ウェブアプリケーション(外部サーバで実行)でデバッグ
もう一度デバッグをします。今度は、デバッグからウェブアプリケーション(外部サーバで実行)を選びます。すると、ダイアログが出てきますので、server rootとして
http://localhost:8080/<プロジェクト名>
とします。ウィンドウの真ん中でHTMLファイルを選びます。下部に最終的なURLが出ますので確認してOKを押します。すると、いつものようにDevelopment Modeのペインが開きますので、そこのURLをクリックします。するといつもの様にサンプルプログラムが動きます。え?これってTomcatがサーバなの?と心配な方は、サンプルのボタンを押してみてください。下記のようにメッセージがでてきますが、、、、よく見ましょう。「I' m running Apache Tomcat」となってますね。つまり、このプロジェクトは、サーバはTomcatだけれど、クライアントのGWTはDevModeで動いているということになります。


まとめと注意事項 
結局、これってどうなってるのか?ちょっとわかりにくいので簡単にまとめますね。
  • プロジェクトの基本はGoogleのWebアプリケーションです。DevModeを利用するためには、このプロジェクトとして作成する必要があります。 
  • GoogleのWebアプリケーション でTomcatを利用するためには、Facetsの設定でDynamic Web Applicationを追加する必要があります。この設定により、このプロジェクトではJettyとTomcatの両方を使えるようになったということになります。 
  • デバッグ時に外部サーバーを利用することで、Jettyを使わず、Tomcatを利用することになります。 
  • ただし、Tomcatサーバの起動は Webアプリケーションデバッグと連動してないので、別に起動する必要があります。さらに、サーバープログラムについては、Tomcatを再起動しないと反映されないようです(オートデプロイされない?)。
以上、参考になれば幸いです。


EclipseによるGAEを利用しないGWT開発

初歩的な事だけど、ラボでよく勘違いする話なのでメモ書きです。

EclipseでGoogleのWebアプリケーションプロジェクトをつくると、GWTとGAEが有効になります。一般的にGoogleのWebアプリケーションを利用する=GAEを利用するという認識になってるようですが、GoogleのWebアプリケーションプロジェクトではGWTとGAEを利用するかどうか、それぞれ有効/無効の設定ができます。つまり、 GAEを利用しないのであればGAEだけを無効にすればOK。

GoogleのWebアプリケーションでGAEを利用しないってどういうシチュエーションなのか?疑問に思うかもしれませんが、一般的なWebサーバーで動くGWTアプリケーションを開発したい場合です。GWTというのは別にGAE限定ではありませんからね。

GAEを無効にするとどうなるのかというと、今までどおりJettyサーバーが稼働します。GAEを有効にしている時もJettyが立ち上がりますが、Jettyというのは汎用のWebアプリケーションサーバーです。別にGAE用というわけではありません。つまり無効にする事でGAEの制約を受けずにJettyを利用できるということです。

そもそもなぜこの事を記事にしたとかというと、
  • Eclipse上でTomcatを動かしてGWTアプリを作る
というのを本当はやりたかったのです。いちおうこの方法はわかっているのですが、GWTのDevModeとの連携ができずに断念しています。GWTはさすがにDevModeが使えないと使う気になれませんし。

おそらくコンパイルオプションを変えればできそうな気がしてますが、まだ未解決です。現在検討中ですので、方法がわかれば紹介します。