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

ysmt [E-MAIL ADDRESS DELETED]
2007年 5月 30日 (水) 02:10:20 JST


岩崎です。
原因が分かって良かったです。
ありがとうございました。

----------------------------------------
On Mon, 28 May 2007 10:00:56 +0900
"Katsuhiko Nagashima" <[E-MAIL ADDRESS DELETED]> wrote:

> 永島です。
> 
> > 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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user





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