[cubby-user:91] Re: cubbyを一部のPATHのみに適用したい。
BABA,Yasuyuki
[E-MAIL ADDRESS DELETED]
2008年 9月 17日 (水) 16:37:49 JST
馬場です。
RequestRoutingFilter が URL からアクションを決定後、CubbyFilter に
/__internal_forward というパスで FORWARD します。
その宛先がみつからないので 404 になっているようですね。
CubbyFilter はドキュメントの通りに設定しているなら FORWARD のみを受け付
けるようになっていると思います。
<filter-mapping>
<filter-name>cubbyFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher> <-- ここ
</filter-mapping>
CubbyFilter は HOT DEPLOY とは直接関係がないので、url-pattern は /* のま
までもよいかと思います。
特定のディレクトリを Cubby の処理対象外にしたいならば、対象外にしたい
ディレクトリを RequestRoutingFilter の初期化パラメータ ignorePathPattern
で設定することができます。
<filter>
<filter-name>requestRoutingFilter</filter-name>
<filter-class>org.seasar.cubby.filter.RequestRoutingFilter</filter-class>
<init-param>
<param-name>ignorePathPattern</param-name>
<param-value>/css/.*,/js/.*,/img/.*</param-value> <-- ここ
</init-param>
</filter>
以下のドキュメントを参照してください。
http://cubby.seasar.org/setup.html#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%83%A1%E3%83%B3%E3%83%88%E8%A8%98%E8%BF%B0%E5%AD%90_WEB-INFweb.xml
Masanobu Shimura さんは書きました:
> Cubbyを利用させていただいています。
> 通常通り Cubbyを <url-pattern>/*</url-pattern> に適用はうまくいったのですが、
> dojoを使用しており、dojoのjavascript を downloadするたびに HOT DEPLOYされるので、
> 適用を一部の 下位 PATHのみにしたいと思っています。(他に良い方法がありましたらご教授願います)
>
> そこで、web.xmlの cubbyFilterやhotdeployFilterを <url-pattern>/dojo/*</url-pattern> の様に
> 一部 PATHの適用に変えました。
>
> DojoAction Classは、下記の様になっています。
>
> public class DojoAction extends Action {
> @RequestParameter
> String loginname;
> @RequestParameter
> String password;
> public HttpServletRequest request;
> private HashMap loginr = new HashMap();
> public ActionResult login() {
> if (loginname!=null && loginname.equals("S")) {
> loginr.put("result", "pass");
> } else {
> loginr.put("result", "fail");
> }
> return new Json(loginr);
> }
> }
>
> これは、以前と変わっていないのですが、上記変更をおこなうと、以前は下記 LOG(抜粋)だったのが、
>
> DEBUG 2008-09-16 22:49:20,992 [btpool0-4] アクションメソッドを登録します
> [regex=^/$,method=public org.seasar.cubby.action.ActionResult
> com.shimura.cubby.dojo.action.IndexAction.index(),uriParameterNames=[],requestMethod=POST,onSubmit=null,priority=2147483647,auto=true]
> DEBUG 2008-09-16 22:49:20,993 [btpool0-4] /__internal_forward
> へフォワードします (ルーティング {null=[regex=^/dojo/login$,method=public
> org.seasar.cubby.action.ActionResult
> com.shimura.cubby.dojo.action.DojoAction.login(),uriParameterNames=[],requestMethod=GET,onSubmit=null,priority=2147483647,auto=true]})
> DEBUG 2008-09-16 22:49:20,993 [btpool0-4] リクエストされたURIに次のルーティングがマッチしました
> {null=[regex=^/dojo/login$,method=public
> org.seasar.cubby.action.ActionResult
> com.shimura.cubby.dojo.action.DojoAction.login(),uriParameterNames=[],requestMethod=GET,onSubmit=null,priority=2147483647,auto=true]}
> DEBUG 2008-09-16 22:49:20,994 [btpool0-4]
> [E-MAIL ADDRESS DELETED]
> を用いてリクエストを解析します。
> DEBUG 2008-09-16 22:49:20,994 [btpool0-4] /__internal_forward の処理を開始します
> DEBUG 2008-09-16 22:49:20,994 [btpool0-4] アクションメソッド(public
> org.seasar.cubby.action.ActionResult
> com.shimura.cubby.dojo.action.DojoAction.login())を実行します
> DEBUG 2008-09-16 22:49:21,006 [btpool0-4]
> クラス(com.shimura.cubby.dojo.action.DojoAction[dojoAction])のコンポーネント定義を登録します
> DEBUG 2008-09-16 22:49:21,100 [btpool0-4] [PropertyInterType]
> Introducing... com.shimura.cubby.dojo.action.DojoAction
>
> 下記の様になってしまいます。
>
> DEBUG 2008-09-16 23:12:11,808 [btpool0-2] アクションメソッドを登録します
> [regex=^/$,method=public org.seasar.cubby.action.ActionResult
> com.shimura.cubby.dojo.action.IndexAction.index(),uriParameterNames=[],requestMethod=POST,onSubmit=null,priority=2147483647,auto=true]
> DEBUG 2008-09-16 23:12:11,810 [btpool0-2] /__internal_forward
> へフォワードします (ルーティング {null=[regex=^/dojo/login$,method=public
> org.seasar.cubby.action.ActionResult
> com.shimura.cubby.dojo.action.DojoAction.login(),uriParameterNames=[],requestMethod=GET,onSubmit=null,priority=2147483647,auto=true]})
> DEBUG 2008-09-16 23:12:11,810 [btpool0-2] リクエストされたURIに次のルーティングがマッチしました
> {null=[regex=^/dojo/login$,method=public
> org.seasar.cubby.action.ActionResult
> com.shimura.cubby.dojo.action.DojoAction.login(),uriParameterNames=[],requestMethod=GET,onSubmit=null,priority=2147483647,auto=true]}
> DEBUG 2008-09-16 23:12:11,839 [btpool0-2] HOT deployを終了しました
>
> 画面(直接アクセスすると)には
>
> HTTP ERROR: 404
>
> NOT_FOUND
>
> RequestURI=/__internal_forward
>
> と表示されます。
>
> ヒントがあればよろしくお願いいたします。
>
> 志村正信
> _______________________________________________
> cubby-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/cubby-user
--
BABA,Yasuyuki
[E-MAIL ADDRESS DELETED]
cubby-user メーリングリストの案内