Migration Guide 5.7.4_ja - terasolunaorg/terasoluna-gfw GitHub Wiki
Note
|
5.7.3.RELEASEから5.7.4.RELEASEの移行手順として説明します。 |
5.7.4での主な変更点は以下の通りです。
-
主要なライブラリのバージョンを更新
-
TERASOLUNA BOMの新規作成
-
共通ライブラリの変更
-
ブランクプロジェクトの変更
TARASOLUNAが使用するOSSライブラリのバージョンを一元管理するため、TERASOLUNA BOMを新規作成しました。
今まで terasoluna-gfw-parent
で定義していたOSSライブラリのバージョンを terasoluna-dependencies
に移動し、 terasoluna-gfw-parent
は terasoluna-dependencies
を継承する形に変更しました。
terasoluna-dependencies
は terasoluna-gfw-parent
から参照されるため、ユーザ側での変更は不要です。
-
共通ライブラリのライブラリ及びMavenプラグインのバージョンを変更
-
機能変更
-
機能改善
-
[single#647] [multi#707] Need to override <developers> and <scm> on pom.xml
-
-
logbackの設定変更
-
[single#620] [multi#680] Resolve logback warnings
-
[single#622] [multi#682] Update Hibernate log output settings
-
-
Servletバージョンの変更
-
[single#637] [multi#697] [5.7.x] Set the servlet version to 4.0.
-
移行手順は、以下の通りです。
依存ライブラリを更新を実施後、必要に応じて手順を適用してください。
Note
|
凡例 |
ステップ | 変更点 | MavenMultiple Projects | MavenSingle Project |
---|---|---|---|
1. |
必須 |
必須 |
|
2. |
任意 |
任意 |
|
3. |
任意 |
任意 |
|
4. |
任意 |
任意 |
|
5. |
任意 |
任意 |
|
6. |
推奨 |
推奨 |
|
7. |
条件付き必須 |
条件付き必須 |
|
8. |
推奨 |
推奨 |
|
9. |
任意 |
任意 |
|
10. |
推奨 |
推奨 |
TERASOLUNA Server Framework for Java (5.x)の共通ライブラリと依存ライブラリを更新してください。
以下に、この手順により更新される代表的な依存ライブラリを示します。
ライブラリ名 | 更新前バージョン | 更新後バージョン | 備考 |
---|---|---|---|
TERASOLUNA Server Framework for Java (5.x) Common Library |
5.7.3.RELEASE |
5.7.4.RELEASE |
|
Spring Framework |
5.3.31 |
5.3.39 |
|
Spring Security |
5.7.11 |
5.7.13 |
|
MyBatis3 |
3.5.15 |
3.5.17 |
|
SLF4J |
2.0.12 |
2.0.16 |
|
Joda Time |
2.12.5 |
2.13.0 |
|
Apache POI |
5.2.5 |
5.3.0 |
|
Google Guava |
33.0.0-jre |
33.3.1-jre |
|
Apache Commons IO |
2.15.1 |
2.18.0 |
|
Lombok |
1.18.30 |
1.18.36 |
[手順が必要なケース]
この手順の適用は必須です。
この更新手順は、Mavenをオンライン環境で使用しており、multi blankまたはsingle blankを使用して作成したプロジェクト向けです。
プロジェクトのPOMファイルの version
を 5.7.4.RELEASE
に修正してください。
-
($YOUR_MULTIPLE_PROJECT_ROOT/pom.xml)
-
($YOUR_SINGLE_PROJECT/pom.xml)
<!-- omitted -->
<parent>
<groupId>org.terasoluna.gfw</groupId>
<artifactId>terasoluna-gfw-parent</artifactId>
<version>5.7.4.RELEASE</version> <!-- ### 修正箇所 ### -->
</parent>
<!-- omitted -->
この更新手順は、依存ライブラリをインターネットにつながる環境でダウンロードし、ダウンロードした依存ライブラリをオフライン環境のプロジェクトに展開することで、Mavenをオフライン環境で使用しているプロジェクト向けです。
以下に記載する手順を実施してください。
-
オンライン環境
-
ブランクプロジェクトを作成
ガイドラインの記述を参考に、archetype:generate
を実行し、5.7.4.RELEASEのブランクプロジェクトを作成してください。 -
依存関係の追加
現行アプリのpom.xmlを確認し、アプリ独自で設定しているdependency
をブランクプロジェクトのpom.xmlに追加してください。
アプリ独自で設定しているdependencyが不明な場合は、現行アプリで採用しているバージョンのブランクプロジェクトも作成して比較してください。 -
ローカルリポジトリへのダウンロード
以下のコマンドを実行し、依存ライブラリおよびMavenビルドに必要となるライブラリやプラグイン等をローカルリポジトリ(repositoryディレクトリ)へダウンロードしてください。mvn -P warpack clean install -Dmaven.repo.local=repository mvn dependency:go-offline -Dmaven.repo.local=repository
-
-
オンライン環境⇒オフライン環境
-
オフライン環境へのコピー
repositoryをオフライン環境の「ユーザのホームディレクトリ/.m2」へコピーしてください。
-
-
オフライン環境
-
POMの修正
オフライン環境のプロジェクトにて、オンライン環境でバージョン更新を実施する場合に記載されている内容と同様に、pom.xmlのバージョン表記を修正してください。 -
ビルドの実行
-
envモジュールのjarファイルをwarファイルに含めない場合
以下のコマンドを実行してください。mvn -P warpack clean install
xxx-env配下に移動し以下のコマンドを実行してください。
mvn -P test-server clean package
-
envモジュールのjarファイルをwarファイルに含める場合
以下のコマンドを実行してください。mvn -P warpack-with-env,test-server clean package
-
-
予期せずSnapshotバージョンのライブラリを使用することを防ぐため、terasoluna-gfw-parent
で定義していたSnapshot Repositoryを削除しました。
[手順が必要なケース]
この手順の適用は任意です。
Snapshot Repositoryが必要な場合は本手順を適用してください。
[修正方法]
本手順は、terasoluna-gfw-parent
に設定されていたSnapshot Repositoryを使用していたユーザ向けです。
以下2つの対応方法について説明します。
-
settings.xmlを修正する場合【推奨】
-
pom.xmlを修正する場合
Note
|
settings.xmlにSnapshot Repositoryを追加することで、本番環境の資材で意図せずにSnapsohtバージョンが参照されることを防ぐことが可能です。 |
settings.xmlにSnapshot用のリポジトリを追加します。
-
Windows : %SystemDrive%\Users\USERNAME\. m2\settings.xml
-
Linux : ~/.m2/settings.xml
settings.xml
のパスは適宜読み替えてください
<profiles>
<profile>
<id>snapshotRepository</id>
<repositories>
<repository>
<id>repository.spring.milestone</id>
<name>Spring Milestone Repository</name>
<url>https://repo.spring.io/milestone</url>
</repository>
<repository>
<id>repository.maven.snapshot</id>
<name>Maven Snapshot Repository</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>snapshotRepository</activeProfile>
</activeProfiles>
この更新手順は、multi blankまたはsingle blankを使用して作成したプロジェクト向けです。
POMファイルに以下を追加してください。
-
($YOUR_MULTIPLE_PROJECT_ROOT/pom.xml)
-
($YOUR_SINGLE_PROJECT/pom.xml)
<!-- omitted -->
<repositories>
<repository>
<id>repository.spring.milestone</id>
<name>Spring Milestone Repository</name>
<url>https://repo.spring.io/milestone</url>
</repository>
<repository>
<id>repository.maven.snapshot</id>
<name>Maven Snapshot Repository</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>
<!-- omitted -->
共通ライブラリが管理するMaven Dependency Pluginプラグインを更新しました。
更新されたプラグインのバージョンについては、以下を参照してください。
[手順が必要なケース]
以下のケースに当てはまる場合、ビルドの挙動を確認して必要に応じて修正を行ってください。
-
共通ライブラリが提供するプラグインのバージョンから変更したい場合
[修正方法]
仕様の詳細はMaven Dependency Pluginを参照して下さい。
なお、terasoluna-gfw-parent
で定義しているプラグインのバージョンを変更したい場合は、terasoluna-gfw-parent
のpom.xmlに定義されたプロパティを自アプリのpom.xmlで上書きします。
例えば Maven Dependency Plugin のバージョンを戻す場合は以下のように定義します。
-
($YOUR_PROJECT/pom.xml)
<properties>
<!-- omitted -->
<org.apache.maven.plugins.maven-dependency-plugin.version>3.2.0</org.apache.maven.plugins.maven-dependency-plugin.version> <!-- ### 修正箇所 ### -->
<!-- omitted -->
</properties>
ブランクプロジェクトで以下のライブラリについてバージョンを固定値で設定していましたが、terasoluna-dependenciesで管理するよう変更しました。
-
io.github.bonigarcia:webdrivermanager
-
org.apache.httpcomponents.client5:httpclient5
-
org.mockito:dbunit
-
com.github.springtestdbunit:spring-test-dbunit
[手順が必要なケース]
本手順は任意です。
プロジェクト側でバージョン定義せずにTERASOLUNAが提供するライブラリのバージョンに従う場合は、バージョン定義を削除してください。
[修正方法]
POMファイルからバージョン定義情報を削除してください。
-
($YOUR_MULTIPLE_PROJECT_ROOT/pom.xml)
-
($YOUR_SINGLE_PROJECT/pom.xml)
<!-- omitted -->
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>${webdrivermanager.version}</version> <!-- ### 削除箇所 ### -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>${httpclient5.version}</version> <!-- ### 削除箇所 ### -->
<scope>test</scope>
</dependency>
<!-- omitted -->
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>${dbunit.version}</version> <!-- ### 削除箇所 ### -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.springtestdbunit</groupId>
<artifactId>spring-test-dbunit</artifactId>
<version>${spring.test.dbunit.version}</version> <!-- ### 削除箇所 ### -->
<scope>test</scope>
</dependency>
<!-- omitted -->
<properties>
<!-- omitted -->
<dbunit.version>2.7.3</dbunit.version> <!-- ### 削除箇所 ### -->
<spring.test.dbunit.version>1.3.0</spring.test.dbunit.version> <!-- ### 削除箇所 ### -->
<webdrivermanager.version>5.6.3</webdrivermanager.version> <!-- ### 削除箇所 ### -->
<httpclient5.version>5.2.3</httpclient5.version> <!-- ### 削除箇所 ### -->
<!-- omitted -->
</properties>
本手順を実施した場合、ライブラリのバージョンはそれぞれ以下のようになります。
アーティファクトID | バージョン | 備考 |
---|---|---|
webdrivermanager |
5.9.2 |
|
httpclient5 |
5.2.3 |
|
dbunit |
2.8.0 |
|
spring-test-dbunit |
1.3.0 |
Oracle公式のFAQ(What are the Oracle JDBC releases Vs JDK versions?)に記載されているOracle DatabaseとJDKの対応表に従い、TERASOLUNAが使用するojdbcのバージョンを更新しました。
[手順が必要なケース]
本手順は任意です。
Oracle Databaseを使用している場合は、使用するJDKバージョンとデータベースのバージョンに合わせ、適切に設定してください。
[修正方法]
下記POMファイルに記載しているojdbc
の設定を修正してください。
-
($YOUR_MULTIPLE_PROJECT_ROOT/pom.xml)
-
($YOUR_SINGLE_PROJECT/pom.xml)
以下のソースコード例は、TERASOLUNAの試験環境で使用しているバージョンに合わせた例です。使用するJDKバージョンとデータベースのバージョンに合わせ、適切に設定してください。
-
JDK8、JDK11の場合
<properties>
<!-- omitted -->
<ojdbc.version>23.6.0.24.10</ojdbc.version> <!-- ### 修正箇所 ### -->
<!-- omitted -->
</properties>
-
JDK17、JDK21の場合
<!-- omitted -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc17</artifactId> <!-- ### 修正箇所 ### -->
<version>${ojdbc.version}</version>
<scope>runtime</scope>
</dependency>
<!-- omitted -->
<properties>
<!-- omitted -->
<ojdbc.version>23.6.0.24.10</ojdbc.version> <!-- ### 修正箇所 ### -->
<!-- omitted -->
</properties>
ブランクプロジェクトではServletバージョン3.0を使用していましたが、Tomcat 9.0.xがサポートするServletバージョン4.0に合わせて、バージョンを更新しました。
[手順が必要なケース]
この手順の適用を推奨します。
[修正方法]
web.xml のスキーマで定義されているServlet3.0の記述を、Servlet4.0に修正してください。
-
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- ### 修正前 ### -->
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- ### 修正前 ### -->
<!-- ### 修正後 ### -->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- ### 修正後 ### -->
terasoluna-gfw-web-security
にJSPに関する不要なライブラリが設定されていたため、Servlet APIを設定するように修正しました。
-
修正前
<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jsp-api</artifactId> <scope>provided</scope> </dependency>
-
修正後
<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <scope>provided</scope> </dependency>
[手順が必要なケース]
JSPに関するライブラリはterasoluna-gfw-web-jsp
で定義されているため、本修正に伴う対応は特にありませんが、JSP関連でエラーが出る場合は依存関係の見直しを行ってください。
Note
|
|
logback.xmlにJPAのログを出力する設定がありましたが、JPAのパッケージ名の変更に伴いログが出力されていませんでした。そのため、ブランクプロジェクトのlogback.xmlの当該設定を修正しています。
[手順が必要なケース]
JPAを使用している場合、この手順の適用を推奨します。
[修正方法]
logback.xmlの設定を修正してください。
<!-- omitted -->
<logger name="org.hibernate.SQL" additivity="true">
<level value="debug" />
</logger>
<logger name="org.hibernate.type"> <!-- ### 修正前 ### -->
<logger name="org.hibernate.orm.jdbc.bind"> <!-- ### 修正後 ### -->
<level value="trace" />
</logger>
<logger name="org.hibernate.engine.transaction">
<level value="debug" />
</logger>
<!-- omitted -->
logback.xmlの修正は本手順以外にlogbackの非推奨な記述を修正にも記載していますので、合わせて参照してください。
pom.xmlに記載するプロジェクト情報は、明示的に設定しない場合parentの情報が設定されます。TERASOLUNAが提供するブランクプロジェクトも、バージョンアップ前は開発者要素(developers
)およびソース管理システム要素(scm
)が設定されていなかったため、terasoluna-gfw-parent
に記載された情報を参照していました。
そのため、開発者が明示的にプロジェクト情報を意識できるようにするため、ブランクプロジェクトに開発者要素およびソース管理システム要素を追加しました。
プロジェクト情報はユーザ側で適切に変更する必要があります。
詳しくは、プロジェクト情報を参照してください。
[手順が必要なケース]
以下のケースに当てはまる場合、必ず修正を行ってください。
-
プロジェクト側で
developers
要素およびscm
要素を設定していない
[修正方法]
POMファイルにdevelopers
要素およびscm
要素を追加し、プロジェクト側で適切に情報を設定してください。また、developers
要素およびscm
要素以外の要素についてもプロジェクト側で適切に設定する必要がある点に注意してください。
以下のコード例は、ブランクプロジェクトに生成時に設定されているプロジェクト情報です。
-
($YOUR_MULTIPLE_PROJECT_ROOT/pom.xml)
-
($YOUR_SINGLE_PROJECT/pom.xml)
<!-- omitted -->
<name>TERASOLUNA Server Framework for Java (5.x) Web Blank Multi Project (JavaConfig)(JSP)(MyBatis3)</name>
<description>Web Blank Multi Project (JavaConfig)(JSP)(MyBatis3) using TERASOLUNA Server Framework for Java (5.x)</description>
<url>http://terasoluna.org</url>
<inceptionYear>2014</inceptionYear>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>manual</distribution>
</license>
</licenses>
<organization>
<name>TERASOLUNA Framework Team</name>
<url>http://terasoluna.org</url>
</organization>
<developers>
<developer>
<name>NTT DATA Group Corporation</name>
<organization>NTT DATA Group Corporation</organization>
<organizationUrl>http://terasolunaorg.github.io/</organizationUrl>
</developer>
</developers>
<scm>
<connection>scm:git:git://github.com/terasolunaorg/terasoluna-gfw-web-multi-blank.git</connection>
<developerConnection>scm:git:ssh://github.com/terasolunaorg/terasoluna-gfw-web-multi-blank.git</developerConnection>
<url>https://github.com/terasolunaorg/terasoluna-gfw-web-multi-blank</url>
</scm>
<!-- omitted -->
ブランクプロジェクトのlogback.xmlではlevelタグを使用してログレベルを指定していたため、以下のWARNログが出力されていました。
WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line xx
WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
[手順が必要なケース]
この手順の適用を推奨します。
[修正方法]
Logback configurationに記載されているとおり、loggerタグのlevel属性を指定するように修正してください。
なお、これ以外にも非推奨な記述方法や、推奨される記述方法があるため、Logback error messages and their meaningsを参照し適切に修正することを推奨します。
-
修正前
<logger name="xxxxxx.yyyyyy.zzzzzz"> <level value="debug" /> </logger>
-
修正後
<logger name="xxxxxx.yyyyyy.zzzzzz" level="debug" />
共通ライブラリで提供しているSystemExceptionResolver
に、以下2つの機能を追加しました。
-
指定した例外のサブクラスも対象とするオプションの追加
-
cause
に設定された例外を確認するオプションの追加
これらのオプションを使用することにより、より柔軟に例外ハンドリングを行うことが可能になります。なお、デフォルトの設定はfalse
となっているため、明示的に変更しない限り挙動に変更はありません。
[使用方法]
それぞれの機能を利用する場合、以下のように SystemExceptionResolver
の設定で checkCause
および checkSubClass
を true
に設定してください。
詳細はガイドラインの原因例外の除外対象確認の有無およびサブクラスの除外対象確認の有無を参照してください。
-
spring-mvc.xml
<bean class="org.terasoluna.gfw.web.exception.SystemExceptionResolver">
<!-- omitted -->
<property name="excludedExceptions">
<array>
<value>com.example.common.CauseException</value>
</array>
</property>
<property name="checkCause" value="true" /> <!-- ### 追加箇所 ### -->
<property name="checkSubClass" value="true" /> <!-- ### 追加箇所 ### -->
<!-- omitted -->
</bean>
共通ライブラリが提供するJSP Tagのf:link
についてRFC 3986に準拠するよう修正しました。
この機能変更により、例えば以下のような#
フラグメント付きのリンクが正しく生成されるようになります。
-
バージョンアップ前
${f:link("http://aaa/bbb#flagment")} → <a href="http://aaa/bbb">http://aaa/bbb</a>#flagment
-
バージョンアップ後
${f:link("http://aaa/bbb#flagment")} → <a href="http://aaa/bbb#flagment">http://aaa/bbb#flagment</a>
[使用方法]
JSPでハイパーリンクを作成する際にご活用ください。
共通ライブラリではf:link
以外にもJSP Tagを提供していますので、詳しくはガイドライン(共通ライブラリが提供するJSP Tag Library と EL Functions)を参照してください。