続きです。
xwork.xmlの作成
以下の通りXWorkの設定ファイルを作成します。
include要素で指定しているwebwork-default.xmlはWebWorkが提供するデフォルトのXWorkの設定ファイルで、WebWorkが提供するインターセプタなどが定義されております。XWorkではこのように他の設定ファイルを設定のベースラインにすることができます。
キモになるのはaction要素で、ここで自分で作ったActionの設定を行います。result要素のname属性は先程のActionのexecuteメソッドの戻り値と整合性がとれている必要があります。intercepter-ref要素で参照しているのはincludeしているWebWorkの設定で定義されているデフォルトのインターセプタスタックです。
デプロイ
これらのファイルを必須ライブラリと共にWebアプリケーションの形にまとめます。ディレクトリ構造は以下の様になります。
動かしてみる
さあ、それでは早速動かしてみましょう。今回は、jdk1.4.2_04とTomcat 5.0.24を使います。Tomcatを起動して、ブラウザで
http://localhost:8080/wwblog/Hello.action?name=Nose
を表示すると、ちゃんと
こんにちは! Nose さん.
と表示されます。
気になること
これでWebWorkを使ったWebアプリの概要は大体分かったのですが、細かい所がまだまだ不明です。検証や、型変換のときにエラーがおこったらどう処理するのでしょうか?セッションの扱いは?共通のデータ構造を複数のActionで使いたい時は?などなど。
これからはそういう細かい所をすこしづつ調べて行こうと思います。
あと、今回WebWorkの挙動で気になったのは、executeの戻り値の文字列がxwork.xmlの該当Actionの設定に存在しないと、ブラウザにレスポンスが永遠に戻ってこなくなることです。ログに警告ログははかれるのですがね。。。これって挙動としてはすこしおかしい気がします。
このへんについてももう少し突っ込んで原因をさぐっていきたいです。
ではまた。
xwork.xmlの作成
以下の通りXWorkの設定ファイルを作成します。
<xwork> <include file="webwork-default.xml"/> <package name="default" extends="webwork-default"> <default-interceptor-ref name="defaultStack"/> <action name="Hello" class="wwstudy.HelloAction"> <result name="success" type="velocity"> <param name="location">/WEB-INF/vm/hello.vm</param> </result> <interceptor-ref name="defaultStack"/> </action> </package> </xwork>
include要素で指定しているwebwork-default.xmlはWebWorkが提供するデフォルトのXWorkの設定ファイルで、WebWorkが提供するインターセプタなどが定義されております。XWorkではこのように他の設定ファイルを設定のベースラインにすることができます。
キモになるのはaction要素で、ここで自分で作ったActionの設定を行います。result要素のname属性は先程のActionのexecuteメソッドの戻り値と整合性がとれている必要があります。intercepter-ref要素で参照しているのはincludeしているWebWorkの設定で定義されているデフォルトのインターセプタスタックです。
デプロイ
これらのファイルを必須ライブラリと共にWebアプリケーションの形にまとめます。ディレクトリ構造は以下の様になります。
`-- WEB-INF |-- classes | |-- wwstudy | | `-- HelloAction.class | `-- xwork.xml |-- lib | |-- commons-logging-1.0.3.jar | |-- ognl-2.6.3-modified.jar | |-- oscore-2.2.1.jar | |-- velocity-dep-1.3.1.jar | |-- webwork-2.0.jar | `-- xwork-1.0.jar |-- vm | `-- hello.vm `-- web.xml
動かしてみる
さあ、それでは早速動かしてみましょう。今回は、jdk1.4.2_04とTomcat 5.0.24を使います。Tomcatを起動して、ブラウザで
http://localhost:8080/wwblog/Hello.action?name=Nose
を表示すると、ちゃんと
こんにちは! Nose さん.
と表示されます。
気になること
これでWebWorkを使ったWebアプリの概要は大体分かったのですが、細かい所がまだまだ不明です。検証や、型変換のときにエラーがおこったらどう処理するのでしょうか?セッションの扱いは?共通のデータ構造を複数のActionで使いたい時は?などなど。
これからはそういう細かい所をすこしづつ調べて行こうと思います。
あと、今回WebWorkの挙動で気になったのは、executeの戻り値の文字列がxwork.xmlの該当Actionの設定に存在しないと、ブラウザにレスポンスが永遠に戻ってこなくなることです。ログに警告ログははかれるのですがね。。。これって挙動としてはすこしおかしい気がします。
このへんについてももう少し突っ込んで原因をさぐっていきたいです。
ではまた。
実装するインターフェイスがexecute()だけで良いってのは、かなり熱いっすねぇ。
某自動化ツールのような印象を受けました。
検証にはValidate機能でバリデーションの設定を書いて、Interceptorでセット
セッションは、IoCコンテナに共有サービスとして登録してInterceptorでセット、という形になるらしいです
#オープンソースJavaプロダクツからの引用
Interceptorマンセーな作りっぽいですねぇ。。
のは確かにXWorkの面白いところですよね。セッションとのやりとりにしてもActionが自分でセッションからとってくるというよりはInterceptorにセットさせた方がすっきりしそうです。