Eclipse RAP(Rich Ajax Platform)アプリケーションをServletコンテナで動かす手順

Eclipse RAPアプリケーションをServletコンテナ(Tomcatとか)で動かす手順を記述します。Eclipse RAPについては、以下のページを参照してください。

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.javaJava 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の作成に失敗しているのでしょうね。当たり前ですが。