ヘッダーをスキップ
Oracle COM Automation機能開発者ガイド
11gリリース1(11.1)
E05796-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

1 Oracle COM Automationの概要

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

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

Oracle COM Automationの概要

Oracle COM Automationでは、Windowsオペレーティング・システム上のOracleデータベースの機能を、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オートメーション・データ型に変換されます。次に、変換されたパラメータの値を使用して、対応する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機能を持つOracle9iデータベース、クライアント・アプリケーションおよびサーバー・アプリケーションとの関係を示したものです。

図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)内の外部プロシージャとして実装されています。

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

図1-2は、Oracle9iデータベースによって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を使用してリスナーにメッセージを送信し、extproc.exeを起動します。

  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データベースが保護されます。

Javaアーキテクチャ

Java用のOracle COM Automationは、Javaネイティブ・インタフェース(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コンポーネントはOracle9iデータベース・プロセスの外部で実行されます。この設計により、データベース・プロセスへの不安定なCOMコンポーネントの影響を回避できます。