[Seasar-user:5494] Re: S2Struts hot deploy 時に定数アノテーションのみ反映されない追伸

原田 [E-MAIL ADDRESS DELETED]
2006年 12月 15日 (金) 18:03:55 JST


原田です。

確認しました。

うまく定数アノテーションにホットデプロイが効くようになりました。
ただこちらのプロジェクト構成がまだ変なのか、うまくいかないケースもあるようで、調査中です。

また、ActionのI/Fを多重継承した場合は、やはり動かないようで、こちらはSeasar2 frameworkの方の
問題なのですね?

また、以前s2struts:submitのaction指定でコンポーネントが見つからないエラーが出る、と書きましたが、これはホットデプロイ構成では
コンポーネント名がFileSystemComponentAutoRegisterで登録した場合と違うのが原因のようで、動くようになりました。

以上ありがとうございます。


原田 <[E-MAIL ADDRESS DELETED]> wrote:

> 原田です。
> 
> ありがとうございます。
> 
> 後ほど確認します。
> 
> 
> "Katsuhiko Nagashima" <[E-MAIL ADDRESS DELETED]> wrote:
> 
> > 永島です。
> > 
> > 返信が遅くなり申し訳ありません。
> > 
> > S2Strutsで以下の点を修正しコミットしました。
> > ・Actionクラスがサブアプリ配下にある場合に
> >  "/"(スラッシュ)をセパレータに利用することも可能とするようにしました。
> >  例えば、root.web.manage.EmployeeActionの場合、
> >  今までは/manage_employeeの形式のみでしたが、
> >  今回の修正により/manage/employeeの形式にも対応しました。
> >  利用する場合は、s2struts.diconのactionPathNamingRuleを以下のように変更し、
> > ----
> > 	<!--
> > 	<component name="actionPathNamingRule"
> > class="org.seasar.struts.lessconfig.config.rule.impl.DefaultActionPathNamingRule"/>
> > 	-->
> > 	<component name="actionPathNamingRule"
> > class="org.seasar.struts.lessconfig.config.rule.impl.QualifiedActionPathNamingRule"/>
> > ----
> >  convention.diconのviewExtension、viewRootPathプロパティを
> >  空に設定して下さい。
> > ----
> > 	<component class="org.seasar.framework.convention.impl.NamingConventionImpl">
> > 		<initMethod name="addRootPackageName">
> > 			<arg>"root"</arg>
> > 		</initMethod>
> > 		<property name="viewExtension">""</property>
> > 		<property name="viewRootPath">""</property>
> > 	</component>
> > ----
> > ・ActionFormがサブアプリ配下にある場合でも
> >  パッケージ部分を含めないコンポーネント名でBindできるように修正しました。
> > 
> > 
> > 以降に修正していただきたい点について記述します。
> > 
> > ・パッケージ構成について
> > S2StrutsではアノテーションをHOT deployで動作させるために
> > S2ContainerからActionクラスやDtoクラスを取得していますので、
> > S2のSMART deployのパッケージ構成に従う必要があります。
> > 以下の変更をして頂けないでしょうか。
> > 
> > ルート.pc.login.action.XXXXLoginAction.java の場合、
> > convention.diconでpcパッケージをwebパッケージにリネームするか、
> > 以下のようにsubApplicationRootPackageNameとして設定して下さい。
> > -----
> > 	<component class="org.seasar.framework.convention.impl.NamingConventionImpl">
> > 		<initMethod name="addRootPackageName">
> > 			<arg>"root"</arg>
> > 		</initMethod>
> > 		<property name="subApplicationRootPackageName">"pc"</property>
> > 	</component>
> > -----
> > また、loginサブアプリケーション下にactionやdtoなどの
> > 個別パッケージを定義することはできないようですので、
> > actionやdtoのパッケージをはずして
> > ルート.web.login.XXXXLoginAction.java
> > ルート.web.login.LoginDto.java
> > のような構成にして下さい。
> > 
> > SMART deployを行うためのパッケージ構成につきましては
> > http://s2container.seasar.org/ja/S2.4SmartDeploy.html
> > に詳細がのっていますので、参考にして下さい。
> > 
> > 
> > ・ACTIONアノテーションについて
> > ACTIONアノテーションのpath名を指定した場合、
> > HOT deployでConfig情報を読み込むことができなくなりますので、
> > 無設定でpathを設定するようにして下さい。
> > (これはS2Strutsの制限です)。
> > 今回の修正で"/"(スラッシュ)形式のpathにも対応しましたので
> > "ルート.web.login.XXXXLoginAction.java"に対して無設定とした場合、
> > pathは"/login/XXXLogin"となります。
> > 
> > 
> > 以下にパッケージ構成とアノテーションのサンプルをアップしましたので、
> > こちらも参考にしていただければと思います。
> > https://www.seasar.org/svn/s2struts/tags/temp/2006-12-12/S2StrutsExampleEmployee-V1.3.0-beta-3-SNAPSHOT.zip
> > 
> > 以上です。
> > 
> > 06/12/05 に 原田<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > > 原田です。
> > >
> > > ルート.pc.login.action.XXXXLoginAction.java
> > > ルート.pc.login.action.XXXXLoginPostAction.java
> > > ルート.pc.login.action.impl.XXXXLoginActionImpl.java
> > > ルート.pc.login.dto.LoginDto.java
> > >
> > > で、
> > >
> > > public interface XXXXLoginAction {
> > >         public static final String ACTION = "path=/login/login, validate=false";
> > >         public static final String SUCCESS_FORWARD = "path=/pages/login/XXXXLogin.html";
> > >     String SUCCESS = "success";
> > >
> > >     String initialize();
> > > }
> > >
> > > public interface XXXXLoginPostAction {
> > >         public static final String ACTION = "name=loginDto,path=/login/loginPost, validate=true,input=/pages/login/XXXXLogin.html";
> > >
> > >         public static final String SUCCESS_FORWARD = "path=/index.html";
> > >       String SUCCESS = "success";
> > >
> > >         public static final String FUNCXX_FORWARD = "path=/funxx/index.do";
> > >       String FUNCXX= "funcxx";
> > >
> > >     String login();
> > > }
> > >
> > > のような感じですね。XXXXLoginActionImplは2つのinterfaceを多重実装しています。
> > >
> > > 以上よろしくお願いします。
> > >
> > >
> > >
> > > "Katsuhiko Nagashima" <[E-MAIL ADDRESS DELETED]> wrote:
> > >
> > > > 永島です。
> > > >
> > > > お手数をお掛けして申し訳ないです。
> > > > 状況を理解できました。
> > > > ご指摘の問題は、S2Strutsの問題です。
> > > >
> > > > 現状では、
> > > > FormBeanに対して、StrutsFormアノテーションの
> > > > name属性を指定してForm名を変えた場合、
> > > > その他のアノテーションをHOT deployで読み込むことができません。
> > > > (例外としてDtoの部分をFormに変えるのみはOKとしています)
> > > >
> > > > また、
> > > >   ルート.web.manage.EmployeeDto
> > > >   ルート.web.manage.EmployeeEditAction
> > > >   ルート.web.manage.impl.EmployeeEditActionImpl
> > > > のように配置し、
> > > > EmployeeDtoをStrutsActionFormアノテーションを指定せず定義した場合、
> > > > Form名はmanage_employeeDtoとなり、
> > > > 以下のようにStrutsActionアノテーションで指定し、
> > > > -----
> > > > public interface EmployeeEditAction {
> > > >     String ACTION = "name = manage_employeeDto";
> > > >          :
> > > > }
> > > > -----
> > > > さらにFormを受け取るActionクラスも以下のように
> > > > 受け取らないといけなくなってます。
> > > > -----
> > > > public class EmployeeEditActionImpl implements EmployeeEditAction {
> > > >
> > > >     private EmployeeDto employeeDto;
> > > >
> > > >     public EmployeeDto getManage_employeeDto() {
> > > >         return employeeDto;
> > > >     }
> > > >
> > > >     public void setManage_employeeDto(EmployeeDto employeeDto) {
> > > >         this.employeeDto = employeeDto;
> > > >     }
> > > >         :
> > > > ------
> > > >
> > > > このままでは、利用しづらいと思いますので、
> > > > Form名やFormを受け取る部分について修正しようと思います。
> > > >
> > > > また、修正のとき参考にしたいと思いますので、
> > > > 原田さんのパッケージ構成と
> > > > StrutsAction、StrutsActionFormアノテーションの指定内容を
> > > > 教えていただいてもよろしいでしょうか。
> > > >
> > > > よろしくお願いします。
> > > >
> > > > 06/12/04 に 原田<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > > > > 原田です。
> > > > >
> > > > > > S2自体のHOT deployはルート.web.サブアプリケーションに
> > > > > > DTOをおいても認識されます。
> > > > >
> > > > > それはできていますが、定数アノテーションのみNGなのです。
> > > > >
> > > > > よろしくお願いします。
> > > > >
> > > > >
> > > > > Yasuo Higa <[E-MAIL ADDRESS DELETED]> wrote:
> > > > >
> > > > > > ひがです。
> > > > > >
> > > > > > > 原田です。
> > > > > > >
> > > > > > > ルート.dto以下に入れるとできるようになりました。
> > > > > > >
> > > > > > > しかし、・・・・ちょっとこの構成は・・・・・。
> > > > > > >
> > > > > > > 今回結構大規模な開発なので、きびしいです。
> > > > > > >
> > > > > > > できればActionと同列におきたいのですが・・・。
> > > > > > >
> > > > > > S2自体のHOT deployはルート.web.サブアプリケーションに
> > > > > > DTOをおいても認識されます。
> > > > > >
> > > > > > Yasuo Higa
> > > > > > The Seasar Project
> > > > > > _______________________________________________
> > > > > > 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 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 メーリングリストの案内