サーバアプリケーションをCORBAサービスのインプリメンテーションリポジトリとネーミングサービスへ登録する必要があります。OD_impl_instコマンドおよびOD_or_admコマンドを使用して登録してください。
インプリメンテーションリポジトリとネーミングサービスへの登録について、以下に示します。
サーバアプリケーション情報のインプリメンテーションリポジトリへの登録
サーバアプリケーションのオブジェクトリファレンスの作成とネーミングサービスへの登録
■サーバアプリケーション情報のインプリメンテーションリポジトリへの登録
OD_impl_instコマンドを使用して、インプリメンテーションリポジトリにサーバアプリケーション情報を登録します。OD_impl_instコマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「CORBAサービス運用コマンド」-「OD_impl_inst」を参照してください。
OD_impl_inst -ax defname
なお、OD_impl_instコマンド実行時に指定するCORBAアプリケーション情報定義ファイルのアプリケーション固有データには、以下のようにサーバアプリケーションが使用するリソース定義ファイルを指定する必要があります。
アプリケーション固有データ(項目名:data)は、ダブルクォーテーション("")で囲んで、"RESOURCE:[RM名:]リソース定義名"と指定してください。扱うリソースが1個の場合は、RM名を省略できます。なお、アプリケーションをマルチプロセス運用する場合は、thr_conc_initに「1」を指定してください。
Rep_id = IDL:ODdemo/calculator:1.0 type = persistent proc_conc_max = 8 thr_conc_init = 1 IDL:ODdemo/calculator:1.0 = ODDEMO-CALCULATOR.DLL mode = SYNC_END data = "RESOURCE:resource1"
Rep_id = IDL:ODdemo/calculator:1.0 type = persistent proc_conc_max = 8 thr_conc_init = 1 IDL:ODdemo/calculator:1.0 = /home/guest/libODDEMO-CALCULATOR.so env = LD_LIBRARY_PATH=/opt/FSUNots/lib:/opt/FSUNod/lib/nt;OTS_HOME=/opt/FSUNots mode = SYNC_END data = "RESOURCE:resource1"
また、サーバアプリケーションが複数リソースを扱う場合のdata行の書式は、以下のとおりです。
data="RESOURCE:Rmname1:defname1;Rmname2:defname2; ... ;RmnameN:defnameN"
defnameNはリソース定義名、RMnameNはリソース定義名defnameNに対応したRM名です。また、RM名は対応したリソース定義ファイルに記述されているRM名と同一である必要があります。
1つのサーバアプリケーションが複数のリソースにアクセスするためのCORBAアプリケーション情報定義ファイルの例を、以下に示します。
Rep_id = IDL:ODdemo/calculator:1.0 type = persistent proc_conc_max = 8 thr_conc_init = 1 IDL:ODdemo/calculator:1.0 = ODDEMO-CALCULATOR.DLL mode = SYNC_END data = "RESOURCE:RDBII:rdb_resource;Oracle_XA:ora_resource"
Rep_id = IDL:ODdemo/calculator:1.0 type = persistent proc_conc_max = 8 thr_conc_init = 1 IDL:ODdemo/calculator:1.0 = /home/guest/libODDEMO-CALCULATOR.so env = LD_LIBRARY_PATH=/opt/FSUNots/lib:/opt/FSUNod/lib/nt;OTS_HOME=/opt/FSUNots mode = SYNC_END data = "RESOURCE:RDBII:rdb_resource;Oracle_XA:ora_resource"
上記の例は、サーバアプリケーションが2つのデータベースSymfoware/RDBと、Oracleにアクセスするために、data行に2つのリソース定義ファイルを設定しています。
注意
複数のリソース定義ファイルを指定した定義書式によって登録されたアプリケーションは、複数リソースアクセス用のXA連携用ライブラリとリンクされたサーバアプリケーションである必要があります。
OD_impl_instコマンドは、サーバアプリケーション情報を削除することもできます。
削除処理の例を以下に示します。
OD_impl_inst -d -r IDL:ODdemo/calculator:1.0
■サーバアプリケーションのオブジェクトリファレンスの作成とネーミングサービスへの登録
サーバアプリケーションを他のアプリケーションからアクセス可能にするためには、目的のアプリケーションを識別するためのオブジェクトリファレンスを作成する必要があります。また、同時に作成したオブジェクトリファレンスをネーミングサービスに登録することにより、他のアプリケーションからのアクセスが可能になります。
サーバアプリケーションのオブジェクトリファレンスの作成方法、およびネーミングサービスへの登録方法について、以下に説明します。
OD_or_admコマンド(ORBの管理コマンド)は、オブジェクトリファレンス作成後、ネーミングサービスに登録します。
OD_or_admコマンドでの登録例と指定する情報を以下に示します。OD_or_admコマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「CORBAサービス運用コマンド」-「OD_or_adm」を参照してください。
OD_or_adm -c IDL:ODdemo/calculator:1.0 -n ODdemo::calculator
: DATA DIVISION. WORKING-STORAGE SECTION. COPY CONST IN CORBA. 01 TEMP-BUF USAGE POINTER. 01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY STRING-LENGTH. 01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV. 01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY NEW-OBJ. 01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY OBJ. 01 COPY COSNAMING-NAMINGCONTEXT IN CORBA REPLACING COSNAMING-NAMINGCONTEXT BY COS-NAMING. 01 COPY COSNAMING-NAME IN CORBA REPLACING COSNAMING-NAME BY NAME. 01 NAME-A USAGE POINTER. 01 COPY COSNAMING-NAMECOMPONENT IN CORBA REPLACING COSNAMING-NAMECOMPONENT BY NAME-COMPONENT. 01 NAME-COMPONENT-A USAGE POINTER. 01 COPY LONG IN CORBA REPLACING CORBA-LONG BY NUM. * ORB-INITで取得したObject 01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB. * ORB-BOA-INITで取得したObject 01 COPY BOA IN CORBA REPLACING CORBA-BOA BY BOA. * インタフェースリポジトリのオブジェクトリファレンス 01 COPY REPOSITORYID IN CORBA REPLACING CORBA-REPOSITORYID BY INTF-REP. * インプリメンテーションリポジトリのオブジェクトリファレンス 01 COPY FJ-IMPLEMENTATIONDEF IN CORBA REPLACING FJ-IMPLEMENTATIONDEF BY IMPL-REP. * インタフェースリポジトリのInterfaceDef 01 COPY INTERFACEDEF IN CORBA REPLACING CORBA-INTERFACEDEF BY INTF. * インプリメンテーションリポジトリのImplementationDef 01 COPY IMPLEMENTATIONDEF IN CORBA REPLACING CORBA-IMPLEMENTATIONDEF BY IMPL. * ReferenceData格納域 01 COPY REFERENCEDATA IN CORBA REPLACING CORBA-REFERENCEDATA BY R-ID. * ObjectDiretorの初期化(省略) : * インタフェースリポジトリのオブジェクトリファレンスの獲得 MOVE FUNCTION LENG (CORBA-ORB-OBJECTID-LIGHTINTFR) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING TEMP-BUF STRING-LENGTH CORBA-ORB-OBJECTID-LIGHTINTFR. CALL "CORBA-ORB-RESOLVE-INITIAL-REFERENCES" USING ORB TEMP-BUF ENV INTF-REP. CALL "CORBA-FREE" USING TEMP-BUF. * InterfaceDefオブジェクトリファレンスの獲得 * INTF-INTF-A : インプリメンテーションリポジトリID MOVE FUNCTION LENG (INTF-INTF-A) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING TEMP-BUF STRING-LENGTH INTF-INTF-A. CALL "CORBA-REPOSITORY-LOOKUP-ID" USING INTF-REP TEMP-BUF ENV INTF. CALL "CORBA-FREE" USING TEMP-BUF. * インプリメンテーションリポジトリのオブジェクトリファレンスの獲得 MOVE FUNCTION LENG (CORBA-ORB-OBJECTID-IMPLREP) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING TEMP-BUF STRING-LENGTH CORBA-ORB-OBJECTID-IMPLREP. CALL "CORBA-ORB-RESOLVE-INITIAL-REFERENCES" USING ORB TEMP-BUF ENV IMPL-REP. CALL "CORBA-FREE" USING TEMP-BUF. * ImplementationDefオブジェクトのオブジェクトリファレンスの獲得 MOVE FUNCTION LENG (IMPL-INTF-A) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING TEMP-BUF STRING-LENGTH IMPL-INTF-A. CALL "FJ-IMPLEMENTATIONREP-LOOKUP-ID" USING IMPL-REP TEMP-BUF ENV IMPL. CALL "CORBA-FREE" USING TEMP-BUF. * オブジェクトリファレンスの作成 CALL "CORBA-BOA-CREATE" USING BOA R-ID INTF IMPL ENV NEW-OBJ. * NamingServiceのObjectIDの設定 MOVE FUNCTION LENG ( CORBA-ORB-OBJECTID-NAMESERVICE ) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING TEMP-BUF STRING-LENGTH CORBA-ORB-OBJECTID-NAMESERVICE. * NamingServiceのオブジェクトリファレンス獲得 CALL "CORBA-ORB-RESOLVE-INITIAL-REFERENCES" USING ORB TEMP-BUF ENV COS-NAMING. * TEMP-BUFに格納した領域を解放する CALL "CORBA-FREE" USING TEMP-BUF. * オブジェクト名の数 MOVE 1 TO SEQ-LENGTH OF NAME. MOVE 1 TO SEQ-MAXIMUM OF NAME. MOVE 1 TO NUM. * オブジェクト名格納域の獲得と設定 CALL "CORBA-SEQUENCE-COSNAMING-NAMECOMPONENT-ALLOCBUF" USING SEQ-MAXIMUM OF NAME SEQ-BUFFER OF NAME. MOVE FUNCTION ADDR ( NAME ) TO NAME-A. MOVE FUNCTION ADDR ( NAME-COMPONENT ) TO NAME-COMPONENT-A. CALL "CORBA-SEQUENCE-ELEMENT-SET" USING NAME-A NUM NAME-COMPONENT-A. CALL "COSNAMING-NAMINGCONTEXT-BIND" USING COS-NAMING NAME OBJ ENV. * オブジェクト名の設定 MOVE FUNCTION LENG (STR-BUF) TO STRING-LENGTH. MOVE "ODdemo::calculator" TO STR-BUF. CALL "CORBA-STRING-SET" USING IDL-ID OF NAME-COMPONENT STRING-LENGTH STR-BUF. * オブジェクトのタイプの設定 MOVE " " TO STR-BUF. CALL "CORBA-STRING-SET" USING KIND OF NAME-COMPONENT STRING-LENGTH STR-BUF. * サーバアプリケーションのオブジェクト CALL "COSNAMING-NAMINGCONTEXT-BIND" USING COS-NAMING NAME NEW-OBJ ENV.