概要
intra-mart の動作している Java-VM に対して J2EE(Java Enterprise Edition)を追加インストールして適応する事により、他の EJB サーバと連携して、EJB サーバにある EJB コンポーネントを intra-mart のファンクションコンテナから呼び出す事ができるようになります。
準備
以下の手順に従って環境構築を行います。
1 |
intra-mart を停止します。
|
2 |
J2EE をインストールします。
J2EE をインストールするのは、Application Runtime の動作しているコンピュータです。
J2EE のインストールに関しては、J2EE のインストール・マニュアルにしたがって下さい。
|
3 |
環境変数およびクラスパスの追加設定をします。
環境設定に関しては、J2EE のインストールマニュアルを参照して下さい。
例)WindowsNT40 で標準インストールの場合
コンソールにおいて以下のコマンドを実行
SET J2EE_HOME=C:\j2sdkee1.2.1
SET PATH=%J2EE_HOME%\bin;%PATH%
%J2EE_HOME%\bin\setenv.bat
|
4 |
intra-mart の各サーバを起動します。
|
EJB コンポーネントの作成
EJB の規約に準拠してクラス作成をして下さい。
また、JavaScript と連携する部分に関しては、自作クラスの呼び出しに準拠するようにして下さい。
作成した EJB コンポーネントの EJB サーバへの登録およびネーミング設定に関しては、各 EJB サーバ製品のマニュアルを参照して下さい。
JavaScript からの呼び出し
クラスパスを適切に設定して Application Runtime を起動します。
ファンクションコンテナ内で以下のようにして、目的の EJB コンポーネントを呼び出します。
例)XXX という EJB コンポーネントを呼び出す場合
var initial = new Packages.javax.naming.InitialContext();
var objref = initial.lookup("XXX");
var home = Packages.javax.rmi.PortableRemoteObject.narrow(objref, java.lang.Class.forName("XXXHome"));
var interfaceXXX = home.create();
|
呼び出された EJB コンポーネントは、JavaScript の変数 interfaceXXX に格納されているので、あとは JAVA 呼び出しの要領で EJB コンポーネントの持つ各APIを実行できます。
サンプル
SUN の J2EE に同梱されている Converter という EJB コンポーネントを呼び出すための手順を示します。
1 |
intra-mart を停止します。
|
2 |
SUN J2EE のドキュメントにしたがって、J2EE に同梱されているサンプル Converter を設定します。
file://c:/j2sdkee1.2.1/doc/guides/ejb/html/Started.fm.html(J2EE1.2.1 を標準インストールした場合)
各ソースファイルのコンパイルおよび設定が完了したら、ドキュメントにしたがって実行して、正常に動作することを確認して下さい。
|
3 |
Converter クラスパスの追加設定をします。
[install_directory]/conf/imart.xml の <java><server><command><option> タグに c:\j2sdkee1.2.1\doc\guides\ejb\examples\converter/\ConverterAppClient.jar(Windows の場合) を追加記述します(intra-mart Administrator を利用する事で簡単に設定ができます)。
|
4 |
intra-mart の各サーバを起動します。
|
5 |
以下のサンプルコードで Converter を呼び出す事が出来ます。
EJB コンポーネントである Converter の実行に成功すると、コンソールに結果が表示されます。
var initial = new Packages.javax.naming.InitialContext();
var objref = initial.lookup("MyConverter");
var home = Packages.javax.rmi.PortableRemoteObject.narrow(objref, java.lang.Class.forName("ConverterHome"));
var interfaceConverter = home.create();
Debug.print(interfaceConverter.dollarToYen(100.00));
Debug.print(interfaceConverter.yenToEuro(100.00));
|
|
注意事項
intra-mart から呼び出す EJB コンポーネントは、intra-mart の動作している Java-VM のバージョンに合わせて作成されたものに限ります。
JAVA および JavaScript で扱う変数型に関する注意事項に関しては、JAVA 標準クラスを呼び出した場合と同様です。
|