Interstage Application Server V7.0(以降、Interstage V7.0)での変更内容を説明します。
規約非準拠の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メソッドの復帰値とdeployment 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 | 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拡張情報の「無通信監視時間」に設定してください。
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では無条件に使用できます。
IJServerのタイプが、WebアプリケーションとEJBアプリケーションを同一JavaVMで運用
トランザクション属性に「Mandatory」以外のトランザクション属性を指定して下さい。
IJServerのタイプが、WebアプリケーションとEJBアプリケーションを別JavaVMで運用 または、EJBアプリケーションのみ運用
トランザクション属性にMandatory以外のトランザクション属性を指定するか、トランザクション属性に「Mandatory」を指定する場合は、Interstage管理コンソールの[アプリケーション環境定]より、「ローカル呼出し」に「しない」を設定して下さい。
IPCOMとの連携
Interstage Application ServerでIPCOMと連携する場合、V6.0ではEJBアプリケーションを配備した後に、配備したアプリケーションごとにオブジェクトリファレンスの再登録(オブジェクトリファレンスの確認/削除/再登録)が必要でした。
V7.0以降ではIJServerに負荷分散ホスト名を指定するだけで、EJBアプリケーションの配備時に自動的に環境設定を行いますので、EJBアプリケーションごとの操作は不要です。また、配備済みのEJBアプリケーションに対して、「IJServerの環境設定」の内容を更新するだけで環境設定ができます。
IJServer単位で設定した場合には、非互換はありません。
EJBアプリケーションごとにIPCOMと連携する場合、V6.0と同様にCORBAサービスのコマンドを使用して、アプリケーションの配備後にオブジェクトリファレンスを再登録する手順で設定を行ってください。
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) インプリメンテーションリポジトリ名
ネーミングサービスに登録されたオブジェクトリファレンスを削除します。
以下のコマンドを実行して負荷分散したいEJBアプリケーションのオブジェクトリファレンスを削除してください。
OD_or_adm -d -n [EJBアプリケーション名]
オブジェクトリファレンスを登録します。
以下のように仮想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拡張を使用しない場合、以下の拡張機能が制限されます。
比較述語、BETWEEN述語の値式にjava.lang.Stringが指定できる
LIKE述語のパターンに変数が指定できる
LIKE述語のエスケープ文字に変数が指定できる
NULLに変数が指定できる
INに変数と数値が指定できる
ORDER BY句が指定できる
演算子MODが指定できる
集合関数(MIN、MAX、AVG、SUM、COUNT)が指定できる
セションタイムアウト機能・トランザクションタイムアウト機能
Interstage V7.0以降では、セションタイムアウト機能、トランザクションタイムアウト機能は使用できません。
これらの機能は、Interstage V6.0以前では非推奨機能であり旧資産との互換は保証されているため、代替機能への移行を推奨します。代替機能への移行方法については、「非推奨機能」を参照してください。
同一EJBアプリケーション名の配備
1つのIJServerに同じJNDI名のEJBアプリケーションが配備されないように、EJBアプリケーション名の重複チェックを行います。
IJServerのタイプが「WebアプリケーションとEJBアプリケーションを同一JavaVMで運用」の場合、V6.0では異なるモジュールでも上書きしていましたが、V7.0以降ではモジュールが異なる場合に上書きを行わないようチェックを行います。