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

Katsuhiko Nagashima [E-MAIL ADDRESS DELETED]
2007年 5月 28日 (月) 10:00:56 JST


永島です。

> 01.
> 上記の「原因」は、正しいでしょうか?

はい。正しいです。
前回、私の環境では再現しなかったと報告しましたが、
LogonFormのアノテーションをコメントアウトするのみの変更では、
HotSwapでコードの置換が行われ動作していました。
LogonFormに新しいpublicメソッドを追加しコードの置換が行われない状態で
試したところ、以降HOT deployされない現象が発生しました。

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

はい。正しいです。
includeファイルのClassLoaderを確かめたところ、
WebappClassLoaderとなっておりました。
filter-mappingに
<dispatcher>INCLUDE</dispatcher>
を追加することでHotdeployClassLoaderで
読み込まれるようになりました。


s2struts-blank、exampleのweb.xmlを修正します。
ご指摘ありがとうございました。



07/05/26 に ysmt<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 岩崎です。
> お世話になります。
>
> 表記の件、現象の再現条件と原因/対策が分かりました。
> 内容の報告と、それに伴う質問をさせていただきます。
>
> 【再現条件】
> <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クラスローダーにロードされないため。
>
> 現象確認用のプロジェクトを添付しておきます。
> (libにはS2Struts-Blank1.3.0 RC-1のlibを入れてください)
> お手数ですが、ご教授お願いいたします。
>
> ----------------------------------------
> On Wed, 23 May 2007 20:11:53 +0900
> "[E-MAIL ADDRESS DELETED]" <[E-MAIL ADDRESS DELETED]> wrote:
>
> > 永島さん
> >
> > ご確認ありがとうございます。
> >
> > > 私の環境では同様の現象は発生しませんでした。。。
> > ですよね。。。
> > 設定がおかしくないことは分かりましたのでとりあえず良し?とします。
> >
> > また状況が変わったら報告します。
> >
> > ----------------------------------------
> > On Wed, 23 May 2007 18:37:31 +0900
> > "Katsuhiko Nagashima" <[E-MAIL ADDRESS DELETED]> wrote:
> >
> > > 永島です。
> > >
> > > 送付していただいたソースで試したのですが、
> > > 私の環境では同様の現象は発生しませんでした。。。
> > > 設定におかしい点はないと思います。
> > >
> > > > Tomcatを再起動すると、ソースに書かれた状態で設定が反映されます。
> > > > (ただ、時々反映されず、前のままになることがあります)
> > >
> > > ここの「ただ、、、」部分が少し気になります。
> > > 環境の問題なのでしょうか。。。
> > >
> > >
> > > 07/05/23 に ysmt<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > > > 岩崎です。
> > > > お世話になります。
> > > >
> > > > 添付の構成にて確認を行っています。
> > > > (libはStruts-Blank1.3.0 RC1をそのまま使用しています)
> > > >
> > > > 画面左に、Validateを設定した2つのActionFormを設置しています。
> > > > ActionFormのValidateを、ソース上で設定したり外したりしていると、
> > > > なぜか途中からソースの変更が反映されなくなってしまいます。
> > > >
> > > > その時々で動作が異なっていて、
> > > > 正確な再現条件を出すことができないのですが、
> > > > 私の環境では以下のような変更をすると、現象が発生します。
> > > > ・LoginFormの2つのプロパティに@Requiredを設定し、
> > > > 両方を未入力にしてSubmit
> > > > ・両方のプロパティでエラーが出る
> > > > ・片方を@Requiredを外し、両方を未入力にしてSubmit
> > > > ・@Requiredが残っている方だけエラーが出る
> > > > (→この時点でコンソールには@Required設定が変更された状態のログ
> > > > DEBUG 2007-05-23 02:27:36,203 [http-8080-Processor25] END org.seasar.struts.hotdeploy.ReloadGetFormInterceptor#invoke([E-MAIL ADDRESS DELETED]) : Form: site_login_loginForm
> > > > が表示されている)
> > > > ・UserSearchForm(@Requiredを設定)を未入力のままSubmitし、
> > > > エラーを表示する。
> > > >
> > > > これ以降、LoginFormとUserSearchForm、どちらのValidateを変更しても
> > > > その変更が反映されなくなります。
> > > > (コンソールのログにも設定が変更されないまま出力されます)
> > > >
> > > > Tomcatを再起動すると、ソースに書かれた状態で設定が反映されます。
> > > > (ただ、時々反映されず、前のままになることがあります)
> > > >
> > > > 現象の発生が不安定なので、
> > > > 私の環境に何か問題があるようにも思えるのですが、
> > > > 設定面でおかしな箇所がないか、教えていただけないでしょうか。
> > > >
> > > > 変な質問で済みません。
> > > > よろしくお願いいたします。
> > > > _______________________________________________
> > > > Seasar-user mailing list
> > > > [E-MAIL ADDRESS DELETED]
> > > > https://ml.seasar.org/mailman/listinfo/seasar-user
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > Katsuhiko Nagashima
> > > _______________________________________________
> > > Seasar-user mailing list
> > > [E-MAIL ADDRESS DELETED]
> > > https://ml.seasar.org/mailman/listinfo/seasar-user
> >
> >
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
>


-- 
Katsuhiko Nagashima


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