Migration Guide 5.1.1_ja - terasolunaorg/terasoluna-gfw GitHub Wiki

5.1.0から5.1.1への移行ガイド

.. only:: html

 .. contents:: 目次
    :depth: 2
    :local:

5.1.1での主な変更点

5.1.1での主な変更点は以下の通りです。

MyBatisを3.3.1へ更新

5.1.1から、下記のバグ修正を取り込むために、MyBatis 3.3.1へ更新しました。 この更新にあわせて、MyBatis Springを1.2.5へ更新しました。

  • [#492] NPE when ResultSet is null

共通ライブラリの仕様を一部変更

5.1.1から、バグ修正に伴い共通ライブラリの一部仕様を変更しました。

  • [#554] MessagePanelTag doesn't close with </div> when it's empty
  • [#565] TransactionToken does not support some special flows
  • [#593] createToken() of TransactionTokenContextImpl does not work properly

ブランクプロジェクトの変更

5.1.1から、ブランクプロジェクトの一部設定ファイルを変更しました。

共通ライブラリの修正に伴った変更

セキュリティの脆弱性[(CVE-2016-5007)]を解決するための変更

  • [single#201] [multi#244] Add workaround settings for CVE-2016-5007(Path Matching Inconsistency)

5.1.0から5.1.1への移行手順

移行手順は、以下の通りです。

Note

凡例

Required : 手順の適用は必須
Required by case : 手順の適用は条件付きで必須
Optional : 手順の適用を推奨 (必要に応じて手順の適用を実施)
- : 手順の適用は必要なし

[全般]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
ステップ 手順 MavenMultiple Projects MavenSingle Project EclipseWTP Project
依存ライブラリを更新 Required Required Required
RestClientのHTTPプロキシ設定の変更 Optional Optional Optional

[Spring Security]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
ステップ 手順 MavenMultiple Projects MavenSingle Project EclipseWTP Project
[CVE-2016-5007] MVC Path Matching Inconsistencyの脆弱性解決のための設定 Required Required Required

[Apache Commons Fileupload]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
ステップ 手順 MavenMultiple Projects MavenSingle Project EclipseWTP Project
[CVE-2016-3092] Apache Commons Fileuploadの脆弱性解決のための設定 Required by case Required by case Required by case

[MyBatis Spring]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
ステップ 手順 MavenMultiple Projects MavenSingle Project EclipseWTP Project
SqlSessionTemplateをBean定義すると、アプリケーション終了時にWARNログが出力されるバグの解消に伴う暫定対処解除 Required by case Required by case Required by case

[共通ライブラリ]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
ステップ 手順 MavenMultiple Projects MavenSingle Project EclipseWTP Project
MassagePanelTagの仕様変更に伴う修正 Required by case Required by case Required by case
TransactionTokenContextの非推奨化に伴う修正 Required by case Required by case Required by case
@TransactionTokenCheckのtype属性、TransactionTokenType.CHECKの追加に伴う修正 Optional Optional Optional

[Step 1] 依存ライブラリを更新

TERASOLUNA Server Framework for Java (5.x)の共通ライブラリと依存ライブラリを更新してください。

.. tabularcolumns:: |p{0.35\linewidth}|p{0.25\linewidth}|p{0.25\linewidth}|p{0.15\linewidth}|
ライブラリ名 更新前バージョン 更新後バージョン 備考
TERASOLUNA Server Framework for Java (5.x) Common Library 5.1.0.RELEASE 5.1.1.RELEASE  
MyBatis 3.3.0 3.3.1  
MyBatis Spring 1.2.3 1.2.5  

[手順が必要なケース]

この手順の適用は必須です。

[Step 1-1] Maven Multiple Projectsを利用している場合

この更新手順は、mvn archetype を使用して作成したプロジェクト向けです。

親プロジェクトのpomファイルの version5.1.1.RELEASE に修正してください。

  • ($YOUR_MULTIPLE_PROJECT_ROOT/pom.xml)
<!-- omitted -->
<parent>
    <groupId>org.terasoluna.gfw</groupId>
    <artifactId>terasoluna-gfw-parent</artifactId>
    <version>5.1.1.RELEASE</version>                    <!-- ### 修正箇所 ### -->
</parent>
<!-- omitted -->

[Step 1-2] Maven Single Projectを利用している場合

この更新手順は、mvn archetype を使用して作成したプロジェクト、又は release site からダウンロードしたプロジェクト向けです。

プロジェクトのpomファイルの version5.1.1.RELEASE にしてください。

  • ($YOUR_SINGLE_PROJECT/pom.xml)
<!-- omitted -->
<parent>
    <groupId>org.terasoluna.gfw</groupId>
    <artifactId>terasoluna-gfw-parent</artifactId>
    <version>5.1.1.RELEASE</version>                    <!-- ### 修正箇所 ### -->
</parent>
<!-- omitted -->

[Step 1-3] Eclipse WTP Projectを利用している場合

この更新手順は、release site からダウンロードしたEclipse WTPプロジェクト向けです。

更新手順は、Eclipse WTP Project使用時のライブラリ更新 を参照してください。

[Step 2] RestClientのHTTPプロキシ設定の変更

5.1.1から、アプリケーション全体に影響を与えてしまうため、 システムプロパティからRestClientへHTTPプロキシの推奨設定を変更しました。

[手順が必要なケース]

RestClientのHTTPプロキシの設定をシステムプロパティに行っている場合、この手順の適用推奨します。

[修正方法]

SimpleClientHttpRequestFactoryまたはHttpComponentsClientHttpRequestFactoryを使用し、 RestTemplate毎にHTTP Proxyサーバの設定を行うよう修正を行ってください。

【修正前】

  • システムプロパティに設定する例
//omitted

@Value("${api.proxy.host}")
String proxyHost;

@Value("${api.proxy.portNum}")
String proxyPort;

// omitted

System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);

【修正後】

修正後の実装についてはガイドラインのHTTP Proxyサーバの設定方法を参照してください。 ( English または Japanese )

[Step 3] [CVE-2016-5007] MVC Path Matching Inconsistencyの脆弱性解決のための設定

[手順が必要なケース]

この手順の適用は必須です。

ただし、意図的にスペースの入ったURLを使用している場合、これを適用することでシステムが正常に動作しなくなる可能性があるのでご注意ください。

[修正方法]

spring-mvc.xmlに下記設定を追加してください。

【修正前】

<mvc:annotation-driven>
   <!-- omitted -->
</mvc:annotation-driven>

【修正後】

<mvc:annotation-driven>
   <!-- omitted -->
   <mvc:path-matching path-matcher="pathMatcher" />
</mvc:annotation-driven>


<bean id="pathMatcher" class="org.springframework.util.AntPathMatcher">
    <property name="trimTokens" value="false" />
</bean>

詳細は、アクセスポリシーを適用するWebリソースの指定のWarningを参照してください。 ( English または Japanese )

[Step 4] CVE-2016-3092 Apache Commons Fileuploadの脆弱性解決のための設定

下記脆弱性への対処が必要な場合があります。

[CVE-2016-3092] Apache Commons Fileupload information disclosure vulnerability

[手順が必要なケース]

5.1.1が準拠しているSpring IO Platform 2.0.1.RELEASEで管理されているバージョンのApache Commons Fileuploadを使用した場合、 CVE-2016-3092で報告されている脆弱性が発生します。

また、独自にApache Commons Fileuploadのバージョンを変更して使用している場合も同様です。

詳細はガイドラインのFile Upload Warningを参照してください。 ( English または Japanese )

[修正方法]

Apache Commons Fileuploadを使用する場合、バージョン1.3.2以上を使用します。

【修正前】

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

【修正後】

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.2</version>
</dependency>

[Step 5] SqlSessionTemplateをBean定義すると、アプリケーション終了時にWARNログが出力されるバグの解消に伴う暫定対処解除

5.1.1から、MyBatis Springを1.2.5へ更新したことでバグの修正が行われました。

[手順が必要なケース]

SqlSessionTemplateをBean定義すると、アプリケーション終了時にWARNログが出力されるバグに対する暫定対処を行っていた場合、 必要に応じて修正を行ってください。

[修正内容]

SpringのApplicationContextの終了処理時に呼び出されるメソッド(destroy-method属性)を削除する。

【修正前】

<bean id="batchSqlSessionTemplate"
      class="org.mybatis.spring.SqlSessionTemplate"
      destroy-method="getExecutorType">
    <constructor-arg index="0" ref="sqlSessionFactory"/>
    <constructor-arg index="1" value="BATCH"/>
</bean>

【修正後】

<bean id="batchSqlSessionTemplate"
      class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="sqlSessionFactory"/>
    <constructor-arg index="1" value="BATCH"/>
</bean>

[Step 6] MassagePanelTagの仕様変更に伴う修正

[手順が必要なケース]

MassagePanelTagの仕様を意識したテスト等の実装を行っている場合、修正が必要です。

[仕様変更内容]

値が空の場合、<div/>を出力していましたが、 空の場合でも完全タグ<div></div>を出力するように変更しました。

詳細は以下を参照してください。

  • [#554] MessagePanelTag doesn't close with </div> when it's empty

[Step 7] TransactionTokenContextの非推奨化に伴う修正

5.1.1から、TransactionTokenContextが非推奨になりました。

[手順が必要なケース]

TransactionTokenContextを使用していた場合、使用しないよう修正が必要です。

[備考]

TransactionTokenContextが提供していたアプリケーション向けAPIを使用した場合、 TransactionTokenを正しい状態に維持できなくなるなど、フレームワーク内部の挙動に影響を及ぼすような作り込みができてしまうことから、 当該APIを利用しないことを推奨します。

[Step 8] @TransactionTokenCheckのtype属性、TransactionTokenType.CHECKの追加に伴う修正

[手順が必要なケース]

この手順の適用は任意です。必要に応じて、確認を行ってください

[仕様変更内容]

@TransactionTokenCheckのtype属性にTransactionTokenType.CHECKが追加されました。

詳細は、ガイドラインの@TransactionTokenCheckアノテーションの属性についての項番3、typeのCHECKを参照してください。 ( English または Japanese )

5.1.1用のAppendix

Eclipse WTP Project使用時のライブラリ更新

この更新手順は、release site からダウンロードしたEclipse WTPプロジェクト向けです。

Note

凡例

[テーブルヘッダ]
Non : O/R Mapperに非依存のブランクプロジェクト
MB3 : MyBatis3用のブランクプロジェクト
JPA : JPA用のブランクプロジェクト
[備考欄]
* : オペレーション対象

[Step 1]

Eclipse WTP Project of 5.1.1.RELEASE をダウンロードしてください。

[Step 2]

Eclipseが起動している場合、Eclipseを終了します。

[Step 3]

$YOUR_ECLIPSE_WTP_PROJECT/src/main/webapp/WEB-INF/lib のjarファイルを更新(削除して追加)してください。

.. tabularcolumns:: |p{0.25\linewidth}|p{0.30\linewidth}|p{0.30\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|
ライブラリ名 削除ファイル 追加ファイル Non MB3 JPA
TERASOLUNA Server Framework for Java (5.x) Common Library terasoluna-gfw-common-5.1.0.RELEASE.jar terasoluna-gfw-common-5.1.1.RELEASE.jar * * *
  terasoluna-gfw-jodatime-5.1.0.RELEASE.jar terasoluna-gfw-jodatime-5.1.1.RELEASE.jar * * *
  terasoluna-gfw-security-core-5.1.0.RELEASE.jar terasoluna-gfw-security-core-5.1.1.RELEASE.jar * * *
  terasoluna-gfw-security-web-5.1.0.RELEASE.jar terasoluna-gfw-security-web-5.1.1.RELEASE.jar * * *
  terasoluna-gfw-web-5.1.0.RELEASE.jar terasoluna-gfw-web-5.1.1.RELEASE.jar * * *
  terasoluna-gfw-web-jsp-5.1.0.RELEASE.jar terasoluna-gfw-web-jsp-5.1.1.RELEASE.jar * * *
  terasoluna-gfw-mybatis3-5.1.0.RELEASE.jar terasoluna-gfw-mybatis3-5.1.1.RELEASE.jar *
  terasoluna-gfw-jpa-5.1.0.RELEASE.jar terasoluna-gfw-jpa-5.1.1.RELEASE.jar *
MyBatis mybatis-3.3.0.jar mybatis-3.3.1.jar *
  mybatis-spring-1.2.3.jar mybatis-spring-1.2.5.jar *

[Step 4]

$YOUR_ECLIPSE_WTP_PROJECT/libsrc のソース格納用jarファイルを更新(削除して追加)してください。

.. tabularcolumns:: |p{0.25\linewidth}|p{0.30\linewidth}|p{0.30\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|
ライブラリ名 削除ファイル 追加ファイル Non MB3 JPA
TERASOLUNA Server Framework for Java (5.x) Common Library terasoluna-gfw-common-5.1.0.RELEASE-sources.jar terasoluna-gfw-common-5.1.1.RELEASE-sources.jar * * *
  terasoluna-gfw-jodatime-5.1.0.RELEASE-sources.jar terasoluna-gfw-jodatime-5.1.1.RELEASE-sources.jar * * *
  terasoluna-gfw-security-web-5.1.0.RELEASE-sources.jar terasoluna-gfw-security-web-5.1.1.RELEASE-sources.jar * * *
  terasoluna-gfw-web-5.1.0.RELEASE-sources.jar terasoluna-gfw-web-5.1.1.RELEASE-sources.jar * * *
  terasoluna-gfw-web-jsp-5.1.0.RELEASE-sources.jar terasoluna-gfw-web-jsp-5.1.1.RELEASE-sources.jar * * *
MyBatis mybatis-3.3.0-sources.jar mybatis-3.3.1-sources.jar *
  mybatis-spring-1.2.3-sources.jar mybatis-spring-1.2.5-sources.jar *

[Step 6]

置換文字列を使用して、参照ライブラリを更新してください。

  • $YOUR_ECLIPSE_WTP_PROJECT/.classpath
  • $YOUR_ECLIPSE_WTP_PROJECT/build.xml
.. tabularcolumns:: |p{0.25\linewidth}|p{0.30\linewidth}|p{0.30\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|p{0.05\linewidth}|
ライブラリ名 置換対象文字 置換文字 Non MB3 JPA
TERASOLUNA Server Framework for Java (5.x) Common Library terasoluna-gfw-common-5.1.0.RELEASE terasoluna-gfw-common-5.1.1.RELEASE * * *
  terasoluna-gfw-jodatime-5.1.0.RELEASE terasoluna-gfw-jodatime-5.1.1.RELEASE * * *
  terasoluna-gfw-security-web-5.1.0.RELEASE terasoluna-gfw-security-web-5.1.1.RELEASE * * *
  terasoluna-gfw-web-5.1.0.RELEASE terasoluna-gfw-web-5.1.1.RELEASE * * *
  terasoluna-gfw-web-jsp-5.1.0.RELEASE terasoluna-gfw-web-jsp-5.1.1.RELEASE * * *
MyBatis mybatis-3.3.0 mybatis-3.3.1 *
  mybatis-spring-1.2.3 mybatis-spring-1.2.5 *
⚠️ **GitHub.com Fallback** ⚠️