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.3はStruts1.3.8とSeasar2.4.xを組み合わせた環境で動作します。
したがって、Struts1.2.9とSeasar2.3を使用するStruts1.2.xをS2Struts1.3.xへ移行するには、StrutsとSeasar2の移行も必須となります。移行は次の手順で行います。
- Struts1.3.8への移行
- Seasar2.4.xへの移行
- S2Struts1.3.xへの移行
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.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への移行は以下の手順で行います。
- 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)を追加します。
- ソースコードの修正
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 型に変更する。
- 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で使用されるのを前提とした記述がされています。
- struts-config.xmlの修正
<!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"/>
- 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の自動登録機能を利用している場合は、代わりに次のいずれかの方法でコンポーネントを登録するようにしてください。
- app.diconの修正
- struts-config.xmlの修正で、S2RequestProcessorを使い続けることを選択した場合、
s2struts.diconの代わりにs2struts-processor.diconをインクルードするように変更します。
<include path="s2struts.dicon"/>
<include path="s2struts-processor.dicon"/>
|