Eclipse RAP(Rich Ajax Platform)アプリケーションをServletコンテナで動かす手順
Eclipse RAPアプリケーションをServletコンテナ(Tomcatとか)で動かす手順を記述します。Eclipse RAPについては、以下のページを参照してください。
- EclipseでリッチAjaxアプリケーションを開発しよう - Rich Ajax Platformとは?
- Eclipse Ganymedeの概要 - IBM dW
- Eclipse Rich Ajax Platform Home
- Eclipse RAP - Demos
Eclipse RAPによる開発手順などは、RAPインストール後のヘルプ「RAP Developer Guide」に載っています。また、特に、Servletコンテナにデプロイする手順は、
RAP Developer Guide Advanced Topics WAR Deployment
に載っています。このエントリーは、このヘルプを参考にしています。
ちなみに、RAPアプリケーションを作成するのは簡単ですが、Servletコンテナにエクスポートする標準手段は提供されておらず、ちょっと面倒です。そのため、このエントリーを書いたのですけど。
ポイント
- Eclipse RCP/Plug-in Developersを使用します。
- RAPをインストールします。更新サイトはhttp://download.eclipse.org/rt/rap/1.2/updateです。インストール後、WelcomeページからTarget Platformの設定を行います。
- RAPアプリケーションを作成します。手順はRCPアプリケーションとほぼ同じです。
- Tomcatをインストールします。
- org.eclipse.rap.demo.featureプロジェクトなどをインポートします。
- feature.xmlを開いて、プラグインを調整します。
- script/webappBuilder.xmlをAnt Buildします。
- ConfigIniCreator.javaを実行して、Consoleビューの内容をconfig.iniにコピー・アンド・ペーストします。
- build/demoフォルダをTomcatのwebappsフォルダにコピーします。
- Tomcatを起動して、http://localhost:8080/demo/rap?startup=xxxを表示します。
Eclipseをインストール
eclipse.orgからEclipseをダウンロードして、インストール(zip展開)します。2009/11/13時点の最新バージョンは3.5(Galileo)になります。パッケージはRCP/Plug-in Developersを使用します。Java EE Developersでもあまり問題はありませんが、(どういうわけか)RAPインストール後のWelcomeページが表示されないです。
RAPをインストール
EclipseにRich Ajax Platform(RAP)をインストールします。インストール方法は、更新サイトを使用するインストールになります。更新サイトはhttp://download.eclipse.org/rt/rap/1.2/updateです。
かなり大きなプラグインのようで、インストールに(ダウンロードに?)時間がかかります。インストールが完了したら、Eclipseを再起動します。
Eclipseを再起動すると、Welcomeページが表示されます。これからTarget Platformの設定を行います。Rich Ajax Platform(RAP)をクリックします。
Install Target Platformをクリックします。
OKをクリックします。なお、見て分かる通り、絶対パスで設定されます。
設定が完了すると、Plug-in Developmentパースペクティブが表示されます。これで、RAPのインストールは完了です。
念のため、Preferencesを見てみます。RAPがインストールされると、Plug-in Development > Target PlatformにRich Ajax Platform 1.2が追加され、Activeになります。RAPインストール前はRunning Platformのみです。
RAPアプリケーションを作成
RAPアプリケーションの作成は、RCPアプリケーションの作成とあまり変わりありません(それがRAPの強みです)。以下、RAPアプリケーションを作成します。
メニューのFile > New > Projectをクリックします。New Projectウィザードが開きます。
Plug-in Development > Plug-in Projectを選択して、Nextをクリックします。
Project nameに「foo」を入力して、Nextをクリックします。
何も変更せずに、Nextをクリックします。特に、Would you like to create a rich client application? はNoを選択したままにします。
今回は、RAP Mail Templateを使用することにします。RAP Mail Templateを選択して、Finishをクリックします。
プロジェクトが作成されます。
試しに実行してみます。Launch a RAP Applicationをクリックします。内部Webブラウザが開いて、RAP Mail Templateが表示されます。
ビルド環境構築 (1) - Tomcatインストール
RAPアプリケーションをServletコンテナにデプロイできるようにビルドする環境を構築します。まずはServletコンテナを用意します。ここではTomcatを使用します。Apache Tomcatからzipファイルをダウンロードして、適当な場所に展開して、起動してみます。http://localhost:8080/を表示して、正常に表示できることを確認します。起動できない場合、よくある間違いとしてJAVA_HOME環境変数が設定されていなかったりします。
ここではTomcatのインストール手順は説明しません。検索すれば出てきますし、古い記事ですがTomcatの環境を構築 - @ITを参考に構築してください。
ビルド環境構築 (2) - featureプロジェクトをインポート
冒頭でも書きましたが、RAPアプリケーションをエクスポートする標準手段はありません。ただ、そのためのツールがfeatureプロジェクトの形式で用意されています。これをワークスペースにインポートします。
ヘルプを開いて、RAP Developer Guide > Advanced Topics > WAR Deploymentを表示します。servlet bridge and demo feature bundlesリンクのリンク先をファイル保存します。ファイル名はservletbridge-anon.psfとします(別の名前でも構いません)。
メニューのFile > Importをクリックします。Importウィザードが開きます。Team > Team Project Setを選択して、Nextをクリックします。
Browseをクリックして先ほどファイル保存したservletbridge-anon.psfを選択して、Finishをクリックします。
OKをクリックします。
しばらくすると、3個のプロジェクトがインポートされます。
org.eclipse.rap.demo.featureプロジェクトのfeature.xmlファイルを開きます。
Plug-insタブを開きます。(なぜか)org.eclipse.helpプラグインが警告となっているので、削除します。
これで、RAPアプリケーションをビルドしてデプロイする環境が整いました。
ビルド環境構築 (3) - demoアプリケーションをデプロイ
ちゃんと環境が整っているか、demoアプリケーションをビルド、デプロイして試してみます。
org.eclipse.rap.demo.featureプロジェクトのscript/webappBuilder.xmlを右クリックして、Run > Ant Buildをクリックします(2つありますが、Alt+Shift+X, Qではない方です)。Edit Configurationウィンドウが開きます。JREタブを開いて、Run in the same JRE as the workspaceを選択して、Runをクリックします。
ConsoleにAntビルドが完了したことを表すBUILD SUCCESSFULが表示されても、実は終わっていません。1〜2秒ほどすると、PDE Exportというタスクが実行されます。ステータスバーの右下に小さく表示されるので分かりづらいと思います。これも完了すると、本当に完了です。
ビルドが完了すると、org.eclipse.rap.demo.featureプロジェクトにbuildフォルダが作成されて、その中にdemoアプリケーションがエクスポートされます(ビルドが完了したら、F5を押してRefreshしてください)。
これだけではだめで、config.iniを修正する必要があります。config.iniにはdemoアプリケーションが必要とするプラグインの情報が記述されています。
config.iniを修正するツールが提供されています。org.eclipse.rap.demo.featureプロジェクトのsrc/org/eclipse/rap/tools/ConfigIniCreator.javaがそのツールです。
ConfigIniCreatorを実行する前に、このソースコードを修正する必要があります。ConfigIniCreator.javaを開いて、39行目を見ます。ここに、エクスポートしたdemoアプリケーションのpluginsフォルダのパスを記述します。例えば、ワークスペースのパスが「D:\doc\weekly-report\ws」だとすると、pluginsフォルダは「D:\doc\weekly-report\ws\org.eclipse.rap.demo.feature\build\demo\WEB-INF\eclipse\plugins」になります。
修正したら、ConfigIniCreator.javaを右クリックして、Run > Java Applicationをクリックして実行します。実行すると、Consoleビューに文字列が出力されます。これが、config.iniの内容になります。この内容を全てコピーして、config.iniにペーストします。
これで、Servletコンテナにデプロイできる状態になりました。Tomcatのwebappsフォルダにdemoフォルダをコピーして、Tomcatを起動します。起動したら、http://localhost:8080/demo/rap?startup=defaultを表示します(rap?startup=defaultが重要です。私は何度もこれではまりました)。
Servletコンテナにfooアプリケーションをデプロイ
では、今度は作成したfooアプリケーションをデプロイします。手順はdemoアプリケーションのときとほぼ同じです。
まず、org.eclipse.rap.demo.featureプロジェクトのfeature.xmlを開いて、fooプラグインを追加します。また、org.eclipse.rap.demoプラグインを削除します。これで、ビルドするとfooアプリケーションがエクスポートされるようになります。
scriptフォルダのwebappBuilder.xmlをAnt Buildします。Ant Buildにより、buildフォルダが一度削除されて、fooアプリケーションがエクスポートされます。
ConfigIniCreator.javaをJava Applicationとして実行します(ConfigIniCreator.javaの修正は必要ありません)。Consoleビューにconfig.iniの内容が表示されるので、config.iniにコピー・アンド・ペーストします。
Tomcatを停止して、webapps/demoを削除して、ビルドしたdemoフォルダをコピーして、Tomcatを起動します。起動したら、http://localhost:8080/demo/rap?startup=mailを表示します(先ほどと違い、rap?startup=mailであることに注意)。
これで、自作のRAPアプリケーションをServletコンテナで動かすことができるようになりました。
おまけ
- URLのstartupパラメータは、RAPアプリケーションのorg.eclipse.rap.ui.entrypoint拡張ポイントのparameter属性の値を指定します。
- Tomcatで動かすと、workフォルダに色々展開されますが、ベースがEclipseなのでworkspaceが作成されたりします。この中に.logファイルがあり、ログが出力されます。起動に失敗したときなどに原因究明の元になります。
- Google App Engineにアップロードしてみましたが、500エラーとなり動作しませんでした(javax.servlet.ServletException: java.security.AccessControlException: access denied (java.io.FilePermission eclipse write))。workspaceの作成に失敗しているのでしょうね。当たり前ですが。