今日確認できたところ

struts-config.xmlを動的に読み込むところ。
試すためには、、、、



s2struts-exampleで試すのが一番かな。

まずはs2struts-exampleをS2.4に移行するために以下のjarにして

  • s2-framework-2.4.0-beta-3.jar
  • s2-extension-2.4.0-beta-3.jar

あとdiconをいろいろ

  • jdbc.diconをコピー
  • j2ee.diconはjarに含まれてるから削除


次はs2struts1.3.0-beta-2への移行
リポジトリからソースを取ってきてmvnで以下のjarを作ってコピー

あとdiconファイルも更新


エラーがでて不要なdiconはとりあえず削除(利用してないし、、、よりあえずってことで)

  • RequestProcessor.diconを削除(app.diconのincludeもあわせて削除)
  • dao-pager.diconを削除


MessageManagerクラスが移動しているので利用しているソースのimportを修正。これでエラーがなくなるはず。

エラーがなくなったら、以下のファイルを修正

  • web.xmlの修正
    • S2ActionServletを利用していたところをorg.apache.struts.action.ActionServletに戻す。S2ActionServletは自動的にActionを登録しているけれど、それはS2に任せるようにするため(規則にに従った登録はAutoRegister(今後はCOOL Deployかな)で気軽にできるし、だからS2ActionServletは利用しないほうがよいかも)。
  • struts-config.xmlの修正
    • org.seasar.struts.plugin.AutoStrutsConfigRegisterPlugInをorg.seasar.struts.lessconfig.plugin.AutoStrutsConfigRegisterPlugInに変更


これで一応移行は終了。なので動作確認。
いきなりAdd Applicationが動かない。。。Actionを登録してないからだ、、、
Add.diconに追加しよう。。。簡単にするために以下のように直接書くことにした。

<components>
	<component class="org.seasar.struts.examples.add.AddServiceImpl"/>
	<component class="org.seasar.struts.examples.add.AddAction"/>
</components>

そして動作確認。。。一応動作した。。。Selenium IDE大活躍
これでS2.4とs2struts1.3.0-beta-2-SNAPSHOTへの移行は完了かな。



つぎはいよいよHOT Deployへ

  • web.xmlの修正
    • hotdeployfilterを追加
  <filter>
    <filter-name>hotdeployfilter</filter-name>
    <filter-class>org.seasar.framework.container.hotdeploy.HotdeployFilter</filter-class>
  </filter>
 :
 :
  <filter-mapping>
    <filter-name>hotdeployfilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  • struts-config.xmlの修正
    • HotdeployPlugInを追加
    <plug-in className="org.seasar.struts.hotdeploy.plugin.HotdeployPlugIn"/>
  • app.diconにs2struts-hotdeploy.diconを追加
<components>
	<include path="s2struts-hotdeploy.dicon"/>
	<include path="s2struts.dicon"/>
        :
        :
</components>
  • s2container.diconを追加、、、とりあえずは下のような感じで、、、あとからいろいろ追加するということで
<components>
	<component class="org.seasar.framework.container.hotdeploy.OndemandBehavior">
		<property name="rootPackageName">"org.seasar.struts.examples.employee"</property>
	</component>
</components>

この状態で動作確認。。。とりあえずemployee以外は一通り動いた



次は、struts-config.xmlとvalidation.xmlの内容を動的に読み込むことの確認

まずCalculationFormの派生元をActionFormからValidatorFormへ変更(ここでTomcatを再起動したけど、不要だったかな、、、)
Add Applicationで何も入力しなくても動作することを再確認。なにもチェックされてないっと。
パラメーターチェックを行うためにstruts-config.xmlの/addのvalidateをtrueに変更

        <action
            path="/add"
            type="org.seasar.struts.examples.add.AddAction"
            name="calcForm"
            scope="request"
            validate="true"
            input="/pages/addInput.html">
            <forward name="success" path="/pages/result.html" />
        </action>

そしてvalidation.xmlにcalcFormのチェック内容を追加

        <form name="calcForm">
            <field
                    property="arg1"
                    depends="intRange">
                <arg key="arg1" resource="false"/>
                <arg1 name="intRange" key="${var:min}" resource="false" />
                <arg2 name="intRange" key="${var:max}" resource="false" />
                <var>
                     <var-name>min</var-name>
                     <var-value>4</var-value>
                </var>
                <var>
                     <var-name>max</var-name>
                     <var-value>16</var-value>
                </var>
            </field>
        </form>

これで何も入力せずに実行したら、ちゃんと引っかかるはず、、、引っかかった。


やっと、Tomcatの再起動なしでstruts-config.xmlとvalidation.xmlを更新できることの確認ができた。


HOT deployの機能を全然使ってないけど、はじめの第一歩ということで。
明日がメインのところをいろいろ確認しないと。。。



[追記]
いろいろしてたら、インターフェースにつけたアノテーションが実装クラスから取得できないなー。
うーむ。。。