[Seasar-user:7855] Re: jsp:include とHotDeploy (was [S2Struts]ActionFormがHotDeployされない)

Yasuo Higa [E-MAIL ADDRESS DELETED]
2007年 5月 28日 (月) 09:51:52 JST


ひがです。
> 
> 岩崎です。
> お世話になります。
> 
> 表記の件、現象の再現条件と原因/対策が分かりました。
> 内容の報告と、それに伴う質問をさせていただきます。
> 
> 【再現条件】
> <jsp:include>アクションのinclude側jspファイルで
> ActionFormを使用していて、includeファイルが呼び出されると、
> それ以降、そのActionFormはHotDeployが一切効かなくなる。
> (最初にincludeでないjspファイルでHotDeployが効いていても、
>  includeファイルが呼び出されるとincludeでないjspでも効かなくなる)
> 
> 【原因/対策】
> ※原因は私の推測です※
> include側jspファイルは、呼び出し元から
> org.apache.jasper.runtime.JspRuntimeLibrary.include
> で呼び出されているため、
> web.xmlに指定されているデフォルトのフィルタ条件
> <filter-mapping>
>   <filter-name>hotdeployfilter</filter-name>
>   <url-pattern>/*</url-pattern>
>   <dispatcher>REQUEST</dispatcher>
>   <dispatcher>FORWARD</dispatcher>
> </filter-mapping>
> ではフィルタされない。
> (=include側jsp用のrequestに対するHotクラスローダーは作成されない)
> 
> フィルタのターゲットに「INCLUDE」を追加することで、
> 現象が発生したのと同条件でもHotDeployが効くようになった。
> <filter-mapping>
>   <filter-name>hotdeployfilter</filter-name>
>   <url-pattern>/*</url-pattern>
>   <dispatcher>REQUEST</dispatcher>
>   <dispatcher>FORWARD</dispatcher>
>   <dispatcher>INCLUDE</dispatcher>
> </filter-mapping>
> 
> 【質問】
> 01.
> 上記の「原因」は、正しいでしょうか?

はい。

> 02.
> 「再現条件」の現象が発生する理由について、
> 以下のような理解で正しいでしょうか?
> 
> includeファイルでActionFormが呼び出された時、
> そのActionFormはコンテキストクラスローダーにロードされる。
> → Hotクラスローダーが作成されないため。
> よって、その後Hotクラスローダーにはロードされない。
> → Hot以外のクラスローダーにロード済のクラスは
>   Hotクラスローダーにロードされないため。
> 
Hot以外のクラスローダーにロード済のクラスは、
Hotクラスローダーにロードされないため、
FilterでINCLUDEの指定がない場合は、
デフォルトのクラスローダ(Hot以外)にロードされるため
上記のようなことが起こるのではないかと思います。

よろしくお願いします。

--
Yasuo Higa
[E-MAIL ADDRESS DELETED]


Seasar-user メーリングリストの案内