ページの先頭行へ戻る
Interstage Business Application Server オープンJavaフレームワークユーザーズガイド GlassFish編

2.7.1 V13.0.0以前からの移行

2.7.1.1 V13.0.0のSpring Framework 5からの移行

Spring Frameworkのアップデートに伴い、以下の条件に該当する場合はアプリケーションの修正をしてください。

項番

条件

影響

修正方法

1

リクエストのデータを入力とする@RequestParam等のコントローラメソッド引数が型変換をしている場合

リクエストのデータの空の文字列が型変換によりNULLへ変換される場合、リクエストのデータが欠落しているものとして扱われます。

以下のいずれかへ修正してください。

  • 引数のアノテーションのrequired属性へfalseを指定する

  • 引数を@Nullableとして宣言する

2

@RequestMapping等に指定するパスについて、任意の拡張子(.*)を付与したパスのマッチングも期待して利用している場合

@RequestMapping等のパスマッチングのデフォルトの動作が変わります。

変更前:

  • デフォルトで任意の拡張子(.*)を付与したパスのマッチングも実行される

変更後:

  • デフォルトで任意の拡張子(.*)を付与したパスのマッチングは実行されない

@RequestMapping等の指定パスに任意の拡張子(.*)を付与したパスのマッチングが実行されないことを考慮して、パスを修正してください。

また、変更前の動作をコンテントネゴシエーションに活用している場合は、AcceptヘッダーやURLのクエリパラメーターでの実現を検討してください。

3

JSON形式のデータをHTTPレスポンスへ書き込み処理中に発生する可能性があるJSONのシリアライズエラーをアプリケーションで例外処理している場合

JSONのシリアライズエラーが発生した場合の動作が変わります。

変更前:

  • HTTPレスポンスへ書き込み処理中のデータがHTTPレスポンスへ反映されない。

変更後:

  • HTTPレスポンスへ書き込み処理中のデータがHTTPレスポンスへ反映される。

HTTPレスポンスへ書き込み処理中のデータがHTTPレスポンスへ反映されることを考慮して例外処理を修正してください。

4

Spring Frameworkから同期アプリケーション連携実行基盤のアプリケーションを呼び出す際に、MsyncJCACallクラス経由で呼び出す場合

MsyncJCACallクラスを使用したアプリケーション呼び出し機能は、将来的に機能が廃止されるため、非推奨となります。

本機能の新規使用を控え、現在使用している場合は他の方法への移行を検討してください。

5

リモーティング機能を使用する場合

リモーティング機能は、将来的に機能が廃止されるため、非推奨となります。

本機能の新規使用を控え、現在使用している場合は他の方法への移行を検討してください。

2.7.1.2 Spring Framework 4.3からの移行

Spring Frameworkのバージョン変更に伴い、以下の条件に該当する場合はアプリケーションの修正をしてください。

項番

条件

影響

修正方法

1

Spring IDEを使用する場合

Spring IDEを使用できません。

新たな開発ツールへ移行してください。

またEclipse向けSpring Tool Suite 4へ移行する場合、かつ、XML形式のBean定義ファイルの修正量が多い場合はJava形式のBean定義ファイルを追加し、既存のXML形式のBean定義ファイルから追加したJava形式のBean定義ファイルを参照することを推奨します。実装方法は表の下記の例を参考にしてください。

2

バージョンを含むXSDファイルを指定している場合

バージョンを含むXSDファイルが提供されなくなったため、アプリケーションのビルド時やアプリケーションの起動時にエラーが発生する場合があります。

バージョンを含まないXSDファイルを指定してください。

またXSDファイルのバージョン変更に伴って廃止された属性を置き換えてください。

3

Spring FrameworkのAPIにおいて@Nullableが付与されていない引数にNULLを指定する場合

Spring FrameworkのAPIにおいて@Nullableが付与されていない引数にNULLを指定できなくなりました。@Nullableの付与有無はJavadocを確認してください。

Spring FrameworkのAPIの引数にNULLを指定しないように修正してください。

4

以下のすべての条件に該当する場合です。

  • CookieLocaleResolverでCookieを生成する

  • ロケールの区切り文字が“-”のCookieに対応していないAPIでCookieを読み込む

CookieLocaleResolverが生成するCookieのロケールの区切り文字が変わります。

変更前:

  • “_”

    例“ja_JP”

変更後:

  • “-”

    例“ja-JP”

Cookieを読み込むAPIをロケールの区切り文字“-”に対応しているAPIへ修正してください。

またはCookieLocalResolverのlanguageTagCompliantプロパティをfalseに設定してください。

5

以下のいずれかの条件に該当する場合です。

  • CookieLocaleResolveでCookieを生成する、かつ、ロケールとタイムゾーンの間の区切り文字が"/"のCookieに対応していないAPIでCookieを読み込む

  • APIでロケールとタイムゾーンの間の区切り文字が空白のCookieを生成する、かつ、CookieLocaleResolveでCookieを読み込む

CookieLocaleResolverが生成、および読み込むCookieのロケールとタイムゾーンの間の区切り文字が変わります。

変更前:

  • 空白

    例“ja-JP Asia/Tokyo”

変更後:

  • “/”

    例“ja-JP/Asia/Tokyo”

Cookieを生成、読み込むAPIをロケールとタイムゾーンの間の区切り文字が"/"のCookieを生成、読み込むように修正してください。

6

@RequestMappingのproduces属性にパラメタを含む形式で条件を設定する場合

@RequestMappingのマッチングの判定処理が変わります。

変更前:

  • produces属性で設定した条件のパラメタがマッチングの判定に使用されない

変更後:

  • produces属性で設定した条件のパラメタがマッチングの判定に使用される

パラメタをマッチングの判定に使用しない場合はproduces属性にパラメタを含めない形式で条件を設定してください。

7

以下のすべての条件に該当する場合です。

  • Hibernateを使用する

  • @Transactional(readOnly=true)を付与したクラス、またはメソッドでデータベースからロードしたデータを手動でFlushする

データベースからロードしたデータを手動でFlushした際の動作が変わります。

変更前:

  • データベースへデータ更新が反映される

変更後:

  • データベースへデータ更新が反映されない

@Transactionalを付与したクラス、またはメソッドでデータベースからロードしたデータを手動でFlushしたい場合は@Transactional(readOnly=false)を使用してください。

8

O/Rマッピング連携(JPA)でJNDIからEntityManagerFactoryを取得する場合

アプリケーション実行時にClassCastExceptionが発生し、実行が失敗する場合があります。

O/Rマッピング連携(JPA)を使用する場合は、LocalContainerEntityManagerFactoryBeanを使用してください。

詳細は“2.3.3.5 O/Rマッピング連携(JPA)”を参照してください。

9

以下のすべての条件に該当する場合です。

  • Map型などの、複数のBeanを要素として持つ型の変数へインジェクションする

  • インジェクションするオブジェクトがNULLのBeanの要素を持つ

NULLのBeanの要素がインジェクションされなくなります。

NULLのBeanの要素がインジェクションされないことを考慮して、インジェクション先の変数の使用方法を修正してください。

10

ListableBeanFactory#getBeansOfTypeを使用してNULLのBeanを含むインスタンスを取得していた場合

ListableBeanFactory#getBeansOfTypeの戻り値にNULLのBeanが含まれなくなります。

NULLのBeanが含まれなくなることを考慮して、戻り値の使用方法を修正してください。

11

O/Rマッピング連携(Hibernate)でJTATransactionManagerを使用する場合

アプリケーション実行時にTransactionRequiredExceptionが発生し、実行が失敗する場合があります。

  • ローカルトランザクションを使用する場合、HibernateTransactionManagerを使用してください。詳細は“2.3.3.4 O/Rマッピング連携(Hibernate)”を参照してください。

  • グローバルトランザクションを使用する場合、ORマッピング連携(JPA)を使用してください。詳細は“2.3.3.5 O/Rマッピング連携(JPA)”を参照してください。

<context:component-scan />を使用してXML形式のBean定義ファイルからJava形式のBean定義ファイルを参照する例を示します。

XML形式のBean定義ファイル

…
<beans>
    <context:component-scan base-package="com.example.config" />
    …
<beans>
…

Java形式のBean定義ファイル

@Configuration
@ComponentScan(basePackages="com.example.config")
public class UserConfig{
  …
}

2.7.1.3 Spring Framework 4.3から廃止された機能

Spring Framework 4.3は、Spring Framework 3.2で提供されていた一部のパッケージが削除されています。それにより、Spring Framework 4.3から一部機能が廃止されています。廃止された主な機能を以下に示します。

機能名

パッケージ名

説明

iBATISとの連携

org.springframework.orm.ibatis

Spring Framework 4.3はiBATIS連携が廃止されました。iBATISと同等の実装でO/Rマッピングを使用する場合は、iBATISの後継機能であるMyBatisを使用してください。MyBatisについては、“第3章 MyBatis”を参照してください。

org.springframework.orm.ibatis.support

Strutsとの連携

org.springframework.web.struts

Spring Framework 4.3はStrutsとSpring Frameworkの連携機能が廃止されました。