Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
第8章 アプリケーションの開発(OOCOBOL) | > 8.6 サーバアプリケーションの登録 |
作成したサーバアプリケーションを他のアプリケーションからオブジェクトとしてアクセスできるようにするために、そのオブジェクトを識別するためのオブジェクトリファレンスを作成します。同時に作成したオブジェクトリファレンスをネーミングサービスに登録します。
オブジェクトを作成する方法として以下の方法があります。
OD_or_admコマンドは、オブジェクトリファレンス作成後、ネーミングサービスに登録します。OD_or_admコマンドでの登録例と指定する情報を以下に示します。
ネーミングサービスへの登録
OD_or_adm -c IDL:ODdemo/calculator:1.0 -L SJIS -n ODdemo::calculator |
ネーミングサービスへの登録
OD_or_adm -c IDL:ODdemo/calculator:1.0 -L EUC -n ODdemo::calculator |
以下の流れで処理を行います。
以下にプログラミングの例を示します。
IDENTIFICATION DIVISION. PROGRAM-ID. "SIMPLE_S". * ENVIRONMENT DIVISION. CONFIGURATION SECTION. REPOSITORY. COPY CORBA--REP. COPY COSNAMING--REP. . SPECIAL-NAMES. SYMBOLIC CONSTANT COPY CORBA--CONST. COPY SIMPLE--CONST. COPY COSNAMING--CONST. . * DATA DIVISION. WORKING-STORAGE SECTION. COPY CORBA--COPY. COPY COSNAMING--COPY. * 01 ORB USAGE OBJECT REFERENCE CORBA-ORB. 01 BOA USAGE OBJECT REFERENCE CORBA-BOA. 01 IMPL-REP USAGE OBJECT REFERENCE FJ-IMPLEMENTATIONREP. 01 INTF-REP USAGE OBJECT REFERENCE CORBA-REPOSITORY. 01 IMPL USAGE OBJECT REFERENCE CORBA-IMPLEMENTATIONDEF. 01 INTF USAGE OBJECT REFERENCE CORBA-INTERFACEDEF. 01 OBJ USAGE OBJECT REFERENCE CORBA-OBJECT. 01 REF-ID USAGE OBJECT REFERENCE SEQUENCE-OCTET. 01 NAMING-CONTEXT USAGE OBJECT REFERENCE COSNAMING-NAMINGCONTEXT. 01 NAME TYPE COSNAMING-NAME. 01 NAME-COMPONENT USAGE OBJECT REFERENCE COSNAMING-NAMECOMPONENT. 01 NAME-ID USAGE OBJECT REFERENCE CORBA-STRING. 01 NAME-KIND USAGE OBJECT REFERENCE CORBA-STRING. 01 NEW-OBJ USAGE OBJECT REFERENCE CORBA-OBJECT. * 01 EXCEPTION-ID USAGE OBJECT REFERENCE CORBA-STRING. 01 EXCEPTION-ID-VALUE PIC X(50). 01 API-NAME PIC X(50). * * PROCEDURE DIVISION. * DECLARATIVES. * * ALREADY-ERR SECTION. USE EXCEPTION CORBA-EXCEPTION. DISPLAY "CosNaming::NamingContext::AlreadyBound: " API-NAME. ALREADY-ERR. OTHER-ERROR SECTION. USE EXCEPTION CORBA-EXCEPTION. DISPLAY "CORBA::UserException: " API-NAME. SET EXCEPTION-ID TO IDL-ID OF EXCEPTION-OBJECT AS CORBA-EXCEPTION. INVOKE EXCEPTION-ID "GET-VALUE" RETURNING EXCEPTION-ID-VALUE. DISPLAY " Exception-id: " EXCEPTION-ID-VALUE. EXIT PROGRAM. END-OTHER-ERR. * END DECLARATIVES. * MAIN SECTION. * MOVE "CORBA::ORB_init" TO API-NAME. INVOKE CORBA "ORB_INIT" USING "simple_s" FJ-OM_ORBID RETURNING ORB. * MOVE "CORBA::ORB::BOA_init" TO API-NAME. INVOKE ORB "BOA_INIT" USING "simple_s" CORBA-BOA_OAID RETURNING BOA. * MOVE "CORBA::ORB::resolve_initial_references" TO API-NAME. INVOKE ORB "RESOLVE_INITIAL_REFERENCES" USING CORBA-OBJECTID_LIGHTINTERF-001 RETURNING OBJ. * INVOKE CORBA-REPOSITORY "NARROW" USING OBJ RETURNING INTF-REP. * MOVE "CORBA::Repository::lookup_id" TO API-NAME. INVOKE INTF-REP "LOOKUP_ID" USING "IDL:ODdemo/calculator:1.0" RETURNING OBJ. INVOKE CORBA-INTERFACEDEF "NARROW" USING OBJ RETURNING INTF. * MOVE "CORBA::ORB::resolve_initial_references" TO API-NAME. INVOKE ORB "RESOLVE_INITIAL_REFERENCES" USING CORBA-OBJECTID_IMPLEMENTAT-001 RETURNING OBJ. * INVOKE FJ-IMPLEMENTATIONREP "NARROW" USING OBJ RETURNING IMPL-REP. * MOVE "FJ::ImplementationRep::lookup_id" TO API-NAME. INVOKE IMPL-REP "LOOKUP_ID" USING "IDL:ODdemo/calculator:1.0" RETURNING OBJ. * INVOKE CORBA-IMPLEMENTATIONDEF "NARROW" USING OBJ RETURNING IMPL. INVOKE SEQUENCE-OCTET "NEW" RETURNING REF-ID. MOVE "CORBA::BOA::create" TO API-NAME. INVOKE BOA "IDL-CREATE" USING REF-ID INTF IMPL RETURNING NEW-OBJ. * MOVE "CORBA::ORB::resolve_initial_references" TO API-NAME. INVOKE ORB "RESOLVE_INITIAL_REFERENCES" USING CORBA-ORB-OBJECTID_NAMESERVICE RETURNING OBJ. * INVOKE COSNAMING-NAMINGCONTEXT "NARROW" USING OBJ RETURNING NAMING-CONTEXT. * INVOKE SEQUENCE-NAMECOMPONENT-001 "NEW-WITH-LENGTH" USING 1 RETURNING NAME. * INVOKE CORBA-STRING "NEW-WITH-VALUE" USING "ODdemo::calculator" RETURNING NAME-ID. * INVOKE CORBA-STRING "NEW-WITH-VALUE" USING " " RETURNING NAME-KIND. * INVOKE COSNAMING-NAMECOMPONENT "NEW" RETURNING NAME-COMPONENT. * SET IDL-ID OF NAME-COMPONENT TO NAME-ID. SET KIND OF NAME-COMPONENT TO NAME-KIND. INVOKE NAME "SET-VALUE" USING 1 NAME-COMPONENT. * MOVE "CosNaming::NamingContext::unbind" TO API-NAME. INVOKE NAMING-CONTEXT "UNBIND" USING NAME. * MOVE "CosNaming::NamingContext::bind" TO API-NAME. INVOKE NAMING-CONTEXT "BIND" USING NAME NEW-OBJ. * MOVE "CORBA::BOA::impl_is_ready" TO API-NAME. INVOKE BOA "IMPL_IS_READY" USING IMPL. * STOP RUN. * END-MAIN. * END PROGRAM "SIMPLE_S".
注) CORBA-BOA-CREATE関数呼出し時にインプリメンテーションリポジトリに定義されているデフォルトコード系でオブジェクトリファレンスを作成します。デフォルトコード系の設定はOD_impl_instまたはOD_set_envコマンドで行います。
目次
索引
![]() ![]() |