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

2.7.1 V12.3.0以前からの移行

2.7.1.1 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を指定しないように修正してください。

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

  • 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.2 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の連携機能が廃止されました。