Seasar DI Container with AOP

概要

S2Struts1.2.xから1.3.xへ移行する手順について、S2StrutsExampleの移行を通して説明します。 移行するために必要となるファイルはS2StrutsBlank V1.3.xに含まれていますので、あらかじめダウンロードして下さい。

S2.4への移行

S2Struts1.3.xはS2.4で動作するため、S2.3からS2.4への移行が必要です。移行は以下の手順で行います。

  1. jarファイルの置き換え 以下のjarファイルを置き換えてください
    • s2-framework-2.4.0-beta-5-SNAPSHOT.jar
    • s2-extension-2.4.0-beta-5-SNAPSHOT.jar
  2. diconファイルの追加 以下のdiconファイルをWEB-INF/srcへコピーして下さい
    • jdbc.dicon
    • convention.dicon
  3. 不要なdiconファイルの追加 以下のdiconファイルをWEB-INF/srcから削除して下さい
    • j2ee.dicon(s2-extension-2.4.0-beta-5-SNAPSHOT.jarに含まれているため削除して下さい)

jarファイルを置き換えるとAutoRegisterを利用しているdiconファイルでエラーが発生すると思います。 これはAutoRegisterを利用した場合のコンポーネント名定義方法が変わったためです。 エラーの発生したdiconファイルをS2.4に対応するために、 先ほどコピーしたconvention.diconをincludeし、autoNamingプロパティの記述を削除して下さい。 S2StrutsExample Mod.diconの修正例を以下に示します。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
  "http://www.seasar.org/dtd/components21.dtd">
<components>

  <!-- convention.diconのincludeを追加する -->
  <include path="convention.dicon"/>

  <component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
    <!-- autoNamingプロパティの記述を削除(コメントアウト)する
    <property name="autoNaming">
      <component class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
    </property>
    -->
    <initMethod name="addClassPattern">
      <arg>"org.seasar.struts.examples.mod"</arg>
      <arg>".*ServiceImpl"</arg>
    </initMethod>
  </component>
  
  <component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
    <property name="instanceDef">
      @org.seasar.framework.container.deployer.InstanceDefFactory@REQUEST
    </property>
    <!-- autoNamingプロパティの記述を削除(コメントアウト)する
    <property name="autoNaming">
      <component class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
    </property>
    -->
    <initMethod name="addClassPattern">
      <arg>"org.seasar.struts.examples.mod"</arg>
      <arg>".*ActionImpl"</arg>
    </initMethod>
  </component>
</components>

S2Struts1.3.xへの移行

S2Struts1.3.xへの移行は以下の手順で行います。

  1. jarファイルの置き換え 以下のjarファイルを置き換えてください
    • s2-struts-1.3.0-beta-2.jar
    • s2-struts-tiger-1.3.0-beta-2.jar(Tigerアノテーションを利用している場合、置き換えてください)
    • s2-struts-backport175-1.3.0-beta-2.jar(Backport175アノテーションを利用している場合、置き換えてください)
  2. 不要なdiconファイルの追加 以下のdiconファイルをWEB-INF/srcから削除して下さい
    • s2struts.dicon(s2-struts-1.3.0-beta-2.jarに含まれているため削除して下さい)
  3. web.xmlの修正
    • S2ActionServletを利用していたところをorg.apache.struts.action.ActionServletに戻して下さい。 S2ActionServletにはActionを自動的にS2へ登録する機能が含まれていますが、この機能は使わず、 S2.4のHOTdeploy / COOLdeploy機能を利用しActionを登録するためです。
      <web-app>
          :
          :
        <!-- Standard Action Servlet Configuration (with debugging) -->
        <servlet>
          <servlet-name>action</servlet-name>
          <!-- S2ActionServletをActionServletに戻す
          <servlet-class>org.seasar.struts.servlet.S2ActionServlet</servlet-class>
          -->
          <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
          <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
          </init-param>
          <init-param>
            <param-name>debug</param-name>
            <param-value>2</param-value>
          </init-param>
          <init-param>
            <param-name>detail</param-name>
            <param-value>2</param-value>
          </init-param>
          <load-on-startup>2</load-on-startup>
        </servlet>
          :
          :
      </web-app>
      
  4. struts-config.xmlの修正
    • org.seasar.struts.plugin.AutoStrutsConfigRegisterPlugInを org.seasar.struts.lessconfig.plugin.AutoStrutsConfigRegisterPlugInに変更して下さい。
      <struts-config>
          :
          :
        <!-- PlugInのクラス名を修正
        <plug-in className="org.seasar.struts.plugin.AutoStrutsConfigRegisterPlugIn">
        -->
        <plug-in className="org.seasar.struts.lessconfig.plugin.AutoStrutsConfigRegisterPlugIn">
          <set-property property="enableJar" value="false"/>
          <set-property property="docRoot" value="/pages"/>
        </plug-in>
          :
          :
      </struts-config>
      

S2StrutsのHOTdeploy対応

struts-config.xml、validation.xml、application.propertiesの変更がすぐに反映させるためには以下の修正が必要です。

  1. struts-config.xmlの修正
    • org.seasar.struts.hotdeploy.plugin.HotdeployPlugInを追加して下さい。
      <struts-config>
          :
          :
        <!-- HotdeployPlugInの追加 -->
        <plug-in className="org.seasar.struts.hotdeploy.plugin.HotdeployPlugIn"/>
          :
          :
      </struts-config>
      
  2. app.diconの修正
    • add.diconにs2struts-hotdeploy.diconを追加します。 環境によりHOTdeploy / COOLdeployの切り替えを行えるようにするために条件付includeとします。
      <components>
        <include condition="#ENV != 'ut'" path="s2struts.dicon"/>
        <include condition="#ENV == 'ut'" path="s2struts-hotdeploy.dicon"/>
          :
          :
      </components>
      
  3. env.txtの追加
    • 条件付includeで利用する環境名をenv.txtに書き、WEB-INF/srcへ追加します。 HOTdeployを利用するため環境名は「ut」とします。

これでstruts-config.xml、validation.xml、application.properties(リソースファイル)の変更が即時反映されるようになります。 Tomcatを起動し、試してください。

無設定S2StrutsのHOTdeploy対応

...

動作確認

...