この章では、Sun WBEM SDK に付属のプログラム例について説明します。内容は次のとおりです。
Sun WBEM SDK には、サンプル Java プログラムが付属しています。このプログラムは、/install_dir/SUNWconn/wbem/demo にインストールされます。このソースコードは、独自のプログラムを開発するためのベースとして使用できます。提供されているプログラム例は次の 2 種類です。
クライアントプログラム - クライアント API と CIM API を使用して CIM Object Manager からの WBEM オペレーションを要求するプログラム
プロバイダプログラム - データにアクセスするために管理対象オブジェクトと通信を行うプログラム
クライアント例は、クライアント API を使用してクラス、インスタンス、およびネームスペースの作成、削除、および表示を行います。次の 4 種類のクライアントプログラムが提供されています。
列挙 - クラスとインスタンスを列挙します。このプログラムは、コマンド行から渡されるクラスのディープ (deep) 列挙とシャロー (shallow) 列挙を行います。
ロギング - ログ記録の書き込みと読み取りを行う
その他 - クラスとインスタンスを削除する
ネームスペース - ネームスペースの作成と削除を行う
システム情報 - 選択されるシステムおよびネットワークの Solaris プロセス情報を表示する
次の表は、クライアントプログラム例のファイルについて説明し、各例を実行するコマンドと引数を示しています。
表 8-1 クライアントファイル例
サンプルファイル名 |
説明 |
実行するコマンド |
---|---|---|
CreateNameSpace |
指定されたユーザーとして CIM Object Manager に接続し、指定されたホスト上にネームスペースを作成する。CIM Object Manager Repository の管理アカウントのユーザー名とパスワードを指定する必要がある |
java CreateNameSpace host parentNS childNS username password |
DeleteNameSpace |
指定されたホスト上の指定されたネームスペースを削除する。CIM Object Manager Repository の管理アカウントのユーザー名とパスワードを指定する必要がある |
java DeleteNameSpace host parentNS childNS username password |
ClientEnum |
指定されたホスト上のデフォルトネームスペース /root/cimv2 に存在する指定されたクラスのサブクラスとインスタンスを列挙する |
java ClientEnum host className |
CreateLog |
指定されたホスト上にログレコードを作成する。CIM Object Manager Repository の管理アカウントのユーザー名とパスワードを指定する必要がある |
java CreateLog host username password |
ReadLog |
指定されたホスト上のログレコードを読み取る。CIM Object Manager Repository の管理アカウントのユーザー名とパスワードを指定する必要がある |
java ReadLog host username password |
DeleteClass |
指定されたホスト上のデフォルトネームスペース /root/cimv2 に存在する指定されたクラスを削除する。CIM Object Manager Repository の管理アカウントのユーザー名とパスワードを指定する必要がある |
java DeleteClass host className username password |
DeleteInstances |
指定されたホスト上のデフォルトネームスペース /root/cimv2 に存在する指定されたクラスのインスタンスを削除する。CIM Object Manager Repository の管理アカウントのユーザー名とパスワードを指定する必要がある |
java DeleteInstances host className username password |
SystemInfo |
指定されたホストの Solaris プロセッサとシステムの情報をウィンドウに表示する |
java SystemInfo host |
クライアントプログラム例を実行するには、次のコマンドを入力します。
java program_name
プログラム例のほとんどは、デフォルト値を持つ必須引数を取ります。たとえば、CreateNameSpace プログラム例には、次の 5 つの引数を指定します。
ホスト名
親ネームスペース
子ネームスペース
ユーザー名
パスワード
コマンド行引数にデフォルト値を指定するには、次の構文を使用します。
引数 |
デフォルト値 |
構文 |
---|---|---|
Host name |
local host |
. |
Parent namespace |
/root/cimv2 |
" " |
Child namespace |
Null |
" " |
User name |
GUEST |
" " |
Password |
GUEST |
" " |
次に、ローカルホスト上のデフォルトネームスペース root¥cimv2 に、パスワード secret を持つユーザー admin として接続する CreateNameSpace を実行する例を示します。
java CreateNameSpace . "" admin secret
プロバイダ例は、システムプロパティを返し、文字列「Hello World」を出力する Java プログラムです。プロバイダは、ネイティブ C メソッドを呼び出してコードを実行し、値をプロバイダに返します。
次の表は、プロバイダプログラムの各ファイルについて説明しています。
表 8-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 環境変数を、共有ライブラリファイルの場所に設定します。次に入力例を示します。
% setenv LD_LIBRARY_PATH /install_dir/SUNWconn/wbem/demo/provider/jni/ |
共有ライブラリファイルを、LD_LIBRARY_PATH 環境変数によって指定されているディレクトリにコピーします。WBEM のインストールを行うと、この環境変数は /install_dir/opt/SUNWconn/wbem/lib に設定されます。次に入力例を示します。
% cp libnative.so /install_dir/opt/SUNWconn/wbem/lib % cp native.c /install_dir/opt/SUNWconn/wbem/lib % cp Native_Example.h /install_dir/opt/SUNWconn/wbem/lib |
プロバイダクラスファイルを、 CIM Object Manager が入っているディレクトリに移動させます。次に入力例を示します。
% mv Native*.class /install_dir/opt/SUNWconn/wbem/bin |
CIM Object Manager が動作していることを確認します。
インストールを行うと CIM Object Manager は自動的に起動します。CIM Object Manager が動作していない場合は、「CIM Object Manager の再起動」を参照してください。
Native_Example.mof ファイルをコンパイルします。次に入力例を示します。
% mofcomp Native_Example.mof |
この MOF ファイルをコンパイルすると、CIM Object Manager に Native_Example クラスが読み込まれ、NativeProvider がそのプロバイダとして識別されます。
CIM WorkShop を実行し、Native_Example クラスを表示します。次に入力例を示します。
% /opt/SUNWconn/wbem/bin/cimworkshop & |
ツールバーで「クラスを検索 (Find Class)」アイコンをクリックします。
「入力 (Input)」ダイアログボックスで、Native_Example と入力して「了解 (OK)」をクリックします。