Interstage Application Server 移行ガイド
目次 索引 前ページ次ページ

第5章 Interstage Application Server V6からの移行

5.5 EJBサービスの移行

 本章では、以前のバージョン・レベルのEJBサービスからの移行について説明します。

規約非準拠のEJBアプリケーションの配備について

 Interstage Application Server V7.0以降では、EJBアプリケーションを配備する際、EJB規約に準拠しているかのチェックが緩和されています。
 以下が、V7.0以降で運用可能となるEJB規約の制限です。

No

Bean種別

チェック対象

チェック内容

1

Enterprise Beanクラス

すべて

ビジネスメソッドがstaticで定義されている。

2

Enterprise Beanクラス

Entity Bean

Enterprise Beanクラスに定義されているejbCreateメソッドの復帰値とdeproyment descriptorに設定されている<prim-key-class>は一致しているが、Enterprise Beanクラスの親のクラスに定義されているejbCreateメソッドの復帰値が<prim-key-class>と一致しない。

3

Enterprise Beanクラス

BMP Entity Bean

Enterprise Beanクラスに定義されているejbFind<〜>メソッドのthrows句にある例外が、Homeインタフェースに定義されているfind<〜>のthrows句にない。

4

Enterprise Beanクラス

Message-driven Bean

ejbCreateメソッドのthrows句にjavax.ejb.CreateExceptionがある。

5

Enterprise Beanクラス

CMP2.0 Entity Bean

ejbCreateメソッドのthrows句にjavax.ejb.CreateExceptionがない。

6

Primary Keyクラス

CMP Entity Bean

deployment descriptorに<primkey-field>が指定されておらず、Primary Keyクラスにpublicではないフィールドがある。

7

Primary Keyクラス

CMP Entity Bean

deployment descriptorに<primkey-field>が指定されておらず、<cmp-field>にないフィールドがPrimary Keyクラスに定義されている。

8

Homeインタフェース

Session Bean
Entity Bean

createメソッドのthrows句にjavax.ejb.CreateExceptionがない。

9

deployment descriptor

CMP2.0 Entity Bean

<multiplicity>に“one”または“many”を指定している。

STATEFUL Session Beanの無通信監視時間

 無通信監視時間のデフォルト値が、30分に変更になりました。30分以上、STATEFUL Session Beanにアクセスしないアプリケーション構成の場合は、以下のエラーが発生する可能性があるため、無通信監視時間を大きく設定してください。

java.rmi.NoSuchObjectException: CORBA OBJECT_NOT_EXIST 0 No; nested
exception is: org.omg.CORBA.OBJECT_NOT_EXIST: CORBA_Request_get_response
minor code: 0 completed: No

 無通信監視時間は、Interstage管理コンソールの[ワークユニット] > [IJServer名] > [EJBアプリケーション]からSTATEFUL Session Beanを選択して、Interstage拡張情報の“無通信監視時間”に設定してください。

◆V6互換のIJServerの場合

 V6互換用のIJServerに配備したSTATEFUL Session Beanのデフォルト値は、以下のとおりです。

プラットフォーム/製品

デフォルト値

Windows(R)

600秒(10分)

上記以外

0秒(時間監視しない)

finderメソッドの復帰値collectionの各種APIサポート

 Interstage Application Server V7.0より、Entity Beanの復帰値Collection型finderメソッドを実行して取得したjava.util.Collectionオブジェクトに対して、java.util.Collectionインターフェースに定義されているすべてのメソッドが使用可能となりました。


 CMP1.1およびBMPで使用する場合には、以下の条件があります。以下の条件で使用しない場合は、V6.0以前の範囲になります。CMP2.0では無条件に使用できます。

TrafficDirectorとの連携

 Interstage Application ServerでTrafficDirectorと連携する場合、V6.0ではEJBアプリケーションを配備した後に、配備したアプリケーションごとにオブジェクトリファレンスの再登録(オブジェクトリファレンスの確認/削除/再登録)が必要でした。
 V7.0以降ではIJServerに負荷分散ホスト名を指定するだけで、EJBアプリケーションの配備時に自動的に環境設定を行いますので、EJBアプリケーションごとの操作は不要です。また、配備済みのEJBアプリケーションに対して、「IJServerの環境設定」の内容を更新をするだけで環境設定ができます。
 IJServer単位で設定した場合には、非互換はありません。

 EJBアプリケーションごとにTrafficDirectorと連携する場合、V6.0と同様にCORBAサービスのコマンドを使用して、アプリケーションの配備後にオブジェクトリファレンスを再登録する手順で設定を行ってください。

  1. odlistns -lコマンドを実行してオブジェクトリファレンス情報を表示して、負荷分散対象のEJBアプリケーションのインタフェースリポジトリ名とインプリメンテーションリポジトリ名を確認します。
    以下にオブジェクトリファレンスの詳細情報の見方を示します。
    *************************************************************************
      Name(Type)      Object information(detail)
                      Default object information(detail)
      EasyBean(o)     RMI:pkgTest.EasyBeanHome:0000000000000000, 
        (a)                           (b)
      IDL:com.fujitsu.interstage.j2ee.ijserver/IJServer001:1.0,
      (march:8002:1.1:UNICODE(UCS2))
                                (c)
    *************************************************************************
       a) EJBアプリケーション名
       b) インタフェースリポジトリ名
       c) インプリメンテーションリポジトリ名
  2. ネーミングサービスに登録されたオブジェクトリファレンスを削除します。
    以下のコマンドを実行して負荷分散したいEJBアプリケーションのオブジェクトリファレンスを削除してください。

    OD_or_adm -d -n [EJBアプリケーション名]


  3. オブジェクトリファレンスを登録します。
    以下のように仮想IPアドレスのホスト名を指定して、1)で確認した情報を指定してオブジェクトリファレンスを再登録します。

    > OD_or_adm -c [インタフェースリポジトリID] -a [インプリメンテーションリポジトリID] -h [仮想IPアドレスのホスト名] -n [アプリケーション名] -p [ポート番号]

    > OD_or_adm -c RMI:pkgTest.EasyBeanHome:0000000000000000 -a IDL:com.fujitsu.interstage.j2ee.ijserver/IJServer001:1.0 -h vhost -p 8002 -n EJB001 (vhostは、仮想IPアドレス)


 オブジェクトリファレンスの再登録後、Interstage管理コンソールの[ワークユニット] > [IJServer名] > [環境設定]からIJServerの更新を行った場合には、再度オブジェクトリファレンスの再登録を行ってください。

EJB QL拡張

 Interstage Application Server V7.0以降でEJB QLを使用する場合、デフォルトでV6.0のEJB QLの機能を拡張したEJB QL拡張が設定されています。

【EJB QL拡張を使用しない場合】

 拡張機能を使用しない(EJB2.0規約の範囲内で運用する)場合は、Interstage管理コンソールの[システム] > [環境設定] の 詳細設定の下にある[EJBサービス詳細設定] を参照し、“CMP2.0のEJB QL拡張”の定義項目を“使用しない”に変更してください。

 EJB QL拡張を使用しない場合、以下の拡張機能が制限されます。

セションタイムアウト機能・トランザクションタイムアウト機能

 Interstage V7.0以降では、セションタイムアウト機能、トランザクションタイムアウト機能は使用できません。
 これらの機能は、Interstage V6.0以前では非推奨機能であり旧資産との互換は保証されているため、代替機能への移行を推奨します。代替機能への移行方法については、非推奨機能を参照してください。

同一EJBアプリケーション名の配備

 1つのIJServerに同じJNDI名のEJBアプリケーションが配備されないように、EJBアプリケーション名の重複チェックを行います。
 IJServerのタイプが「WebアプリケーションとEJBアプリケーションを同一JavaVMで運用」の場合、V6.0では異なるモジュールでも上書きしていましたが、V7.0以降ではモジュールが異なる場合に上書きを行わないようチェックを行います。

Message-driven Bean機能拡張

◆異常時のメッセージ退避機能

 以下の条件を満たす場合、リトライ回数を超過してもメッセージ受信を繰り返す可能性があります。


Point-To-Pointメッセージングモデル:1受信者だけにメッセージを配信するモデル

 イベントチャネルのイベントデータをメモリにキャッシュする数を、イベントチャネルに蓄積できるイベントデータの最大値よりも大きく設定してください。
 設定はイベントサービス運用コマンドを使用して行います。詳細は“リファレンスマニュアル(コマンド編)”の“essetcnf”および“essetcnfchnl”を参照してください。

 Point-To-Pointメッセージングモデルを利用する場合、以下の非互換があります。

 上記に該当する場合は、以下の互換オプションを設定して運用してください。ただし、互換オプションを設定した場合、JMSが受信したメッセージは同時に処理されません。

設定ファイルの格納先


/opt/FJSVejb/etc/FJEJBconfig.properties

設定内容

MDB_ReciveType=reciver

EJBサービス運用コマンド

 Interstage Application Server 8.0では、アプリケーションファイルの権限を指定する機能がサポートされたため、以下のコマンドはアプリケーションファイル保護レベルで指定したユーザで使用してください。
 アプリケーションファイル保護レベルについては、“J2EEユーザズガイド”の“J2EEアプリケーションの配備と設定”を参照してください。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006