DWRを使ったAJAXアプリケーション


Apache GeronimoのWebコンソールの初期画面に、現在のメモリ使用量などが表示されている。
よく見てみると、これらの値は自動で更新されていることに気付くだろう。

ページを自動で更新しているわけでもないため、AJAXが使われているのだと思い、ページのソースを見てみたところ、JavaScriptの中でDWRUtilというオブジェクトを使っている。

Googleで調べると、JavaWorldの記事を見つけることができた。
http://www.javaworld.jp/enterprise/-/20862-1.html

DWRの本家
http://getahead.ltd.uk/dwr/

JavaWorldの記事によると、DWRとは”JavaScriptJava連携用フレームワーク”なのだそうだ。
DWRを使うと、JavaのオブジェクトがまるでJavaScriptの中でも使用できるような感覚で使うことができる。(もちろん、実際は、Javaのクラス名と同じ名前で、JavaScriptのオブジェクトが自動生成されているのだと思う)
詳細はJavaWorldの記事を読んでもらいたい。

JavaWorldの記事からサンプルアプリケーションがダウンロードできる。せっかくなので、先程インストールしたApache Geronimoにデプロイしてみようと思う。

GERONIMO_HOMEにダウンロードしたWARファイルを移動し、デプロイコマンドを実行する。
> java -jar bin/deployer.jar deploy jw_0509_dwr.war

Error: Unable to distribute jw_0509_dwr.war: Syntax error indeployment plan or no deployer service available (currently I can'ttell the difference):,moduleFileC:\DOCUME~1\ユーザ名\LOCALS~1\Temp\deployer1379.tmpdir\jw_0509_dwr.war

と、上記のエラーになってしまう。

調べてみると、http://chariotsolutions.com/geronimo/development-deployer.htmlこのサイトにWEB-INF/web.xmlが無いとこのエラーがでるらしい。
サンプルアプリケーションを解凍してみると、web.xmlは存在しているので、内容が悪いのかも知れない。
web-appタグの部分を以下のように書き換えてみる。
<?xml version="1.0" encoding="Shift_JIS"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

デプロイを実行したところ次のエラーが出る。
Error: Unable to distribute jw_0509_dwr.war: Error parsing web.xmlcaused by Invalid deployment descriptor: [error:

web.xmlの書き方が間違っているらしい。TomcatWebLogicは要素の順番が違っていてもデプロイできるが、Geronimoは厳しいらしい。

servlet要素の中の要素の順番が違っているようなので、正しい順番に置き換えてみる。
正しい順番はhttp://www.atmarkit.co.jp/fjava/javatips/037container004.htmlここを参考にした。

これでデプロイが成功した。
次のURLからアクセスできる。
http://localhost:8080/jw_0509_dwr/