ラベル Tomcat の投稿を表示しています。 すべての投稿を表示
ラベル Tomcat の投稿を表示しています。 すべての投稿を表示

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を再起動しないと反映されないようです(オートデプロイされない?)。
以上、参考になれば幸いです。


2012-02-22

[GWT:エラー] reportUnusedDeclaredThrownExceptionIncludeDocCommentReference

EclipseでTomcatの環境でGWTをコンパイルしようとした時に、標題にあるようなエラーが出ました。詳しく書くと、
java.lang.NoSuchFieldError:reportUnusedDeclaredThrownExceptionIncludeDocCommentReference
という感じです。これの解決策ですが、ライブラリの参照順番によってこのようなエラーがおきるようです。具体的に言うと、
  • Tomcatライブラリの参照の前にGWTのライブラリ参照をする
という方法で解決できます。Eclipseでは[Configure Build Path]→[Order and Expert]のところでクラスパスの順番を変えることでOKなようです。

このように、GWTSDKを上の方に持ってくることでコンパイルが成功しました。

P.S
ちょっと現在、GAEからの脱却を図りつつGWTを利用していく方針を検討しているのですが、Netbeansだったらすんなりサーバ切り替えでで対応できるんですが、EclipseはGAEとGWTが結構密接に関係しているようで、GAEに依存しないGWTアプリを作るにはちょっとした手間がかかりそうです。