Migration Guide 5.6.2_ja - terasolunaorg/terasoluna-gfw GitHub Wiki
.. only:: html .. contents:: 目次 :depth: 2 :local:
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.RELEASEへ更新しました。
Spring Framework 5.2.12.RELEASEへ更新しました。
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
ブランクプロジェクトの一部設定ファイルを変更しました。
- [single#443] [multi#520] Warning about accessing java.util.TreeMap.comparator is displayed.
- [single#445] [multi#491] groupId of Oracle JDBC Driver in Maven Central Repository has bean changed.
- [single#450] [multi#498] scope of taglibs-standard-jstlel has been omitted
- [single#472] [multi#523] EntityManager settings for Hibernate
- [single#479] [multi#529] Cannot output some logs at destroying time
- [single#481] [multi#531] Javadoc generation fails when building with JDK 11
移行手順は、以下の通りです。
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 |
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 |
[手順が必要なケース]
この手順の適用は必須です。
この更新手順は、mvn archetype を使用して作成したプロジェクト向けです。
親プロジェクトのPOMファイルの version
を 5.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 -->
この更新手順は、mvn archetype を使用して作成したプロジェクト、又は release site からダウンロードしたプロジェクト向けです。
プロジェクトのPOMファイルの version
を 5.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 -->
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>
5.5.1から共通ライブラリが提供する入力チェック制約アノテーションはBean Validation 2.0に準拠していますが、 相関項目チェックの @Compare のみ5.6.2から準拠しました。
これに伴い、同一クラスに @Compare を複数付与する場合に @List で囲む必要がなくなりました。 これまで通りに @List で囲んでも正常に動作します。
詳細は、5.5.1の移行ガイドを参照してください。
ブランクプロジェクトベースのアプリケーションでは、アプリケーション終了時に一部のログが出力されないことが分かりました。
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>
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>
ソースコードの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>
ブランクプロジェクトにデフォルトで定義している依存関係 taglibs-standard-jstlel は実行時に必要なライブラリですが、 これまで compile スコープで定義されていたため、 runtime スコープに変更しました。
[手順が必要なケース]
この手順は任意ですが、ブランクプロジェクトに準拠するため修正することを推奨します。
[修正方法]
taglibs-standard-jstlel を runtime スコープに変更します。
- 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>
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>
ブランクプロジェクトにデフォルトで定義している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>