Struts2.5←2.3.xの移行について

  • 10
    Like
  • 0
    Comment
More than 1 year has passed since last update.

GAリリース

Struts2.5 GA リリースされましたので、さっそく移行&検証しました。

公式アナウンス:
https://struts.apache.org/announce.html#a20160509

移行における変更必須のもの

2.5へ移行する際に変更が必須となるものです。

Javaランタイム

7.0以降が必須です。

リリース対象外のプラグイン

次のプラグインは 2.5から存在しません。これらのプラグインを利用している場合は2.5への移行はかなり難しいでしょう。(そもそも2.3.xあたりで動作しなくなるものもあります)別プラグインの検討ないしは変更が必要でしょう。

  • Dojo Plugin - 2.3時代から非推奨にマークされていました。jQueryプラグインが登場したため、切り替わっています。
  • Codebehind Plugin - 2.0時代に使われていましたが、Conventionプラグインが正式採用されると更新されなくなりました。
  • JSF Plugin - 途中で更新が停止
  • Struts1 Plugin - 2.0.xでは使われていましたが、Action/ActionFormを2のActionへ内部的に置き換えてくれるだけで、JSPの対応は一切ないため、使われなくなりました

フィルタのパッケージ変更

web.xmlにて定義する、Struts2用フィルタクラスの パッケージ名が変更 になりました。

  • 新:org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
  • 旧:org.apache.struts2.dispatcher .ng .filter.StrutsPrepareAndExecuteFilter

他にもパッケージ移動したクラスたちがあります。
引用元:http://struts.apache.org/docs/version-notes-25.html

org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter org.apache.struts2.dispatcher .ng .filter.StrutsPrepareAndExecuteFilter
org.apache.struts2.dispatcher.filter.StrutsExecuteFilter org.apache.struts2.dispatcher. ng .filter.StrutsExecuteFilter
org.apache.struts2.dispatcher.filter.StrutsPrepareFilter org.apache.struts2.dispatcher. ng .filter.StrutsPrepareFilter
org.apache.struts2.dispatcher.listener.StrutsListener org.apache.struts2.dispatcher. ng .listener.StrutsListener
org.apache.struts2.result.ServletRedirectResult org.apache.struts2.dispatcher.ServletRedirectResult
com.opensymphony.xwork2.interceptor.ValidationAware com.opensymphony.xwork2.ValidationAware

下の2つは本来の用途とパッケージが合致していなかったですね…。

その他プラグインで注意するところ

Java8-Supportプラグイン

Webwork2(xwork)のパッケージが、すべてstruts2-coreに移動しました。(クラスやパッケージの変更は ほぼ ありません)
そのためJava8-supportプラグインを利用されているプロジェクトの場合は、pom.xmlでasmのバージョンを5.0にしているかと思いますので、pom.xmlの修正が必須です。

pom.xml(抜粋)
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.5</version>
    <exclusions>
        <exclusion>
            <groupId>asm</groupId>
            <artifactId>asm</artifactId>
        </exclusion>
        <exclusion>
            <groupId>asm</groupId>
            <artifactId>asm-commons</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Springプラグイン

Struts2.5ではSpringのバージョンを4.1.6で指定しており、4.1.6以降ないしは4.2.xが必須です。

検証環境

私の検証済み環境とバージョンを列挙します。参考までに。

  • JDK8
  • Tomcat 8.0,33
  • Struts2.5.2
    • Struts2-Spring plugin
    • Struts2-Convention plugin
  • Spring framework 4.2.4.RELEASE
  • Thymeleaf 3.0.2.RELEASE
    • Struts-Thymeleaf plugin(自前) 3.0.2対応
  • Mybatis 3.4.0
  • Log4J 2.7
  • lombok 1.16.6