この章では、Red Hatを利用してWebOTX内に配備したJ2EEアプリケーションから
Micro Focus Enterprise Server上のCOBOLサービスを呼び出す手順について、
例題を使用しながら体験します。
このチュートリアルを実行するためには、以下の環境を必要とします:
- ハードウェア
-
- ソフトウェア
- Red Hat Enterprise Linux AS 4.0
- Sun Java 2 SDK 1.4.2
- NEC WebOTX 6.3
- Micro Focus Server Express 4.0 J ServicePack 2
このチュートリアルでは、各ソフトウェアはデフォルトでインストールされたままの状態になっていることを仮定しています。
Server Express はデフォルトのインストール先に Enterprise Serverも含めてインストールされており、
出荷時設定のサーバー ESDEMO がそのままの状態で利用可能になっているものとします。
WebOTX もデフォルトでインストールされており、管理者ユーザ admin/adminadmin で、出荷時設定のドメイン domain1 が利用可能になっているものとします。
このチュートリアルでは、WebOTX AddPack に含まれている以下の簡単な COBOL例題プログラム
CALCU.cbl を使用します。第一、第二の引数を加算し、結果を RESULT に返すというだけのプログラムです:
LINKAGE SECTION.
01 CALCULATOR.
05 ARG1 pic 9(5) comp-3.
05 ARG2 pic 9(5) comp-3.
05 RESULT pic 9(5) comp-3.
procedure division using CALCULATOR.
move ARG1 to RESULT
add ARG2 to RESULT
exit program.
|
このチュートリアルでは、リソースアダプタとして WebOTX AddPackに含まれている\root\RedHat\rar\mfcobol-notx-nec.rar ファイルを使用します。
ここでは、このアダプタを WebOTX に配備します。
- mfcobol-notx-nec.rar を、Red Hat機の作業用ディレクトリにコピーします。
- WebOTXの配備ツールでメニュー「ファイル」−「開く」より mfcobol-notx-nec.rar を開きます。
- 配備するサーバードメインと接続後、メニュー「ツール」−「配備」でmfcobol-notx-nec.rar を配備します。
- WebOTX運用管理コンソールのツリーで「WebOTX管理ドメイン」-「domain1」「アプリケーション」-
「リソースアダプタ」を辿ると「mfcobol-notx-nec」というノードがあることを確認します。
- WebOTX運用管理コンソールのツリーで「WebOTX管理ドメイン」-「domain1」-「リソース」の
「コネクタ コネクション プール」を選択して、「操作情報」−「コネクションプールの登録」から
コネクションプール名称として "CCIMFCobol_v1.0" を各入力項目(idletimeout等)と共に登録します。
- WebOTX運用管理コンソールのツリーで「WebOTX管理ドメイン」-「domain1」-「リソース」の
「コネクタ リソース」を選択して、「操作情報」−「コネクターリソースの登録」からJNDI名
"eis/MFCobol_v1.0" を登録します。
以上で、リソースアダプタの配備は完了しました。
リソースアダプタの配備は、WebOTX 運用管理コマンド (otxadmin) を使って
コマンドラインで行うこともできます。以下にその場合のコマンド実行例を示します:
otxadmin deploy
--user admin --password adminadmin
--host localhost --port 6212
/home/user1/WebOTXAddPack/RedHat/rar/mfcobol-notx-nec.rar
otxadmin create-connector-connection-pool
--user admin --password adminadmin
--host localhost --port 6212
--steadypoolsize 10
--maxpoolsize 20
--maxwait 300000
--idletimeout 5000
--raname mfcobol-notx-nec
--connectiondefinition javax.resource.cci.ConnectionFactory
CCIMFCobol_v1.0
otxadmin create-connector-resource
--user admin --password adminadmin
--host localhost --port 6212
--poolname CCIMFCobol_v1.0
eis/MFCobol_v1.0
ここでは、チュートリアルで使用する COBOLプログラムを Enterprise Serverに配備し、
同時に EJBラッパーを自動生成します。
- 作業用ディレクトリを新規作成し、COBOL 例題プログラム Calcu.cbl をコピーします。
- Server Expressを使用する環境変数を設定します。
- Calcu.cbl をコンパイルします。
$ cob -ug Calcu.cbl
- cobimtkコマンド打鍵し、インターフェイスマッピングツールキットを起動します。
- [File] > [New Service Interface]を選択します。
- サービスインターフェイスグループの新規作成ダイアログが現れます。
ここで [Name] には何でも良いですがグループ名を命名し、[Location] に現在の作業用ディレクトリのパスを入力します。
- EJB Interface を選択して右クリック [New EJB Interface] を選択します。
- マッピングするプログラムを選択する画面が表示されます。
以下のように Enter the name of the COBOL program の [Browse] からCOBOLのプログラムソース
Calcu.cbl を選択し、[Next] をクリックします。
- サービス名を入力する画面が表示されますので、ここでは CalcuServ と入力します。
- インターフェースフィールドの内フィールド名 arg11 と arg21 の方向を "Input" に、
result1 を "Output" に設定します。
- マップ画面を保存して閉じるとサービスインターフェース画面が表示されます。
[EJB Interface] > [CalcuServ] を右クリックし、ポップアップメニューの [Settings...] を選択します。
- 以下のマッピング属性画面が表示されます。
[Deployment Server] の [Service name] タブグに CalcuServが入っていることを確認してください。
入っていない場合は修正してください。
- [Application Files] タブでは、コンパイル済みの Calcu.gnt、Calcu.idy、Calcu.cbl を追加します。
- [EJB Generation] タブでは /opt/WebOTX/lib/j2ee.jar を参照から選択します。
(WebOTXがディフォルトでインストールしている場合)
[Application Server] はここでは [Weblogic 8.1] を選択します。
それ以外はディフォルト値のままにします。
- 別途 Telnetセッションを開き、casstart コマンドで、
デフォルトの ESDEMO サーバーを開始しておきます。
$ casstart
CASCD0167I ES Daemon successfully auto-started 10:23:38
CASCD0050I ES "ESDEMO" initiation is starting 10:23:38
$
(この Telnetセッションは後で使用しますので、そのまま開いた状態にしておいてください。)
- [EJB Interface] > [CalcuServ] を選択して右クリックして [Deploy] を選択します。
これでEnterprise Server 上にCOBOLサービスマッピングが配備されました。
- この時作業用ディレクトリの repos/CalcuServ.deploy に
EJBラッパー CalcuServ.jar が自動生成されています。ソースファイルとともに生成されていますので確認してください。
- WebOTXの配備ツールでメニュー [File] > [Open] より CalcuServ.jar を開きます。
- この際、モジュールを J2EE1.4 のフォーマットに変換する旨のメッセージ画面が出ますので [Yes]
を選択します。
- 続いてWebOTX上で「WebOTX」固有の設定でEJBのJNDI名を "CalcuServ" 、
リソースのJNDI名を "eis/MFCobol_v1.0" に設定します。
- 以上の設定が完了したら配備するサーバードメインと接続後、メニューの
[Tool] > [Deploy] で配備します。配備先に CalcuServClient.jar が生成されているのが分かります。
$ pwd
/opt/WebOTX/domains/domain1/applications/j2ee-modules/CalcuServ
$ ls
CalcuServClient.jar META-INF com
$
WebOTX AddPack には以下の J2EEクライアントアプリケーション CalcuClient.java が添付されています。
import javax.naming.*;
import com.mypackage.CalcuServ.*;
public class CalcuClient {
public static void main(String[] args) {
try {
InitialContext initCtx = new InitialContext();
Object objRef = initCtx.lookup("CalcuServ");
CalcuServHome home = (CalcuServHome) javax.rmi.PortableRemoteObject.narrow(
objRef, CalcuServHome.class);
CalcuServ bean = home.create();
int p0 = 11, p1 = 21, p2 = 0;
p2 = bean.CALCU(p0, p1);
System.out.println("11 + 21 = " + p2);
} catch (javax.naming.NamingException ne) {
System.out.println("Nmaing Exception caught: " + ne);
} catch (javax.ejb.CreateException ce) {
System.out.println("Create Exception caught: " + ce);
} catch (java.rmi.RemoteException re) {
System.out.println("Remote Exception caught: " + re);
}
}
}
|
これを使用して、配備された EJB を呼び出してみます。
- Java 2 SDK 1.4.2 を使用するための PATH を設定します。
- CalcuClient.java を作業用ディレクトリにコピーします。
- CLASSPATH に以下の 3件を追加します。
. (カレントディレクトリ)
/opt/WebOTX/lib/j2ee.jar
repos/CalcuServ.deploy/CalcuServ.jar
- CalcuClient.java をコンパイルします。
$ javac CalcuClient.java
- CLASSPATH に以下の 7件を追加します。
/opt/ObjectSpinner/lib/jsocks.jar
/opt/ObjectSpinner/lib/ospiname50.jar
/opt/ObjectSpinner/lib/ospiorb50.jar
/opt/WebOTX/lib/appclient/jndiclt.jar
/opt/WebOTX/lib/wosv-rt.jar
/opt/WebOTX/TS/javalib/wots61.jar
/opt/WebOTX/lib/wojdbc61.jar
- CalcuClient.class を実行します。
$ java CalcuClient
11 + 21 = 32
- 以上のように COBOLサービスが実行されて結果が返っていることが確認できました。
次にこの COBOLサービスを Enterprise Server下でデバッグしてみます。
- casstartコマンドを実行したシェルセッションで cassi /a コマンドを実行し、
Enterprise Server のサービスをデバッグモードにします。
$ cassi /a
CASSI1500I SEP initialization started 10:18:51
CASSI9009I Debug initialization for ALL successful 10:18:52
CASSI1600I SEP initialization completed successfully 10:18:52
- 再度 CalcuClient.class を実行します。
$ java CalcuClient
- 以下のようにデバッグ画面にCOBOLサービスの手続き部が立ち上がりますので、図のように
ステップ実行して正しく起動されていることを確認します。
- EXIT PROGRAM 文まで実行を進めると、Javaクライアント側に COBOLによる計算結果が返ることが確認できます。
$ java CalcuClient
11 + 21 = 32
インターフェイスマッピングツールキットのクライアント生成機能を使用すると、
対話型でパラメタの値を受け取り、EJBのメソッドを呼び出して結果を表示するような、
簡単な Servletモジュールを含む、.ear パッケージを作成できます。
ここでは、これを使用して WebOTX上の Webクライアントからの呼び出しを行います。
- WebOTXの配備ツールで、配備済みの EJB CalcuServ を
[Undeploy] ボタンで配備解除します。
これは、これから配備する .ear パッケージに同じ EJB が重複して含まれているためです。
- 3.3 で COBOLサービスを配備したインターフェイスマッピングツールキットに戻り、
[EJB Interface] > [CalcuServ] を右クリックして "Generate Client" を選択します。
- この時作業用ディレクトリの repos/CalcuServ.deploy に
パッケージ CalcuServ.ear が自動生成されています。ソースファイルとともに生成されていますので確認してください。
- WebOTXの配備ツールでメニュー [File] > [Open] より CalcuServ.ear を開きます。
- この際、モジュールを J2EE1.4 のフォーマットに変換する旨のメッセージ画面が出ますので [Yes]
を選択します。
- 続いてWebOTX上で「WebOTX」固有の設定でEJBのJNDI名を "CalcuServ" 、
リソースのJNDI名を "eis/MFCobol_v1.0" に設定します。
- 以上の設定をして、配備ツールで一旦 ear を保存して上書きします。
この時に、nec-application.xml 等の WebOTX 仕様のXML及びプロパティファイルが
ear にアドオンされます。
- 以上の設定が完了したら再び配備ツールで ear を開き、配備するサーバードメインと接続後、
メニューの [tool] > [deploy] で配備します。
- 以上で、EJB と Webアプリケーションが同時に配備されました。
Webブラウザを開き、"http://localhost/CalsuServ/CALCU.jsp" を開きます。
- add_arg1, add_arg2 に数値を入力し、[Go!] をクリックします。
- COBOLのデバッグモードが有効であれば、先ほどと同様にデバッガによるステップ実行となります。
- EXIT PROGRAM 文まで実行を進めると、JSP側に結果が返ります。
以上でチュートリアルを終了します。
Copyright © 2006 Micro Focus International Limited. All rights reserved.