Top Banner
17 17 2. CORBAアプリケーション 2. CORBAアプリケーション
22

2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

Feb 25, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

1717

2. CORBAアプリケーション2. CORBAアプリケーション

Page 2: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

1818

2.1 CORBAアプリケーションの概要2.1 CORBAアプリケーションの概要

Page 3: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

1919

CORBAアプリケーションCORBAアプリケーション〔CORBAアプリケーションの運用形態〕

(1) 動的スケルトンインターフェース(CORBAサーバアプリケーション)

(2) 静的スケルトンインターフェース(CORBAサーバアプリケーション)

(3) 各種サービスで、CORBAサービスが提供する情報を参照する

(4) 動的呼出しインターフェース(CORBAクライアントアプリケーション)

(5) 静的呼出しインターフェース(CORBAクライアントアプリケーション)

(6) OLE-CORBAゲートウェイ(CORBAクライアントアプリケーション)

Page 4: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

2020

CORBAサーバアプリケーション(1)CORBAサーバアプリケーション(1)

CORBAサーバアプリケーションは、以下のタイプに分類されます。

++sharedサーバサーバアプリケーションは、クライアントアプリケーションから最初に呼び出されたとき、CORBAサービスにより起動されます。1つのサーバアプリケーションで複数のオブジェクトを処理することができます。

++persistentサーバサーバアプリケーションは、事前にユーザが起動しておきます。1つのサーバアプリケーションで複数のオブジェクトを処理することができます。

++unsharedサーバサーバアプリケーションは、クライアントアプリケーションから最初に呼び出されたとき、CORBAサービスにより起動されます。1つのサーバアプリケーションでは、1つのオブジェクトだけ処理できます。

◆サーバアプリケーションの起動タイプ

CORBAワークユニット

運用

複数オブジェクトの同時処理

自動起動

Page 5: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

2121

CORBAサーバアプリケーション(2)CORBAサーバアプリケーション(2)

アプリケーションの実装方式に基づいた以下の分類があります。

++静的スケルトンインターフェースIDLファイルから生成されたスケルトンファイルをサーバアプリケーションにリンクする方法です。

++動的スケルトンインターフェーススケルトンファイルをリンクする代わりに、CORBAサービスが提供するAPIを使用して、インターフェース情報やクライアントからの情報を取り出します。

一般的に、静的スケルトンインターフェースの方が動的スケルトンインターフェースに比べて、リポジトリ情報へのアクセス回数が少ない分、性能が優れています。

Page 6: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

2222

CORBAクライアントアプリケーションCORBAクライアントアプリケーション

CORBAクライアントアプリケーションには、実装方式に基づいた以下の分類があります。

++静的起動インターフェースDLファイルから生成されたスタブファイルをクライアントアプリケーションにリンクする方法です。

++動的起動インターフェーススタブファイルをリンクする代わりに、CORBAサービスが提供するAPIを使用してインターフェース情報を取り出し、サーバオブジェクトを呼び出すためのインターフェースを組み立てます。

++OLE-CORBAゲートウェイクライアント上のCORBA製品が提供する、OLE-CORBAゲートウェイ機能を利用して、OLEサーバによりCORBAサーバアプリケーションを使用します。

一般的に、動的起動インターフェースは、サーバアプリケーションのインターフェースを動的に組み立てるため、簡単なインターフェースの変更に対して、自プログラムの変更を行う必要がない場合があり、その意味で保守性に優れています。反対に、静的起動インターフェースは、サーバプログラムと同様、サーバのリポジトリ情報にアクセスする回数が動的起動インターフェースに比べて少ないため、性能的に優れています。また、OLE-CORBAゲートウェイは、内部的に動的起動インターフェースと同様の処理を行っているため、性能的には動的起動インターフェースと同等ですが、記述量が非常に少なく、記述性に優れています。

Page 7: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

2323

ApdesignerでサポートしているCORBAアプリケーションApdesignerでサポートしているCORBAアプリケーション

オブジェクト指向COBOL、COBOL静的起動インターフェースクライアントアプリケーション

オブジェクト指向COBOL静的スケルトンインターフェースサーバアプリケーション

言語種別実装方式アプリケーション

Page 8: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

2424

CORBAアプリケーション開発の流れCORBAアプリケーション開発の流れClient Server

InterfaceRepository

登録

IDLファイル

IDLコンパイラ

業務ロジック スタブ スケルトン 業務ロジック

翻訳・リンク 翻訳・リンク

クライアントアプリケーション

サーバアプリケーション

→詳細は後述

Page 9: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

2525

2.2 IDL2.2 IDL

Page 10: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

2626

サーバアプリケーションが提供するインターフェース情報を定義

IDLの作成IDLの作成

モジュール宣言

インターフェース宣言

オペレーション宣言

属性宣言

定数宣言

型宣言

必須

例外宣言

IDLの構文

IDLは、7つの宣言で構成されています。各宣言で使用する名前(識別子)は、先頭が英文字で、英文字、数字、およびアンダースコア(“_”)で指定します。英大文字と英小文字は同じものとして扱われます。 また、すべてのIDLファイル内に設定した識別子は一意でなければなりません。

◆モジュール宣言

モジュールは、IDLのメソッド名や型名などがほかのIDLと重複しないように、オブジェクトのグループ化宣言を行うものです。

◆インターフェース宣言

インターフェース宣言では、インターフェースの実体を定義します。C++言語のクラス宣言と同様にほかのインターフェース宣言を継承して、新しいインターフェース宣言を行うこともできます。

◆インターフェース宣言

インターフェース宣言では、インターフェースの実体を定義します。C++言語のクラス宣言と同様にほかのインターフェース宣言を継承して、新しいインターフェース宣言を行うこともできます。

module モジュール名 {

};

interface インターフェース名 ; // フォワード宣言

interface インターフェース名 [:継承するインターフェース] { // ヘッダオペレーション宣言 ; // 本体属性宣言 ;定数宣言 ;型宣言 ;例外宣言 ;

};

Page 11: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

2727

module ModuleNAME { // モジュール宣言const string MSG1 = "balance is zero" ; // 定数宣言struct Structure1 { // 型宣言(構造体宣言)

long pay;long balance;long expectation;

};exception CDException{ // 例外宣言

string CDExceptionMsg;long CDExceptionCode;

};

interface InterfaceNAME { // インターフェース宣言void subbal(inout Structure1 param1) // オペレーション宣言

raises (CDException);};

};

例.IDL定義例.IDL定義

Page 12: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

2828

オペレーション宣言のパラメタタイプオペレーション宣言のパラメタタイプ

in

クライアント側から値を設定して、サーバに渡す時に使用

out

サーバ側で値を設定して、クライアントがその値を利用する時に使用

inout

上記2つの特徴を持つ

module ODsample{interface stringtest{

string op1(in string str1, out string str2, inout string str3); };

};

IDL例

Page 13: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

2929

IDLのコンパイルIDLのコンパイル

IDLファイルをコンパイル→ スタブ・スケルトンの生成、インターフェースリポジトリへ

インターフェース情報の登録を行います。

IDLファイルのコンパイル方法以下の2種類の方法があります。

• Interstage StudioのGUI環境においてのコンパイル• IDLcコマンドによるコンパイル

Page 14: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

3030

2.3 CORBAサーバアプリケーション2.3 CORBAサーバアプリケーション

Page 15: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

3131

サーバアプリケーションオブジェクトを管理する機能(Object Adapter、 OA)には、次の2つの種類があります。

Basic Object Adaptor(BOA)

Portable Object Adaptor(POA)

サーバアプリケーションサーバアプリケーション

BOA : CORBA2.1までの仕様で定義されていた基本的なサーバアプリケーションのインターフェースです。Interstageでは、C、C++、 Java、 オブジェクト指向COBOLでBOAを使用することができます。

POA : CORBA2.2で定義された仕様であり、特にインスタンスの管理面で標準のインターフェースが規定されています。

Interstageでは、C++、 JavaでPOAを使用することができます。

Page 16: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

3232

CORBAサーバアプリケーションの構成CORBAサーバアプリケーションの構成

ORB初期化初期化処理部

BOA初期化

インプリメンテーションリポジトリのオブジェクトリファレンスを獲得

ImplementationDefオブジェクトのオブジェクトリファレンスを検索

サーバの活性化

インターフェース実装部(ビジネスロジック)

BOAの場合

Page 17: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

3333

POAの構造

Page 18: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

3434

CORBAオブジェクトとサーバントの関係

Page 19: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

3535

POAのポリシー太字はデフォルト値

POAポリシ 意味 Value Valueの説明 備考RETAIN ActiveObjectMapにActiveなServantオブ

ジェクトを憶えます。

NON_RETAIN ActiveObjectMapを使いません。

USE_ACTIVE_OBJECT_MAP_ONLY

リクエスト処理にActiveObjectMapだけ使用します。

USE_DEFAULT_SERVANT リクエストの処理をDefault Servantオブジェクトに任せます。

USE_SERVANT_MANAGER ServantManagerオブジェクトによって目的のServantオブジェクトを見つけます。必要であればactivateも行われます。

IMPLICIT_ACTIVATION 自動的にServantオブジェクトがactivateされます。

NO_IMPLICIT_ACTIVATION 自動的にServantオブジェクトがactivateされません(サーバアプリケーションが明示的にServantオブジェクトを生成して、POAオブジェクトに登録します)。

SYSTEM_ID POAオブジェクトがオブジェクトIDを付けます。

USER_ID ユーザがオブジェクトIDを付けます。

UNIQUE_ID (注1) ServantオブジェクトにユニークなIDを付けます。

MULTIPLE_ID Servantオブジェクトに重複したIDを許します。

TRANSIENT トランジェントタイプのオブジェクトを扱います(サーバlifespan = オブジェクトlifespan)。

PERSISTENT パーシステントタイプのオブジェクトを扱います(サーバlifespan < オブジェクトlifespan)。

ORB_CTRL_MODEL スレッド処理をORBに任せます。 このPOAポリシの設定値は無効

SINGLE_THREAD_MODEL シングルスレッドで動作させます。

ServantRetention:Servant関連付けポリシ

AOMテーブルをPOAオブジェクト内で持つか持たないかを指定します。つまり、POAオブジェクト内でインスタンス管理を行うかどうかを指定できます。

RequestProcessing:リクエスト処理ポリシ

リクエスト受信時に対象インスタンスをAOM内に持ってない、もしくはAOM自身を保持しないときの振る舞いを規定するポリシです。

PERSISTENTは指定不可

ImplicitActivation:暗黙的活性化ポリシ

Servantの活性化のモードを以下のように指定可能です。 ・自動的にServantがactivateされます。 ・自動的にServantがactivateされません(アプリケーションが明示的にServantをPOAに登録します)。

Lifespan: 生存期間ポリシ

Thread: スレッドポリシ

スレッド処理をORBに任せるかシングルスレッドで動作させるかを指定できます。

オブジェクトIDをシステム(POAオブジェクト)が自動設定するか、ユーザが設定するかを指定できます。USER_IDはアプリケーションでオブジェクトIDに固有の意味を持たせたいときに有効です。

ServantにユニークなIDを付けるか、重複したIDを許すかの指定ができます。

IdUniqueness: オブジェクトID一意性ポリシ

IdAssignment:ID割り当てポリシ

トランジェントタイプのオブジェクトを扱うかパーシステントタイプのオブジェクトを扱うかを指定可能です。

Page 20: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

3636

CORBAサーバアプリケーションの構成CORBAサーバアプリケーションの構成

POAの場合

ORB初期化

初期化処理部

RootPOAのオブジェクトリファレンスを獲得

ネーミングサービスへの登録

オブジェクトリファレンスの事前生成/登録

POAManagerの活性化と終了待機

インターフェース実装部(サーバント)

サーバントのAOMへの登録(活性化)

子孫POAの作成

Page 21: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

3737

2.4 本章のポイント2.4 本章のポイント

Page 22: 2. CORBAアプリケーション - Fujitsu...Client Server Interface Repository 登録 IDLファイル IDLコンパイラ 業務ロジック スタブ スケルトン 業務ロジック

3838

本章のポイント本章のポイント

CORBAアプリケーションサーバアプリケーションと、クライアントアプリケーションがあります。[サーバアプリ]

インターフェースには、静的スケルトンインターフェースと、動的ス

ケルトンインターフェースがあります。OAは、BOAとPOAがあります。

[クライアントアプリ]

インターフェースには、静的起動インターフェース、動的起動インターフェースおよびOLE-CORBAインターフェースがあります。

Apdesignerでサポートしている言語[サーバアプリ]

オブジェクト指向COBOL[クライアントアプリ]

オブジェクト指向COBOLCOBOL