Java
struts2

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

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