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

5.6.1から5.6.2への移行ガイド

.. only:: html

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

5.6.2での主な変更点

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

  • Spring Boot Dependenciesを2.2.12へ更新
  • Spring Frameworkを5.2.12へ更新
  • Spring Securityを5.2.8へ更新
  • 共通ライブラリの仕様を一部変更
  • ブランクプロジェクトの変更

Spring Boot Dependenciesを2.2.12へ更新

Spring Boot Dependencies 2.2.12.RELEASEへ更新しました。

Spring Frameworkを5.2.12へ更新

Spring Framework 5.2.12.RELEASEへ更新しました。

Spring Securityを5.2.8へ更新

Spring Security 5.2.8.RELEASEへ更新しました。

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

共通ライブラリの一部仕様の変更と機能の追加を行いました。

  • [#1044] @Compare does not support Bean Validation 2.0
  • [#1046] Apply Spring Boot 2.2.12
  • [#1063] Javadoc generation fails when building with JDK 11

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

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

5.6.1から5.6.2への移行手順

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

Note

凡例

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

[全般]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
ステップ 手順 MavenMultiple Projects MavenSingle Project
依存ライブラリを更新 Required Required

[共通ライブラリ]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
ステップ 手順 MavenMultiple Projects MavenSingle Project
共通ライブラリが管理するJavadocプラグインの設定変更に伴う対応 Required by case Required by case
共通ライブラリが提供する入力チェック制約アノテーション @Compare のBean Validation 2.0対応に伴う対応 Optional Optional

[Blank project]

.. tabularcolumns:: |p{0.10\linewidth}|p{0.30\linewidth}|p{0.20\linewidth}|p{0.20\linewidth}|
ステップ 手順 MavenMultiple Projects MavenSingle Project
アプリケーション終了時のログが一部出力されないことへの対応 Required Required
warファイル作成時にWarningが発生する事象への対応 Required Required
Javadoc生成時にエラーが発生する事象への対応 Optional Optional
taglibs-standard-jstlelの依存スコープを変更 Optional Optional
Mavenセントラルリポジトリから取得するOracle JDBCドライバのグループIDを変更 Optional Optional
EntityManagerの設定の変更 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.6.1.RELEASE 5.6.2.RELEASE  
Spring Framework 5.2.3.RELEASE 5.2.12.RELEASE  
Spring Data 2.2.4.RELEASE 2.2.12.RELEASE  
Spring Security 5.2.1.RELEASE 5.2.8.RELEASE  
Hibernate Validator 6.0.18.Final 6.0.21.Final  
Jackson 2.10.2 2.10.5.1  

[手順が必要なケース]

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

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

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

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

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

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

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

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

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

[Step 2] 共通ライブラリが管理するJavadocプラグインの更新に伴う対応

5.6.2より共通ライブラリで管理するmaven-javadoc-pluginの最新化を行いました。

アプリケーションで独自にmaven-javadoc-pluginのバージョンを指定していない場合、自動的にアップグレードされJavadocに変更が生じる可能性があります。

また、上記の更新に加えてmaven-javadoc-pluginの設定を変更し、doclint機能を無効にしました。

doclint機能はJavadocツールが提供する、一般的なJavadocのエラーを検出する機能です。 詳細はjavadocのツール・リファレンスを参照してください。

doclint機能が有効な場合、Javadocコメントに問題があるとエラーが発生します。 doclint機能が無効な場合、問題はWarningで報告されます。

[手順が必要なケース]

以下のいずれかのケースに当てはまる場合、Javadocを確認して必要に応じて修正を行ってください。

  • maven-javadoc-pluginを用いてJavadocを生成している
  • アプリケーションで独自にプラグインのバージョンを指定していない
  • doclint機能を用いてエラー検出を行っている

[修正方法]

プロジェクトのmaven-javadoc-pluginの定義に設定を追加してください。

maven-javadoc-pluginを5.6.1までのバージョンを戻す場合は、以下のようにterasoluna-gfw-parentのpom.xmlに定義されたプロパティを上書きします。 この設定によりdoclint機能についても5.6.1までの動作に戻ります。

  • pom.xml
<properties>
    <!-- omitted -->
    <maven-javadoc-plugin.version>2.10.1</maven-javadoc-plugin.version>  <!-- ### 追加箇所 ### -->
</properties>

maven-javadoc-pluginを5.7.0のバージョンから変更せず、doclint機能を有効にする場合は以下の設定を追加します。

  • pom.xml
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
        <!--omitted-->
        <doclint>all</doclint>  <!-- ### 追加箇所 ### -->
    </configuration>
</plugin>

[Step 3] 共通ライブラリが提供する入力チェック制約アノテーション @Compare のBean Validation 2.0対応に伴う対応

5.5.1から共通ライブラリが提供する入力チェック制約アノテーションはBean Validation 2.0に準拠していますが、 相関項目チェックの @Compare のみ5.6.2から準拠しました。

これに伴い、同一クラスに @Compare を複数付与する場合に @List で囲む必要がなくなりました。 これまで通りに @List で囲んでも正常に動作します。

詳細は、5.5.1の移行ガイドを参照してください。

[Step 4] アプリケーション終了時のログが一部出力されないことへの対応

ブランクプロジェクトベースのアプリケーションでは、アプリケーション終了時に一部のログが出力されないことが分かりました。

Logbackにより自動登録された LogbackServletContextListener がアプリケーション終了時に他のリスナより先にLogbackを停止してしまうことが原因であり、 Springのアプリケーションコンテキストを破棄する際のログが出力されない事象が確認されています。

システム運用やトラブル解析に必要な情報が得られない可能性があるため、Logbackが停止されないようブランクプロジェクトの設定を改善しました。

[手順が必要なケース]

この手順の適用は必須です。適用しなくてもアプリケーションの動作に問題はありませんが、運用を考慮し必ず適用してください。

[修正方法]

Logbackによる LogbackServletContextListener 自動登録を無効化し、 全てのリスナより前に 登録されるよう変更します。

  • web.xml
<!-- ### 追加箇所開始 ### -->
<context-param>
    <param-name>logbackDisableServletContainerInitializer</param-name>
    <param-value>true</param-value>
</context-param>

<listener>
    <listener-class>ch.qos.logback.classic.servlet.LogbackServletContextListener</listener-class>
</listener>
<!-- ### 追加箇所終了 ### -->

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

[Step 5] warファイル作成時にWarningが発生する事象への対応

Java 11を使用してwarファイルの作成を行うとWarningが発生する事象を確認したため、WARプラグインの最新化を行いました。

ブランクプロジェクトで管理するWARプラグインは古いバージョンであるため、更新を行うことを推奨します。

[手順が必要なケース]

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

[修正方法]

pom.xmlに定義されたプロパティを修正してください。

  • pom.xml
<properties>
    <!-- == Maven Plugin Versions == -->
    <maven-war-plugin.version>3.3.1</maven-war-plugin.version>  <!-- ### 変更箇所 ### -->
    <!--omitted-->
</properties>

[Step 6] Javadoc生成時にエラーが発生する事象への対応

ソースコードのjavaバージョンと異なるjavaバージョンを使用してjavadocを生成した場合、エラーが発生する可能性があります。

このエラーはmaven-javadoc-pluginにソースコードのJavaバージョンを指定することで解決するため、ブランクプロジェクトのデフォルトの定義を変更しました。

[手順が必要なケース]

この手順は任意ですが、ブランクプロジェクトに準拠するため修正することを推奨します。

[修正方法]

プロジェクトのpom.xmlに、maven-javadoc-pluginの設定を追加してください。

  • pom.xml
</pluginManagement>
    <plugins>
        <!--omitted-->
        <!-- ### 追加箇所 開始 ### -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
                <source>${java-version}</source>
            </configuration>
        </plugin>
        <!-- ### 追加箇所 終了 ### -->
    </plugins>
</pluginManagement>

[Step 7] taglibs-standard-jstlelの依存スコープを変更

ブランクプロジェクトにデフォルトで定義している依存関係 taglibs-standard-jstlel は実行時に必要なライブラリですが、 これまで compile スコープで定義されていたため、 runtime スコープに変更しました。

[手順が必要なケース]

この手順は任意ですが、ブランクプロジェクトに準拠するため修正することを推奨します。

[修正方法]

taglibs-standard-jstlelruntime スコープに変更します。

  • pom.xml
<!-- Required only for Tomcat. If run on other J2EE server,
    remove this dependency and use provided tag libraries. -->
<dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-jstlel</artifactId>
    <scope>runtime</scope>                            <!-- ### 追加箇所 ### -->
</dependency>

[Step 8] Mavenセントラルリポジトリから取得するOracle JDBCドライバのグループIDを変更

Mavenセントラルリポジトリで公開されているOracle提供ライブラリのグループ体系が再整理され、 JDBCドライバのグループIDが変更されました。 旧グループIDで提供された既存のドライバは継続して提供されますが、新規のドライバは新グループIDで提供されることになります。

これに伴い、ブランクプロジェクトにデフォルトで定義しているOracle JDBCドライバへの依存関係を修正しました。

[手順が必要なケース]

この手順は任意ですが、新グループIDで提供されているバージョンのドライバを利用する場合は修正することを推奨します。

[修正方法]

Oracle JDBCドライバのグループIDを変更します。

  • pom.xml
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>      <!-- ### 変更箇所 ### -->
    <artifactId>ojdbc8</artifactId>
    <version>${ojdbc.version}</version>
    <scope>runtime</scope>
</dependency>

[Step 9] EntityManagerの設定の変更

ブランクプロジェクトにデフォルトで定義しているHibernate ORMのEntityManagerの設定を、開発ガイドラインに準拠するように変更しました。

設定内容の詳細は開発ガイドラインのEntityManagerの設定を参照してください。

[手順が必要なケース]

この手順の適用は任意です。JPA用のブランクプロジェクトを利用している場合は、必要に応じて修正を行ってください。

[修正方法]

EntityManagerのBean定義を変更します。

  • [projectName]-infra.xml
<bean id="jpaVendorAdapter"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="false" />                             <!-- ### 削除箇所 ### -->
    <property name="database" value="${database}" />
</bean>

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <!-- omitted -->
    <property name="jpaPropertyMap">
        <util:map>
            <entry key="hibernate.hbm2ddl.auto" value="" />               <!-- ### 削除箇所 ### -->
            <entry key="hibernate.ejb.naming_strategy"
                value="org.hibernate.cfg.ImprovedNamingStrategy" />       <!-- ### 削除箇所 ### -->
            <entry key="hibernate.connection.charSet" value="UTF-8" />
            <entry key="hibernate.show_sql" value="false" />              <!-- ### 削除箇所 ### -->
            <entry key="hibernate.format_sql" value="false" />
            <entry key="hibernate.use_sql_comments" value="true" />
            <entry key="hibernate.jdbc.batch_size" value="30" />
            <entry key="hibernate.jdbc.fetch_size" value="100" />
        </util:map>
    </property>
</bean>
⚠️ **GitHub.com Fallback** ⚠️