// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。

**概要 [#h7467cc2]
[[DWR(Direct Web Remoting)>http://getahead.org/dwr]]とは、J2EEサーバ上のJavaプログラムをJavaScriptから呼び出すためのライブラリです。Ajaxのライブラリと説明される事が多いですが、サーバ上のJavaクラスをhttp経由で呼び出せる一種のRPCってかんじです。わかりにくいですが、[[Flex>http://www.adobe.com/jp/products/flex/]]のRemoteObjectと似てますね。あっちはFlashからJavaクラスをリモート呼出しします。こっちはJavaScriptからJavaクラスをリモート呼出しします。
[[DWR(Direct Web Remoting)>http://getahead.org/dwr]]とは、J2EEサーバ上のJavaプログラムをJavaScriptから呼び出すためのライブラリです。Ajaxのライブラリと説明される事が多いですが、サーバ上のJavaクラスのメソッドをhttp経由で呼び出せる一種のRPCってかんじです。わかりにくいですが、[[Flex>http://www.adobe.com/jp/products/flex/]]のRemoteObjectと似てますね。あっちはFlashからJavaクラスをリモート呼出しします。こっちはJavaScriptからJavaクラスをリモート呼出しします。


**ダウンロード [#f5736836]
http://getahead.org/dwr/download よりWARをダウンロードします。

**インストール [#gfeb5e2e]
インストールは
-ダウンロードしたwar内のjarをWEB-INF/libにコピー
-web.xmlにブリッジとなるServletを設定
-dwr.xmlにリモート呼び出ししたいJavaクラスを記述してweb.xmlの隣に配置

ってかんじです。

web.xmlには
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  <init-param>
    <param-name>debug</param-name>
    <param-value>true</param-value>
  </init-param>
  <init-param>
      <param-name>activeReverseAjaxEnabled</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>
などを追加します。

dwr.xmlには
 <dwr>
   <allow>
     <create javascript="HelloWorld" creator="new">
       <param name="class" value="nu.mine.kino.services.HelloWorld" />
     </create>
     <convert converter="bean" match="nu.mine.kino.services.Model"/>
   </allow>
 </dwr>
など、JavaScriptから呼び出したいビジネスロジックが書いてあるクラス(HelloWorld)や、引数や戻り値となるオブジェクト(nu.mine.kino.services.Model)を記述しておきます。このようにしておくと、JSPやHTML内で、
 <script type="text/javascript" src="dwr/engine.js"> </script>
 <script type="text/javascript" src="dwr/util.js"> </script>
 <script type="text/javascript" src="dwr/interface/HelloWorld.js"> </script>
 <script type="text/javascript">
 function show() {
   var input = dwr.util.getValue("input");
   HelloWorld.sayHello(input,callback);
 }
 
 function callback(message){
   dwr.util.setValue("result", message);
 }
 </script>
などのようにさもJavaScriptすなわちクライアントサイドでJavaクラスを呼ぶような記述でサーバのロジックを呼び出すことができるわけです。

上の例だと
 dwr/engine.js
 dwr/util.js
 dwr/interface/HelloWorld.js
は先のブリッジのサーブレットDwrServletが勝手に生成して返してくれます。HelloWorld.jsはサーバ上のビジネスロジックと同じメソッドが定義されているJavaScriptでクライアント側のプロキシとして動作します。









----
この記事は
#vote(おもしろかった,そうでもない)

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS