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