プロバイダ例は、システムプロパティを返し、文字列「Hello World」を出力する Java プログラムです。プロバイダは、ネイティブ C メソッドを呼び出してコードを実行し、値をプロバイダに返します。
次の表で、プロバイダプログラムの各ファイルについて説明します。
表 7–2 プロバイダファイルの例
ファイル |
目的 |
---|---|
NativeProvider |
CIM Object Manager からの要求に応答し、それらを Native_Example プロバイダに送るトップレベルのプロバイダプログラム。NativeProvider プログラムは、instanceProvider API と method Provider API を実装し、Native_Example クラスのインスタンスを列挙するメソッドと、取得するメソッドを宣言する。このプログラムは、文字列「Hello World」を出力するメソッドを呼び出すメソッドも宣言する。 |
Native_Example.mof |
NativeProvider プロバイダを CIM Object Manager に登録するクラスを作成する。Native_Example.mof ファイルは、NativeProvider を、Native_Example クラスの動的データ要求に対してサービスを行うプロバイダとして識別する。この MOF ファイルは、NativeProvider によって実装されるプロパティとメソッドの宣言も行う。 |
Native_Example.java |
NativeProvider プログラムは、このプロバイダを呼び出して、Native_Example クラスのインスタンスを列挙するメソッドと取得するメソッドを実装する。Native_Example プロバイダは、API を使用してオブジェクトの列挙とオブジェクトインスタンスの作成を行う。Native_Example クラスは、native.c ファイル内の C 関数を呼び出してシステム固有の値 (ホスト名、シリアル番号、リリース、マシン、アーキテクチャ、メーカーなど) を取得するネイティブメソッドの宣言も行う。 |
native.c |
Native_Example Java プロバイダからの呼び出しをネイティブ C コードで実装する C プログラム。 |
Native_Example.h |
Native_Example クラスに対して自動的に生成されるヘッダーファイル。Java ネイティブメソッド名とそれらのメソッドを実行するネイティブ C 関数間の対話を定義する。 |
libnative.so |
native.c ファイルからコンパイルされるバイナリネイティブ C コード。 |
Java プログラムの作成、および Java プログラムとネイティブメソッドの統合についての詳細は、Java の Web サイト http://www.javasoft.com/docs/books/tutorial/native1.1/TOC.html を参照してください。
プロバイダプログラム例 NativeProvider は、Native_Example クラスのインスタンスの列挙と、インスタンスプロパティの取得を行います。Native_Example クラスとそのインスタンスは、CIM WorkShop を使用して表示できます。
次に示す方法の 1 つを使用して、共有ライブラリファイルの場所を指定します。
LD_LIBRARY_PATH 環境変数を、共有ライブラリファイルの場所に設定します。次に C シェルを使用する入力例を示します。
ある 1 つのシェルで LD_LIBRARY_PATH 環境変数を設定する場合は、この環境変数の新しい値が認識されるように、そのシェルで CIM Object Manager を停止および再起動してください。
% setenv LD_LIBRARY_PATH /wbem/provider/ |
たとえば、Bourne シェルを使用する場合には、次のように指定します。
% LD_LIBRARY_PATH = /wbem/provider/ |
共有ライブラリファイルを、LD_LIBRARY_PATH 環境変数によって指定されているディレクトリにコピーします。WBEM のインストールを行うと、この環境変数は /usr/sadm/lib/wbem に設定されます。次に入力例を示します。
% cp libnative.so /usr/sadm/lib/wbem % cp native.c /usr/sadm/lib/wbem % cp Native_Example.h /usr/sadm/lib/wbem |
プロバイダクラスファイルを /usr/sadm/lib/wbem に移動します。
プロバイダクラスファイルは、それらのファイルが定義されているパッケージと同じパスに移動する必要があります。たとえば、プロバイダが com.sun.providers.myprovider.* のようにパッケージされている場合には、プロバイダクラスファイルを /usr/sadm/lib/wbem/com/sun/wbem/myprovider/.class に移動します。
Solaris プロバイダの CLASSPATH 変数に、プロバイダクラスファイルが含まれているディレクトリを設定します。これについては、プロバイダの CLASSPATH を設定する方法を参照してください。
次のコマンドを入力して CIM Object Manager を停止します。
# /etc/init.d/init.wbem -stop |
次のコマンドを入力して CIM Object Manager を再起動します。
# /etc/init.d/init.wbem -start |
Native_Example.mof ファイルをコンパイルします。次に入力例を示します。
% mofcomp Native_Example.mof |
この MOF ファイルをコンパイルすると、CIM Object Manager に Native_Example クラスが読み込まれ、NativeProvider がそのプロバイダとして識別されます。
CIM WorkShop を実行し、Native_Example クラスを表示します。次に入力例を示します。
% /usr/sadm/bin/cimworkshop & |
ツールバーで「クラスを検索 (Find Class)」アイコンをクリックします。
「入力 (Input)」ダイアログボックスで、Native_Example と入力して「了解 (OK)」をクリックします。