2.3.9 バッチアプリケーションの実装(EJBにアクセスする場合)
バッチアプリケーションからJ2EEアプリケーションのEJBにアクセスできます。EJBにアクセスするバッチアプリケーションを作成する場合,アクセスするEJBを次に示す名称でルックアップして使用できます。
-
自動的にバインドされる名称(Portable Global JNDI名またはHITACHI_EJBから始まる名称)
-
ユーザ指定名前空間機能を使用した別名
EJBにアクセスする場合,次に示す手順でバッチアプリケーションを準備します。
-
バッチアプリケーションからアクセスするEJBの準備
バッチアプリケーションからアクセスするEJBを含むJ2EEアプリケーションを開始状態にします。
-
バッチアプリケーションの実装
バッチアプリケーション内に,EJBを使用するためのコードを実装します。
-
バッチアプリケーションの実行
2.で作成したバッチアプリケーションを実行します。
それぞれの手順の詳細を次に説明します。
(1) EJBの準備
バッチアプリケーションからアクセスするEJBを持つJ2EEアプリケーションを用意します。また,J2EEアプリケーションを実行するためのJ2EEサーバも用意します。J2EEサーバの構築については,マニュアル「アプリケーションサーバ システム構築・運用ガイド」の「4.1 Webサーバを別ホストに配置してマシン性能を向上するシステムの構築」を参照してください。
構築したJ2EEサーバ上で,J2EEアプリケーションを開始します。cjgetstubsjarコマンドを使用して,開始したJ2EEアプリケーションのRMI-IIOPスタブおよびインタフェースを取得しておきます。
なお,バッチアプリケーションからEJBにアクセスする場合,別名によるルックアップをするときは,事前にユーザ指定名前空間機能を使用してEJBの別名を設定しておいてください。EJBの別名の設定については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「2.6 Enterprise BeanまたはJ2EEリソースへの別名付与(ユーザ指定名前空間機能)」を参照してください。
(2) バッチアプリケーションの実装
「2.3.9(1) EJBの準備」で設定したEJBを取得するためのコードを,バッチアプリケーションに実装します。コードの例を次に示します。
String EjbName = <EJBのルックアップ名>; InitialContext ic = new InitialContext(); Object objref = ic.lookup(EjbName); <ホームインタフェースクラス名> home = (<ホームインタフェースクラス名>) PortableRemoteObject.narrow(objref, <ホームインタフェースクラス名>.class); <EJBオブジェクトクラス名> ejbobj = home.create();
ホームインタフェースおよびEJBオブジェクトファイルはあらかじめ準備しておいてください。バッチアプリケーションのコンパイル時および実行時にクラスパスに含める必要があります。
(3) バッチアプリケーションの実行
バッチアプリケーションを実行する場合,クラスパスに「2.3.9(1) EJBの準備」で取得したスタブや「2.3.9(2) バッチアプリケーションの実装」で使用したインタフェースファイルをフルパスで指定します。
EJBを検索するネーミングサービスのURLは,usrconf.properties(バッチアプリケーション用ユーザプロパティファイル)のjava.naming.provider.urlの値として指定します。
ただし,リソース接続機能とEJBアクセス機能を同時に使用する場合は,ネーミングサービス切り替え機能を使用して,EJBをルックアップするネーミングサービスを指定してください。この場合,usrconf.properties(バッチアプリケーション用ユーザプロパティファイル)のjava.naming.provider.urlは指定しないでください。ネーミングサービス切り替え機能については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「2.10 CORBAネーミングサービスの切り替え」を参照してください。