DWRを利用するとJavaScriptからサーバー上で動作しているJavaのクラスをまるでブラウザで動作している関数のように、扱うことが可能です。今回から数回に渡りDWRの使用方法を詳細にレポートしていきます。
DWRとは
DWRとは「Direct Web Remoting」の略で、AjaxとJavaを利用してWebページを構築するためのオープンソースのJavaのライブラリです。DWRは開発者の「Jow Walker」のサイト
GETAHEADからダウンロードすることができます。
DWRはサーバ側のオブジェクトにアクセスするためのJavaScriptを自動的に生成します。開発者はその生成されたJavaScriptを使用するための簡単なコードをページに埋めるだけで簡単にサーバオブジェクトを利用できるのです。イメージとしては、SOAPを使ってリモートプロシジャコールをするのと似ています。下の図はDWRが動作する仕組みを表しています。

DWRServletというサーブレットがブラウザのページとサーバ側のオブジェクトの間を取り持っています。Webページにサーバ側のオブジェクトとやり取りするためのJavaScriptを記述します。
(例:<script type="text/javascript" src="/ajaxweb/dwr/interface/Hello.js">)。
その指定されたJavaScriptをDWRServletが自動生成してブラウザに返します。そしてそのJavaScriptに定義されている関数をコールすることによってサーバ側のオブジェクトに接続することができます。
DWRを体験する
では、早速DWRを体験してみましょう。サーバにはTomcat、開発環境にはEclipseを使用します。DWRは2.0を使用します。(2007年11月現在の安定稼動バージョンは1.4です。)まず、EclipseのWebプロジェクトを作成し、そのWEB-INF/libの下に
ここからダウンロードした「dwr.jar」を置きます。次に「web.xml」に以下を追加します。
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
そして、最後にWEB-INFの下に「dwr.xml」というXMLファイルを作成し、以下を記述します。
<!DOCTYPE dwr PUBLIC
"-http://GetAhead Limitedhttp://DTD Direct Web Remoting 2.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="JDate">
<param name="class" value="java.util.Date"/>
</create>
</allow>
</dwr>
これで準備完了です。ブラウザに
「http://localhost:8080/<コンテキストルート>/dwr/index.html」
と入力すると「JDate」というリンクがあるページが表示されます。それをクリックすると以下のような画面が表示されます。

この画面にはサーバー側で動作する「java.lang.Date」クラスのメソッド名とそれを実行するための「Excecute」ボタンが表示されています。試しにtoString()メソッドの横の「Excecute」ボタンをクリックすると、「Sat Nov 10 11:32:44 JST 2007」のように日時を表す文字列が表示されます。これはサーバ側で実行されたjava.lang.DateのtoString()の結果です。このページでは「DWRServlet」が出力した関数を各「Excecute」ボタンがクリックされた時に呼び出して、サーバ側のオブジェクトを利用しています。
このページは元々、サーバ側のオブジェクトをデバックするために「DWRServlet」が出力するページです。引数と戻り値に参照型に指定されているメソッドは、このページでは実行できません。これらを実行するためには、コンバーターを設定するという作業が必要です。これについては次回以降でご紹介します。また、Objectクラスのメソッドやオーバーロードされたメソッドも実行できません。
動作するブラウザ
DWRは、IE、Safari、FireFox、Operaなどほとんどのブラウザで動作することが確認されています。筆者はIEとFireFoxで確認しました。詳細は
ここを参照して下さい。
さて次回は実際にサーバ側のJavaのクラスとそれを呼び出すページを作ります。
ちょっと一休み. Javaキーワード並び替えゲーム
画面に表示される文字列を並び替えるとJavaに関連するキーワードになります。ヒントをたよりに並び替えを行ってエンターを押してください。
ユーザ登録をしてログインするとランキングに参加できます。