[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 メーリングリストの案内