別プロセスのEJB呼び出し
J2EE機能で以下の構成図にあるような別プロセスのEJB呼び出しに該当する呼び出しを行っていた場合、Java EE 7に移行するとき、呼び出し先のIIOPポートを意識した設定を行う必要があります。
Java EE 7では、別IJServerクラスタ上のプロセスまたはリモートサーバのネーミングサービスに登録されたEnterprise JavaBeanにアクセスする場合には、他ネーミングサービス連携機能またはInteroperable Naming Service(以降、INS)の規則を使用する必要があります。
詳細については「4.12.3 クライアントからサーバに接続する場合の設定」の「IJServerクラスタの場合」を参照してください。
EJBインスタンスの作成タイミング
J2EEはプロセス起動時にEJBインスタンスを作成していたのに対し、Java EE 7はアプリケーションの初回アクセス時に作成します。アプリケーション初回アクセス時の性能劣化が懸念されるため、性能測定を実施して確認してください。
Stateful Session Beanのキャッシュ管理
J2EEは最大サイズを超えるリクエストを受けるとエラーを返却します。
Java EE 7は最大サイズを超えるとキャッシュをpassivate(※)してリクエストを受付けます。
(※)Beanインスタンスをファイルとして格納し、メモリを解放すること。
以下の2点の影響があります。
1.キャッシュをpassivateするため、最大サイズを超えた際のエラーが発生しなくなります。当該エラー処理の確認が必要です。
2.最大キャッシュサイズ(キャッシュされたBeanインスタンスの数)のデフォルト値がJ2EEとJava EE 7で異なります。デフォルト値で運用していないか確認してください。以下にそれぞれの最大キャッシュサイズのデフォルト値を記載します。
J2EE:1024
Java EE 7:512
必要に応じて、適切な最大キャッシュサイズを設定してください。また、最大キャッシュサイズを修正する場合、ヒープサイズのチューニングも必要になります。ヒープサイズのチューニング方法については、「6.3.2 Java VMのヒープ領域サイズ/メタスペースサイズ」を参照してください。
JNDI名に指定するサブコンテキストの省略可否
J2EEでは、アプリケーションでJNDIのlookupメソッドを実行するときに"java:comp/env"や"jdbc/"を引数から省略できますが、Java EE 7では必ず指定する必要があります。
アプリケーションの中で、lookupメソッドを使用している箇所を検索してください。該当した箇所について、lookupメソッドの引数を確認してください。
lookupメソッドの引数にはネーミングサービスを使用する場合と環境ネーミングコンテキストを使用する場合の2つのパターンがあります。2つのパターンの違いについては「2.14.3 ネーミングサービスと環境ネーミングコンテキストの仕様差異」を参照してください。
[ネーミングサービスを使用する場合]
修正の必要はありません。
[環境ネーミングコンテキストを使用する場合]
サブコンテキストが省略されていないか確認してください。サブコンテキストが省略されている場合、「環境ネーミングコンテキストで参照可能なオブジェクト」にある「JNDIのlookupメソッドに指定する名前」の記載を基に修正してください。
オブジェクトリファレンスのキャッシュ
オブジェクトリファレンスのキャッシュは、lookupメソッド実行時に取得されるオブジェクトリファレンスがコンテナ内でキャッシュされる機能です。アプリケーションでリクエストの度にlookupを実施している場合、2回目のlookupは、コンテナ内にキャッシュされているオブジェクトリファレンスが返却されます。J2EEではデフォルトで動作しますが、Java EE 7にはキャッシュ機能がありません。
キャッシュ機能がないことで、性能劣化が懸念されるため、性能試験を実施して問題がないことを確認してください。
システムの構成上、リクエストの度にlookupを実施する必要がないのであれば、アプリケーション内でオブジェクトリファレンスをキャッシュすることを検討してください。
Entity Beanのデサポート
Java EE 7はEntity Beanをサポートしません。Entity Beanの代わりにJPA機能を使用してください。