May 2007

May 20, 2007

概要

DWR は、Ajax Web サイトを作成するためのオープンソースのライブラリです。DWR を使用することにより、サーバー上の機能をあたかもブラウザ上にあるように使用することができます。

DWR は、以下の2つの要素で構成されています。
  • Servlet : サーバー上に位置し、ブラウザからのリクエストの処理と応答を行います。
  • JavaScript : ブラウザ上からサーバーにリクエストを送出し、Webページを更新します。
DWR は、Javaのクラスに基づく JavaScript を動的に生成することにより、Server 側への処理要求を透過的に処理することができます。

このリモートメソッド呼び出しの方式により、RMI や SOAP のような RPC 機能を Web ブラウザのプラグインなしで実現することができます。

Ajax の機能は非同期的であるのに対し、Java の機能は基本的に同期的です。そのため、リモートメソッド呼び出しを行うためには、DWR とコールバックメソッドを使用します。コールバックメソッドは、ネットワークからデータを受け取った時に呼び出されます。

DWR は、サーバーサイドのコードに対応する AjaxService クラスを JavaScript 内で動的に生成します。これは EventHandler と呼ばれます。DWR は JavaScript と Java 間の型変換も含め、すべてのリモートメソッド呼び出しに関する処理を行います。

HP

http://getahead.org/dwr/


ダウンロード

今回はバージョン 2.0.1 を使用します。
dwr.jar をダウンロードし、WEB-INF/lib にコピーします。


Srevletの設定

WEB-INF/web.xml に、DWR 用 Servlet の設定をします。
<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <display-name>DWR Servlet</display-name>
  <servlet-class>org.directwebremoting.servlet.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>


DWRの設定

WEB-INF/dwr.xml に、DWR 用の設定を行います。

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
    "http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>
  <allow>
    <create creator="new" javascript="JDate">
      <param name="class" value="java.util.Date"/>
    </create>
  </allow>
</dwr>


DWRの動作確認

以下のURLにアクセスすると、利用可能なリモート呼び出しが表示されます。
http://localhost:8080/[YOUR-WEBAPP]/dwr/


サンプル

20070520-dwr.zip
mvn -DdownloadSources -Dwtpversion=1.5 eclipse:eclipse



(15:39)