ヘッダーをスキップ
Oracle® COM Automation機能開発者ガイド
11g リリース2 (11.2)
B58875-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

1 Oracle COM Automation機能の概要

この章では、Oracle COM Automation機能のSoftware Development Kit(SDK)についての説明と、製品の概要を示します。Oracle COM Automation機能をインストールして使用する前に、この章をお読みください。


注意:

Oracle Database 11g リリース2 (11.2)は、Oracle COM Automation機能をサポートする最後のデータベース・バージョンです。Oracle Database 11g リリース2 (11.2)より後にリリースされるOracle Databaseバージョンでは、Oracle COM Automation機能はサポートされません。Oracleのライフタイム・サポート・ポリシーで対応される既存のOracle DatabaseバージョンでOracle COM Automation機能を継続して使用できます。

この章の項目は次のとおりです。

Oracle COM Automation機能の概要

Oracle COM Automation機能では、Windowsオペレーティング・システム上のOracle Databaseの機能を、Component Object Model(COM)ベースのコンポーネントを使用してカスタマイズし、強化できます。

カスタム・コンポーネントを独自に作成することも、あるいはサード・パーティの独立系ソフトウェア・ベンダー(ISV)から入手できる数多くの作成済コンポーネントを利用することもできます。

Oracle COM Automationの機能

Oracle COM Automation機能には、PL/SQLまたはJavaを使用してCOMオブジェクトを操作するためのメカニズムが用意されています。

  • Oracle COM Automation機能は、IDispatchインタフェースの汎用ラッパーとして機能します。

  • Oracle COM Automation機能は、IDispatchインタフェースによってサポートされるすべてのメソッドを使用可能にします。

  • COMオブジェクトは、プロパティ、データ属性およびメソッド(アクションを実行するファンクション)を開発者に公開します。

  • IDispatchインタフェースは、すべてのCOMオブジェクトに対する3つの基本操作をサポートします。

    • 公開されたプロパティの値の取得

    • 公開されたプロパティの値の設定

    • オブジェクトに対するメソッドのコール

Oracle COM Automation機能のApplication Program Interface(API)がPL/SQLまたはJavaストアド・プロシージャからコールされると、Oracle COM Automation機能によりパラメータが適切なCOM Automationデータ型に変換されます。次に、変換されたパラメータの値を使用して、対応するIDispatch APIがコールされます。


関連項目:

データ型およびAPIの説明は、第3章「Oracle COM Automation機能の基本機能」を参照してください。

PL/SQL用のOracle COM Automation機能

PL/SQL用のOracle COM Automation機能は、PL/SQLパッケージを提供し、COMオブジェクトをインスタンス化するための一連のApplication Program Interface(API)を公開します。開発者は、これらのAPIをPL/SQLサブプログラム、ストアド・プロシージャ、ストアド・ファンクションまたはトリガーからコールしてCOMオブジェクトを操作できます。

COMオブジェクトを置く場所に関する制限はありません。COMオブジェクトはデータベースに対してローカルに配置するか、Distributed Component Object Model(DCOM)を介してリモートでアクセスできます。

Java用のOracle COM Automation機能

Java用のOracle COM Automation機能は、COMオブジェクトをインスタンス化するための一連のJava APIを提供します。開発者は、これらのAPIをJSP、JavaファンクションまたはJavaトリガーからコールしてCOMオブジェクトを操作できます。

Java用のOracle COM Automation機能では、インプロセスCOM Automationサーバーを使用できません。開発者は、dllhostを使用し、インプロセス・サーバーをサポートできます。

Oracle COM Automation機能の利点

Oracle COM Automation機能は、WindowsにおけるOracle開発者のための強力かつ有用なインフラストラクチャ・テクノロジです。次のような利点があります。

Oracle COM Automation機能のアーキテクチャ

図1-1は、Oracle COM Automation機能を持つOracle Database、クライアント・アプリケーションおよびサーバー・アプリケーションとの関係を示したものです。

図1-1 Oracle COMの相互関係

図1-1の説明が続きます
「図1-1 Oracle COMの相互関係」の説明

PL/SQL用のOracle COM Automation機能とJava用のOracle COM Automation機能のアーキテクチャ上の違いについて、次の2つの項で説明します。

PL/SQLのアーキテクチャ

PL/SQL用のOracle COM Automation機能は、COMオブジェクトを操作するPL/SQL APIのパッケージを提供しています。これらのAPIは、ダイナミック・リンク・ライブラリ(DLL)内の外部プロシージャとして実装されています。

Oracleでは、開発者がサーバー・ベースのオブジェクト型のメソッドおよびストアド・プロシージャから第3世代言語(3GL)関数をコールできる外部プロシージャをサポートします。外部プロシージャは、標準のPL/SQLストアド・プロシージャとまったく同じようにコールされます。ただし、プロシージャの本体がPL/SQLで記述され、データベースに保存されている標準のPL/SQLプロシージャとは異なり、外部プロシージャはDLL内のCプログラミング言語の関数です。Oracle COM Automation機能のAPIは、標準のPL/SQLストアド・プロシージャまたはファンクションをコールするのと同じ方法でコールできます。

図1-2は、Oracle DatabaseによってCOM Automationの外部プロシージャAPIがコールされる様子を示したものです。

図1-2 PL/SQL用のCOM Automation機能のアーキテクチャ

図1-2の説明が続きます
「図1-2 PL/SQL用のCOM Automation機能のアーキテクチャ」の説明

COM Automationの外部プロシージャAPIのコール

データベース・サーバーは、次のように任意のCOM Automationの外部プロシージャAPIをコールします。

  1. PL/SQLインタプリタは、Oracle COM Automation機能のDLL(orawpcomVER.dll)へのパス名を検索します。VERはリリース番号です。

  2. 現行のユーザー・セッションに対してextproc.exeが起動されていない場合、PL/SQLインタプリタは、Oracle Netを使用してリスナーにメッセージを送信し、起動します。

  3. PL/SQLインタプリタはプロシージャ名、パラメータおよびDLLのパス名をextproc.exeに渡します。

  4. extproc.exeファイルはDLLをロードし、外部プロシージャを実行します。それぞれのCOM Automationの外部プロシージャAPIにより、COMオブジェクトのインスタンス化、COMオブジェクトのプロパティの設定または取得、あるいはCOMオブジェクトのメソッドのコールを行うWin32 APIが順次コールされます。

  5. extproc.exeファイルは媒介として機能し、Oracle COM Automation機能とデータベース・サーバー間のすべての対話を処理します。

可用性の問題に関するアーキテクチャ上の影響

PL/SQL用のOracle COM Automation機能による外部プロシージャへの依存性は、データベース・サーバーの可用性と密接に関係します。

Oracle COM Automation機能と、カスタムまたはサード・パーティ製のCOMオブジェクトを本番環境で使用しても、データベース・サーバーの可用性に悪影響は出ません。Oracle COM Automation機能は、Oracleカーネルのアドレス空間の外部で動作します。これにより、不意に停止するCOMオブジェクトからOracle Databaseが保護されます。

Javaアーキテクチャ

Java用のOracle COM Automation機能は、Java Native Interface(JNI)によって実装されます。このアーキテクチャの主要コンポーネントは、AutomationクラスおよびJava COMプロキシDLLであるorawcomVER.dll(VERはリリース・バージョン)です。

インタフェースは、COM AutomationサーバーへのJavaプロキシであるAutomationクラスです。Automationクラスにより、開発者がIDispatchを通じてCOMオブジェクトを操作するために必要なメソッドが提供されます。

Java固有のCOMプロキシであるorawcomVER.dllにより、Javaファンクションは対応するCOMファンクションをコールできます。

図1-3は、Java用のOracle COM Automation機能の実装について示したものです。

図1-3 Java用のCOM Automation機能のアーキテクチャ

図1-3の説明が続きます
「図1-3 Java用のCOM Automation機能のアーキテクチャ」の説明

信頼性

Java用のOracle COM Automation機能は、データベース・サーバーからCOMコンポーネントをコールします。ただし、COMコンポーネントはOracle Databaseプロセスの外部で実行されます。この設計により、データベース・プロセスへの不安定なCOMコンポーネントの影響を回避できます。