ディスクドライブや CPU といった管理リソース (管理対象のリソース) と通信してデータにアクセスする特別なクラスのことを「プロバイダ」と呼びます。プロバイダは、統合および解釈の目的で、Solaris WBEM サービスの主要 WBEM エージェントである CIMOM (CIM オブジェクトマネージャ) にデータを転送します。また、WBEM リソースのサブセットの管理作業を引き受けることにより、CIMOM の負荷を軽減します。データ転送には、javax.wbem.provider API を使用します。アプリケーションから CIM オブジェクトマネージャリポジトリにないデータを要求されると、CIMOM は、プロバイダインタフェースを使って、この要求を適切なプロバイダに転送します。
Solaris ソフトウェアプロバイダは、さまざまな領域で使用されます。たとえば、ユーザー、グループ、別名、役割、ファイルシステム、ディスク、プロセス、cron ツール、ネットワーク構成、製品レジストリで使用されます。さらに、デバイスやシステムのパフォーマンスの監視にも使用されます。
プロバイダは、インスタンスのテンプレートとなるクラスではなく、インスタンスを作成、変更、および削除します。インスタンスは、永続的な記憶領域に存在しますが、動的に使用することもできます。
プロバイダは独自のプロセスとメモリーを持ちながら、CIMOM から委託された作業を行います。WBEM を正しく機能させるためには、CIMOM に各プロバイダの位置を通知する必要があります。MOF ファイルに新規または変更されたプロバイダを含めることにより、CIMOM にプロバイダの情報を知らせることができます。MOF ファイルは、プロバイダがサポートするクラスおよびインスタンスを定義します。MOF ファイルを登録するには、mofcomp (1M) コマンドを使用します。
管理アプリケーションにデータを提供する – 管理アプリケーションから CIM オブジェクトマネージャリポジトリで使用できない管理リソースのデータを要求された場合、CIMOM は、この要求をプロバイダに転送します。プロバイダは、管理リソースからデータにアクセスし、そのデータを CIMOM に渡します。管理リソースから受け取ったデータがネイティブ形式 (C コードなど) である場合、プロバイダは、そのデータを Java CIM クラスにマップしてから CIMOM に渡します。
管理リソースを制御する – CIMOM は、管理リソースを制御するため、管理アプリケーションから受け取ったデータを適切なプロバイダに渡します。管理リソースがネイティブ形式のデータを必要とする場合、プロバイダは、CIM クラスをリソースのネイティブ形式にマップしてからデータを渡します。
プロバイダと CIMOM は、同じコンピュータに置く必要があります。
永続的でないデータ – プロバイダのメソッドが実行している場合にのみ存在するプロバイダクラスのローカル変数
永続的なメモリー (プロバイダに対してローカル) – プロバイダクラスの大域変数を作成するために使用する。このプロバイダメモリーは、CIMOM を停止して再起動すると消去される
CIM オブジェクトマネージャリポジトリ – この永続的なメモリーは、Solaris WBEM サービスソフトウェアをアンインストールすると消去される。プロバイダは、CIMOM ハンドルと内部プロバイダを使って、CIMOM からこのメモリーにアクセスする必要がある
プロバイダによって管理されるファイルおよびデータベース (つまり動的なデータ) – プロバイダは、システムからデータを取得することにより、データを動的に生成できる。たとえば、システム呼び出しにより、現在実行中のプロセス数を取得できる
プロバイダは、処理できる要求の種類によって分類されます。クライアントプログラムは、CIMOM と通信し、クライアント API 経由で WBEM にアクセスします。CIMOM は、プロバイダメソッドをクライアント API の対応するクライアントメソッドにマップします。ただし、引数リストおよび対応するメソッドの戻り値は異なる場合があります。/usr/sadm/lib/wbem/doc/index.html を参照してください。
CIM オブジェクトマネージャリポジトリにデータを格納している場合、プロバイダは、CIMOM へのハンドルを使ってこのリポジトリにアクセスします。これらのハンドルは、クライアント API のメソッドを呼び出します。プロバイダインタフェースの実装を参照してください。
CIM オブジェクトマネージャリポジトリ内にインスタンスまたは関連を作成する必要がある場合は、内部プロバイダを使用します。プロバイダは、インスタンスのメソッドか、WBEM 内部のアソシエータ (関連) プロバイダのメソッドを呼び出します。プロバイダインタフェースの実装を参照してください。
使用するメソッドおよびクラスの引数リストおよび戻り値が正しいかどうか確認してください。
次の表に Solaris WBEM SDK プロバイダの種類を示します。
表 6–1 プロバイダの種類
種類 |
クラス名 |
説明 |
---|---|---|
インスタンス |
CIMInstanceProvider |
所定のクラスの動的なインスタンスを提供する。インスタンスの取得、列挙、変更、削除をサポートする |
メソッド |
MethodProvider |
1 つ以上のクラスのメソッドを供給する |
アソシエータ |
CIMAssociatorProvider |
動的な関連クラスのインスタンスを供給する |
インジケーション |
EventProvider |
CIM イベントのインジケーションを処理する |
承認 |
なし |
マーカーインタフェースは、プロバイダが独自に承認検査を行うことを CIMOM に知らせる |
関連するメソッドを登録および実装することにより、単一のプロバイダを 1 種類以上のプロバイダとして使用できます。
プロバイダは、単一の Java クラスに含めることができます。また各プロバイダをそれぞれのクラスに分けて保存することもできます。プロバイダ名は、クラスのプロバイダとなる Java クラスを識別します。現時点では、CIMOM は、Java 言語で作成されたプロバイダのみをサポートします。
プロバイダ名およびクラス名は、次の規約に従う必要があります。
クラス名は有効な CIM クラスでなければなりません。すなわち、接頭辞、続いて下線 (_)、最後に文字列の順で構成されていなければなりません。
たとえば、green_apples および red_apples は、有効な CIM クラス名ですが、apples、 apples_、および _apples は、有効なクラス名ではありません。
MOF ファイルに指定するプロバイダ名は、プロバイダクラスファイルの名前と一致する必要があります。
たとえば、SimpleCIMInstanceProvider はプロバイダ名、Ex_SimpleCIMInstanceProvider はクラス名です。
プロバイダ修飾子の前には、必ず「java:」を付けます。これは、プロバイダが Java 言語で作成されていることを CIMOM に認識させるためです。
標準の Java クラスおよびパッケージ命名規則に従って、プロバイダ名を作成します。パッケージ名の接頭辞は、小文字の ASCII 文字で最上位のドメイン名 (com、edu、gov、 mil、net、org) 、または ISO 標準 3166、1981 で指定されている英語 2 文字の国名コードにする必要があります。
パッケージ名のあとに続く名前は、組織内部の命名規則によって異なります。組織内部の規則では、ディレクトリ名のコンポーネントとして、部名、課名、プロジェクト名、マシン名、あるいはログイン名などを指定します。たとえば、プロバイダ名 java:com.sun.wbem.cimom は、次の情報を示します。
java: – プロバイダを記述した言語
com – 最上位のドメイン名
sun – 会社名
wbem – 製品名
cimom – CIMOM を実装するクラスファイルの種類