Seasar DI Container with AOP

概要

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

以降では、S2Struts1.2.12からS2Struts1.3.0へ移行するものとして説明します。 「S2Struts1.2.x」という表記は「S2Struts1.2.12」と、また、「S2Struts1.3.x」という表記は「S2Struts1.3.0」と読み替えてください。

S2Struts1.2.xからS2Struts1.3.xへの移行

S2Struts1.3はStruts1.3.8とSeasar2.4.xを組み合わせた環境で動作します。 したがって、Struts1.2.9とSeasar2.3を使用するStruts1.2.xをS2Struts1.3.xへ移行するには、StrutsとSeasar2の移行も必須となります。移行は次の手順で行います。

  1. Struts1.3.8への移行
  2. Seasar2.4.xへの移行
  3. S2Struts1.3.xへの移行

Struts1.3.8への移行

Struts1.3.8への移行は以下の手順で行います。

  • Struts1.2.9本体のjarファイルとその依存jarファイルを削除します。
  • Struts1.3.8本体のjarファイルとその依存jarファイルを追加します。
    ただし、commons-beanutilsはバージョン1.7.0ではなく1.8.0-BETAを利用してください。バージョン1.7.0のcommons-beanutilsに含まれるWrapDynaBeanクラスは、シリアライズ可能でないという問題を抱えています。

Seasar2.4.xへの移行

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

  • Seasar2.3.x本体のjarファイル(s2-framework-2.3.x.jarとs2-extension-2.3.x.jar)とその依存jarファイルを削除します。
  • Seasar2.4.x本体のjarファイル(s2-framework-2.4.x.jarとs2-extension-2.4.x.jar)とその依存jarファイルを追加します。
  • j2ee.diconを削除します。(このファイルはs2-extension-2.4.x.jarに含まれています。)
  • jdbc.diconを追加します。

S2Struts1.3.xへの移行

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

  1. jarファイルの置き換え
    • S2Struts1.2.x本体のjarファイル(s2-struts-1.2.x.jarとs2-struts-tiger-1.2.x.jar)を削除します。
    • S2Struts1.3.x本体のjarファイル(s2-struts-1.3.x.jarとs2-struts-tiger-1.3.x.jar)を追加します。

  2. ソースコードの修正

    1.2.xから1.3.xでクラスのパッケージ名やメソッドのシグネチャが一部変更されているのでコンパイルエラーが発生します。次の修正を行ってください。

    • org.seasar.struts.action.MessageManagerを変更し、org.seasar.struts.pojo.MessageManagerとする。
    • org.seasar.struts.annotation.tigerパッケージに属するアノテーションのboolean型の属性をorg.seasar.struts.annotation.tiger.BoolType型に変更する。

  3. diconファイルの削除
    • s2struts.diconを削除します。2struts.diconはs2-struts-1.3.x.jarに含まれるようになりました。
      ただし、s2struts.diconをカスタマイズして使いたい場合は、S2Struts1.3.xのs2struts.diconを適切に修正して使ってください。 その場合、S2StrutsBlank V1.3.xの配布ファイルに含まれるs2struts.diconではなく、S2Struts V1.3.xの配布ファイルに含まれるs2struts.diconを使用してください。 2StrutsBlank V1.3.xの配布ファイルに含まれるs2struts.diconにはSMART deployで使用されるのを前提とした記述がされています。

  4. struts-config.xmlの修正
    • DOCTYPE宣言を変更します。
    • <!DOCTYPE struts-config PUBLIC
                "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
                "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
      
      <!DOCTYPE struts-config PUBLIC
                "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
                "http://struts.apache.org/dtds/struts-config_1_3.dtd">
      
    • Commons Chainを利用するようにcontroller要素を変更します。 S2RequestProcessorを使用した既存の設定でも動作しますが、その場合はapp.diconの修正が必要になります。 推奨はCommons Chainを利用する設定です。
    •   <controller
           processorClass="org.seasar.struts.processor.S2RequestProcessor"/>
      
        <controller catalog="s2struts">
          <set-property 
              key="ACTION_CONTEXT_CLASS" 
              value="org.seasar.struts.processor.contexts.S2ServletActionContext"/>
        </controller>
      
    • org.seasar.struts.plugin.AutoStrutsConfigRegisterPlugInを利用している場合は名前を org.seasar.struts.lessconfig.plugin.AutoStrutsConfigRegisterPlugInに変更します。
    •   <plug-in 
          className="org.seasar.struts.plugin.AutoStrutsConfigRegisterPlugIn"/>
      
        <plug-in 
          className="org.seasar.struts.lessconfig.plugin.AutoStrutsConfigRegisterPlugIn"/>
      

  5. web.xmlの修正
    • S2ActionServletをStrutsのActionServletに変更し、init-paramでS2Struts用のchain-config.xmlを指定します。
    •   <servlet>
          <servlet-name>action</servlet-name>
          <servlet-class>org.seasar.struts.servlet.S2ActionServlet</servlet-class>
          <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
          </init-param>
          <load-on-startup>2</load-on-startup>
        </servlet>
      
        <servlet>
          <servlet-name>action</servlet-name>
          <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>chainConfig</param-name>
            <param-value>s2struts-chain-config.xml, 
              org/apache/struts/chain/chain-config.xml</param-value>
          </init-param>
          <load-on-startup>2</load-on-startup>
        </servlet>
      

      S2ActionServletは、ActionのコンポーネントをS2コンテナに自動登録する機能を持っていますが、この変更を加えることで、この機能は使えなくなります。 S2ActionServletの自動登録機能を利用している場合は、代わりに次のいずれかの方法でコンポーネントを登録するようにしてください。

      • diconファイルで明示的にコンポーネントを定義する
      • Seasar2のコンポーネント自動登録機能を使用する
      • SMART deployを使用する
        SMART deployの規約にあわせるのが難しい場合は、無理してSMART deployを利用しようとはせず、コンポーネント自動登録機能を利用することを推奨します。

  6. app.diconの修正
    • struts-config.xmlの修正で、S2RequestProcessorを使い続けることを選択した場合、 s2struts.diconの代わりにs2struts-processor.diconをインクルードするように変更します。
    •     <include path="s2struts.dicon"/>
      
          <include path="s2struts-processor.dicon"/>