bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo CORBA ActiveX > ActiveX クライアント・アプリケーションの作成 |
Tuxedo CORBA ActiveX
|
ActiveX クライアント・アプリケーションの作成
ここでは、次の内容について説明します。
ActiveX クライアント・アプリケーションを開発する前に理解しておく必要がある概念については、概要を参照してください。
ActiveX クライアント・アプリケーションの開発プロセスの概要
ActiveX クライアント・アプリケーションの作成手順は次のとおりです。
このプロセスの各手順については、以降の節で詳しく説明します。 ActiveX クライアント・アプリケーションの BEA Tuxedo 開発環境には、以下のものが含まれます。
BEA Application Builder
Application Builder は、CORBA オブジェクトの ActiveX ビューを作成する開発ツールです。Application Builder は、BEA ActiveX Client への主要なユーザ・インターフェイスです。Application Builder を使用すると、デスクトップ・アプリケーションで使用可能な CORBA オブジェクトを選択し、その CORBA オブジェクトの ActiveX ビューと、その ActiveX ビューをクライアント・マシンに導入するためのパッケージを作成できます。
ActiveX ビューを使用するには、CORBA オブジェクトのインターフェイスをインターフェイス・リポジトリにロードします。次に、CORBA インターフェイスの ActiveX バインディングを作成します。バインディングは、CORBA オブジェクトと ActiveX のインターフェイスを定義します。ActiveX クライアント・アプリケーションと生成されたバインディングの組み合わせにより、オブジェクトの ActiveX ビューが作成されます。
Application Builder の起動方法については、タスクの「Application Builder の起動」を参照してください。
図2-1 で示すように、Application Builder のメイン・ウィンドウは、[Services] ウィンドウと [Workstation Views] ウィンドウの 2 つに分かれています。
図 2-1 Application Builder メイン・ウィンドウ
[Services] ウィンドウは、ローカル BEA Tuxedo ドメイン (BEA Tuxedo ソフトウェア・キットの一部としてインストールされている BEA Application Builder ソフトウェアの M3 ドメイン) でインターフェイス・リポジトリに含まれている CORBA モジュール、インターフェイス、およびオペレーションをすべて表示します。インターフェイス・リポジトリのすべてのインターフェイスに対してバインディングを作成できます。 [Services] ウィンドウの上部には、BEA Tuxedo ドメインで使用可能な各オブジェクト・システム用のエントリがあります。ActiveX Client は、BEA Tuxedo オブジェクト・システムのみをサポートします。オブジェクトは、インターフェイス・リポジトリで使用する同じ階層の形式で (つまり、モジュール、インターフェイス、オペレーション、およびオペレーションに含まれているパラメータとして) 表示されます。[+] 記号は、そのオブジェクトを展開すると他のオブジェクトが表示されることを示します。 [Workstation Views] ウィンドウは、CORBA インターフェイス用に作成されているすべての ActiveX バインディングを表します。CORBA インターフェイスに対するバインディングを作成するには、[Services] ウィンドウのエントリを [Workstation Views] ウィンドウにドラッグします。 Application Builder メイン・ウィンドウの詳細については、Application Builder メイン・ウィンドウを参照してください。 以下の手順は、BEA Tuxedo に付属の University サンプル・アプリケーションを用いたものです。サンプル・アプリケーションの詳細については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA University サンプル・アプリケーション』を参照してください。
ステップ 1: オートメーション環境オブジェクトのインターフェイス・リポジトリへのロード
オートメーション環境オブジェクトをインターフェイス・リポジトリにロードして、ActiveX クライアント・アプリケーションがそれらのオブジェクトのインターフェイス定義を使用できるようにします。MS-DOS プロンプトで、次のコマンドを入力して OMG IDL ファイル (TOBJIN.idl) をインターフェイス・リポジトリにロードします。
prompt> idl2ir -D _TOBJ -I drive:¥tuxdir¥include drive:¥tuxdir¥include¥tobjin.idl
ステップ 2: CORBA インターフェイスのインターフェイス・リポジトリへのロード
CORBA オブジェクトの ActiveX ビューを作成する前に、CORBA オブジェクトのインターフェイスをインターフェイス・リポジトリにロードしておく必要があります。CORBA オブジェクトのインターフェイスがインターフェイス・リポジトリにロードされていない場合、Application Builder の [Services] ウィンドウにそれらが表示されません。目的の CORBA インターフェイスが [Services] ウィンドウに表示されない場合は、 idl2ir コマンドを使用して、CORBA を定義する OMG IDL をインターフェイス・リポジトリにロードします。idl2ir コマンドの構文は次のとおりです。
idl2ir [repositoryfile.idl] file.idl
idl2ir コマンドの詳細については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo コマンド・リファレンス』 を参照してください。 たとえば、University サンプル・アプリケーションの OMG IDL ファイルがインターフェイス・リポジトリにロードされている場合、以下の CORBA インターフェイスが Application Builder ウィンドウに表示されます。
ステップ 3: インターフェイス・リポジトリ・サーバ・アプリケーションの起動
ActiveX クライアント・アプリケーションは、実行時にインターフェイス・リポジトリから CORBA オブジェクトのインターフェイス定義を読み取り、それらをオートメーション・オブジェクトに変換します。このため、インターフェイス・リポジトリのサーバ・アプリケーションを起動して、インターフェイス定義を使用可能にする必要があります。UBBCONFIG ファイルを使用すると、インターフェイス・リポジトリに対してサーバ・アプリケーションのプロセスを開始できます。
注記 システム管理者が既にこのステップを実行している場合もあります。
BEA Tuxedo ドメインの UBBCONFIG ファイルで、インターフェイス・リポジトリのサーバ・アプリケーション、TMIFRSVR が起動しているかどうかをチェックします。UBBCONFIG ファイルには、以下のエントリが存在します。
TMIFRSVR
SRVGRP = SYS_GRP
SRVID = 6
RESTART = Y
MAXGEN = 5
GRACE = 3600
さらに、ISL/ISH を開始する ISL パラメータが指定されていることを確認します。UBBCONFIG ファイルには、以下のエントリが存在します。
ISL
SRVGRP = SYS_GRP
SRVID = 5
CLOPT = "-A -- -n //TRIXIE:2500"
ここで、TRIXIE はホスト (サーバ) システムの名前で、2500 はポート番号です。
サーバ・アプリケーションの起動、および ISL パラメータの指定の詳細については、BEA Tuxedo オンライン・マニュアルの 『BEA Tuxedo アプリケーションの設定』
を参照してください。
ステップ 4: CORBA インターフェイスの ActiveX バインディングの作成
ActiveX クライアント・アプリケーションが CORBA オブジェクトにアクセスするには、CORBA オブジェクトのインターフェイスの ActiveX バインディングを生成する必要があります。CORBA インターフェイス用の ActiveX バインディングを作成するには、Application Builder を使用します。
CORBA インターフェイス用の ActiveX バインディングを作成するには、次の手順に従います。
これで、ActiveX クライアント・アプリケーションから ActiveX ビューを使用できます。
ステップ 5: ActiveX バインディングのタイプ・ライブラリのロード
ActiveX クライアント・アプリケーションを記述する前に、CORBA インターフェイスの ActiveX バインディングが定義されているタイプ・ライブラリを開発ツールにロードしておく必要があります。タイプ・ライブラリをロードするには、使用する開発ツールの説明に従います。
たとえば Visual Basic の場合、使用可能なタイプ・ライブラリのリストを取得するには、[プロジェクト] メニューの [参照設定] オプションを選択します。次に、そのリストから目的のタイプ・ライブラリを選択します。
デフォルトでは、Application Builder は生成されたすべてのタイプ・ライブラリを ¥tuxdir¥TypeLibraries に格納します。CORBA インターフェイスの ActiveX バインディング用のタイプ・ライブラリは、次の形式を取ります。
DImodulename_interfacename.tlb
ステップ 6: ActiveX クライアント・アプリケーションの記述
ActiveX クライアント・アプリケーションは、以下の処理を行う必要があります。
以下の節では、Basic University サンプル・アプリケーションの ActiveX クライアント・アプリケーションの一部を使用して、これらのステップについて説明します。
オートメーション環境オブジェクト、ファクトリ、および CORBA オブジェクトの ActiveX ビューの宣言のインクルード
実行時のエラーを防ぐため、以下のオブジェクト型を宣言する必要があります。
次の例は、Bootstrap オブジェクトと FactoryFinder オブジェクト、Registrar オブジェクトの ActiveX ビュー用のファクトリ、および Registrar オブジェクトの ActiveX ビューを宣言する Visual Basic コードです。
¥¥Bootstrap オブジェクトの宣言¥¥
Public objBootstrap As DITobj_Bootstrap
¥¥FactoryFinder オブジェクトの宣言¥¥
Public objFactoryFinder As DITobj_FactoryFinder
¥¥Registrar オブジェクトのファクトリ・オブジェクトの宣言¥¥
Public objRegistrarFactory As DIUniversityB_RegistrarFactory
¥¥Registrar オブジェクトの ActiveX ビューの宣言¥¥
Public objRegistrar As DIUniversityB_Registrar
BEA Tuxedo ドメインとの通信の確立
ActiveX クライアント・アプリケーションを記述する場合、以下の 2 つのステップで BEA Tuxedo ドメインとの通信を確立します。
次の Visual Basic サンプルは、CreateObject オペレーションを使用して Bootstrap オブジェクトを作成する方法を示したものです。
Set objBootstrap = CreateObject(“Tobj.Bootstrap”)
次に、Bootstrap オブジェクトを初期化します。Bootstrap オブジェクトを初期化する場合、次のように、対象の BEA Tuxedo ドメインの ISL/ISH のホストとポートを指定します。
objBootstrap.Initialize “//host:port”
ISL/ISH のホストとポートの組み合わせは、UBBCONFIG ファイルの ISL パラメータで定義されます。Bootstrap オブジェクトに対して指定するホストとポートの組み合わせは、この ISL パラメータと完全に一致する必要があります。ホストとポートの組み合わせの形式のほかに、大文字、小文字も一致する必要があります。アドレスが一致しない場合、Bootstrap オブジェクトの呼び出しは失敗し、次のメッセージがログ・ファイルに記録されます。
Error: Unofficial connection from client at <tcp/ip address>/<portnumber>
たとえば、UBBCONFIG ファイルの ISL パラメータでネットワーク・アドレスが //TRIXIE::3500 として指定されている場合、Bootstrap オブジェクトで //192.12.4.6.:3500 または //trixie:3500 と指定すると接続が失敗します。
BEA Tuxedo ドメインは、複数の ISL/ISH を持つことができます。複数の ISL/ISH を使用して BEA Tuxedo ドメインにアクセスする場合、host:port の組み合わせのリストを Bootstrap オブジェクトに提供します。Bootstrap オブジェクトは、BEA Tuxedo ドメインに接続するまでこのリストを参照します。また、ISL/ISH のリストは、TOBJADDR 環境変数に指定することもできます。
複数の BEA Tuxedo ドメインにアクセスする場合、アクセスする BEA Tuxedo ドメインごとに Bootstrap オブジェクトを作成する必要があります。
FactoryFinder オブジェクトへの初期リファレンスの取得
クライアント・アプリケーションは、自身にサービスを提供するオブジェクトへの初期リファレンスを取得する必要があります。Bootstrap オブジェクトは、FactoryFinder オブジェクト、SecurityCurrent オブジェクト、および TransactionCurrent オブジェクトへのリファレンスを取得するのに使用します。このオペレーションに受け渡す引数は、目的のオブジェクトの progid を含む文字列です。ActiveX クライアント・アプリケーションで使用するオブジェクトの初期リファレンスだけを取得する必要があります。
次の Visual Basic サンプルは、Bootstrap オブジェクトを使用して FactoryFinder オブジェクトへのリファレンスを取得する方法を示したものです。
Set objFactoryFinder = objBootstrap.CreateObject(“Tobj.FactoryFinder”)
ファクトリを使用した ActiveX ビューの取得
ActiveX クライアント・アプリケーションは、CORBA オブジェクトの ActiveX ビューへのインターフェイス・ポインタをファクトリから取得します。ファクトリは、別の CORBA オブジェクトへのオブジェクト・リファレンスを返す任意の CORBA オブジェクトです。ActiveX クライアント・アプリケーションは、ファクトリのオペレーションを呼び出して特定のタイプの CORBA オブジェクトへのオブジェクト・リファレンスを取得します。ファクトリを使用するには、ActiveX クライアント・アプリケーションは必要なファクトリを検索できなければなりません。FactoryFinder オブジェクトは、そのために役立ちます。
CreateObject 関数を使用して FactoryFinder オブジェクトを作成し、次に FactoryFinder オブジェクトのメソッドの 1 つを使用してファクトリを検索します。FactoryFinder オブジェクトには以下のメソッドがあります。
入力キーに完全に一致するファクトリのシーケンスを返します。
入力キーに一致する 1 つのファクトリを返します。
名前コンポーネントの ID フィールドが入力引数に一致するファクトリのシーケンスを返します。
ファクトリの CORBA 名前コンポーネントの ID フィールドが入力引数に一致する 1 つのファクトリを返します。
現在 FactoryFinder で登録されているファクトリ・オブジェクトをリストします。
次の Visual Basic 例は、BEA Tuxedo University サンプル・アプリケーションで FactoryFinder の find_one_factory_by_id() メソッドを使用して、クライアント・アプリケーションで使用する Registrar オブジェクトのファクトリを取得する方法を示します。
Set objRegistrarFactory =
objBsFactoryFinder.find_one_factory_by_id (“RegistrarFactory”)
Set objRegistrar = RegistrarFactory.find_registrar
ActiveX ビューのオペレーションの呼び出し
ActiveX ビューのオペレーションを呼び出すには、ファクトリへのポインタとオペレーションで必要な引数を受け渡します。
次の Visual Basic のサンプルは、ActiveX ビューのオペレーションを呼び出す方法を示したものです。
‘Get course details from the Registrar object’
aryCourseDetails =
objRegistrar.get_course_details(aryCourseNumbers)
コールバックに対するオートメーション・サーバの作成
一部のアプリケーション開発シナリオでは、ActiveX クライアント・アプリケーションが CORBA サーバ・アプリケーションからの要求に応答できるようにすることが望ましい場合があります。CORBA サーバからのコールバックの原理には、一部のイベントが発生したときにクライアント・アプリケーションに通知すること、セキュリティを検証すること、クライアントからの追加情報を取得することなどがあります。たとえば、株価をトラッキングするクライアント・アプリケーションは、指定した株価が変動したときに通知するよう CORBA サーバに要求できます。クライアントは、通知オブジェクト・リファレンスを CORBA サーバに渡してこれを実行します。サーバは、このリファレンスを基に、株価が変動したときにクライアントに通知するためにコールバックします。次に説明する、COM サーバとして機能する ActiveX クライアント・アプリケーションの開発手順は、Visual Basic で ActiveX クライアントを開発することを前提にしています。
CORBA アプリケーションに関連して COM サーバとして機能する ActiveX アプリケーションを開発するには、上記の 6 つの手順を実行します。そのうえで、Visual Basic で適切な Visual Basic クラスを作成し、CORBA インターフェイスに対する COM サーバ機能をインプリメントします。
この方法には、Visual Basic の [プロジェクト] メニューの [クラス モジュールの追加] オプションを選択して開始することなどがあります。Application Builder で作成したタイプ・ライブラリに表示された CORBA インターフェイスのオートメーション・ビューを指定するクラスに Implements 句を追加します (「ステップ 4: CORBA インターフェイスの ActiveX バインディングの作成」を参照)。たとえば、次のように入力します。
Implements ChatClient_Listener
この例は、BEA Tuxedo に付属のチャットルーム Visual Basic クライアントのサンプルから抜粋したものです。チャットルーム・サンプルは、デフォルトでは次の場所にあります。
tuxdir¥samples¥corba¥chatroom
この例では、ChatClient_Listener はインターフェイス名です。次に、プライベートな Visual Basic サブルーチンを記述し、インターフェイスに含まれる各メソッドをインプリメントします。たとえば、次のように入力します。
Private Sub ChatClient_Listener_post(ByVal from As String,
ByVal output_line As String, Optional exceptionInfo As Variant)
MsgBox “User “ + from + “: “ + output_line
End Sub
COM オブジェクトのインスタンスの作成
COM オブジェクトをインプリメントしたので、ActiveX クライアント・アプリケーションでそのインスタンスを作成し、CORBA サービスに渡すことができます。通常の COM オブジェクトのインスタンスを作成するのと同じ方法で、これらの COM オブジェクトのインスタンスを作成します。たとえば、次のように入力します。
Dim aListener as ChatClient_Listener
Set aListener = New MyListener
New を呼び出すと、インスタンスが作成されます。上の例では、ChatClient_Listener はインターフェイス名、MyListener は、インプリメント用に作成したクラス名です。インスタンスを作成したら、CORBA メソッドへのパラメータとして指定できます。たとえば、次のように入力します。
aModerator.signon “Hansel”, aListener
ここでは、aModerator は CORBA オブジェクト、aListener は、CORBA オブジェクトが必要に応じてコールバックする COM オブジェクトです。
ステップ 7: ActiveX クライアント・アプリケーションのデプロイ
ActiveX クライアント・アプリケーションをほかのクライアント・マシンに配布するには、デプロイメント・パッケージを作成する必要があります。デプロイメント・パッケージには、クライアント・アプリケーションが CORBA オブジェクトの ActiveX ビューを使用するために必要なすべてのデータ (バインディング、タイプ・ライブラリ、登録情報など) が含まれています。デプロイメント・パッケージは自動登録を行う ActiveX コントロールで、ファイル拡張子は.ocx です。
ActiveX ビューのデプロイメント・パッケージを作成するには、次の手順に従います。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |