この章では、Solaris WBEM SDK に付属のサンプルプログラムについて説明します。内容は次のとおりです。
Solaris WBEM SDK をインストールすると、Java アプレットおよびいくつかのプログラムが /usr/demo/wbem にインストールされます。これらのサンプルは、ユーザー独自のアプレットおよびプログラムを開発するためのベースとして使用できます。
アプレットおよびサンプルプログラムを使用するには、/usr/java が JDK 1.2.2 以上で Solaris WBEM SDK ファイルが /usr ディレクトリにインストールされている必要があります。
アプレット – Solaris WBEM Services が動作するシステムにインストールされた Solaris ソフトウェアパッケージのリストを表示して説明する。ローカルまたはリモートシステム上の CIM Object Manager に接続する
クライアントプログラム – Java API を使用して CIM Object Manager に要求を出すプログラム
プロバイダプログラム – データにアクセスするために管理対象オブジェクトと通信を行うプログラム
このアプレットの詳細については、/usr/demo/wbem/applet/README を参照してください。
アプレットは、CIM Object Manager にネットワークからアクセスしているコンピュータで実行する必要があります。またそのコンピュータで、次のソフトウェアを実行する必要があります。
JDK 1.2 アプレットビューア
JDK 1.2.2 またはそれ以降のリリースの Java 実行環境を使用する Web ブラウザ、または JDK 1.2.2 またはそれ以降のリリースの Java Plug-in 製品がインストールされている Web ブラウザ
次のコマンドを入力します。
% appletviewer -JD \ java.security.policy=/usr/demo/wbem/applet/applet.policy \ /usr/demo/wbem/applet/GetPackageInfoAp.html |
サンプルクライアントプログラムは、/usr/demo/wbem/client のサブディレクトリにあります。次の表でプログラムについて説明します。
表 6-1 サンプルクライアントプログラム
ディレクトリ |
プログラム |
目的 |
---|---|---|
./batching |
./TestBatch host_name user_name password classname [[rmi|http]] |
バッチ処理を 1 回呼び出すだけで enumerateInstanceName, getClass および enumerateInstances を実行する |
./enumeration |
./ClientEnum host username password classname [[rmi|http]] |
指定されたホスト上のデフォルトの名前空間 root\cimv2 にある指定されたクラスのサブクラスとインスタンスを列挙する |
./events |
./Subscribe host username password classname |
指定されたクラスのライフサイクルイベントを予約し、予約してから 1 分以内に発生したイベントを出力する。そのあと、イベントの予約を解除する |
./logging |
./CreateLog host root_username root_password [[rmi|http]] |
指定されたホスト上にログレコードを作成する |
./ReadLog host root_username root_password [[rmi|http]] |
指定されたホスト上のログレコードを読み取る |
|
./misc |
./DeleteClass host classname root_username root_password [[ rmi|http]] |
指定されたホスト上のデフォルトの名前空間 root\cimv2 にある指定されたクラスを削除する |
./DeleteInstances host classname root_username root_password [[rmi|http ]] |
指定されたホスト上のデフォルトの名前空間 root\cimv2 にある指定されたクラスのインスタンスを削除する |
|
./namespace
|
./CreateNameSpace host parentNS childNS root_username root_password [[rmi|http]] |
指定されたユーザーとして CIM Object Manager に接続し、指定されたホスト上に名前空間を作成する |
./DeleteNameSpace host parentNS childNS root_username root_password [[ rmi|http]] |
指定されたホスト上の指定された名前空間を削除する |
|
./query |
./ExampleQuery host username password [[ rmi|http]] WQL_query |
サンプルインスタンスでテストクラスを作成し、そのクラスで照会を実行する |
./TestQuery host username password [[rmi|http]] WQL_query |
指定された WQL 照会を実行する |
|
./systeminfo |
./SystemInfo host username password [[rmi|http]] |
指定されたホストの Solaris プロセッサとシステムの情報を個別のウィンドウに表示する |
クライアントプログラムを実行する前に、CLASSPATH に必要な .jar ファイルを設定する必要があります。
次のいずれかの方法を使用します。
C シェルを使用して次のように入力します。
% setenv CLASSPATH .:/usr/sadm/lib/wbem.jar:/usr/sadm/lib/xml.jar :/usr/sadm/lib/wbem/sunwbem.jar:/usr/sadm/lib/wbem/extension |
Bourne シェルを使用して次のように入力します。
$ set CLASSPATH=.:/usr/sadm/lib/wbem.jar:/usr/sadm/lib/xml.jar :/usr/sadm/lib/wbem/sunwbem.jar:/usr/sadm/lib/wbem/extension |
ほとんどのクライアントサンプルプログラムでは、CIM Object Manager の接続に使用するプロトコルを指定するオプションパラメータを使用できます。 RMI は、デフォルトプロトコルです。
たとえば、次のスクリプトは、 HTTP プロトコルを使用して secret パスワードで root ユーザーとして myhost に接続し SystemInfo プログラムを実行します。
% java SystemInfo myhost root secret http |
サンプルプロバイダプログラムは、/usr/demo/wbem/provider サブディレクトリにあります。次の表では、このプログラムについて説明します。
表 6-2 サンプルプロバイダプログラム
ファイル名 |
目的 |
---|---|
NativeProvider.java |
CIM Object Manager からの要求に応答し、それらを Native_Example プロバイダに配信する最上位のプロバイダプログラム。このプログラムは、instanceProvider API と method Provider API を実装し、Native_Example クラスのインスタンスを列挙するメソッドと、取得するメソッドを宣言するこのプログラムは、文字列「Hello World」を出力するメソッドを呼び出すメソッドも宣言する |
Native_Example.mof |
NativeProvider プロバイダを CIM Object Manager に登録するクラスを作成する。この MOF ファイルは、NativeProvider を、Native_Example クラスの動的データ要求に対してサービスを行うプロバイダとして識別する。また 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 コード |
サンプルプロバイダプログラムを実行する前に環境を設定する必要があります。
LD_LIBRARY_PATH 環境変数を、プロバイダクラスファイルの位置に設定します。
C シェルを使用して次のように入力します。
% setenv LD_LIBRARY_PATH /usr/sadm/lib/wbem |
Bourne シェルを使用して次のように入力します。
$ LD_LIBRARY_PATH=/usr/sadm/lib/wbem; export LD_LIBRARY_PATH |
libnative.so 共有ライブラリファイルを、LD_LIBRARY_PATH 環境変数によって指定されているディレクトリにコピーします。
% cp libnative.so /usr/sadm/lib/wbem |
プロバイダクラスファイルを、それらのファイルが定義されているパッケージと同じパスに移動します。
% mv *.class /usr/sadm/lib/wbem |
スーパーユーザーになります。
LD_LIBRARY_PATH 環境変数を設定したシェルと同じシェルの CIM Object Manager を停止します。
# /etc/init.d/init.wbem stop |
シェルに LD_LIBRARY_PATH 環境変数を設定する場合は、設定した新しい値を認識させるために、そのシェルで CIM Object Manager の停止と再起動を行なってください。
CIM Object Manager を起動します。
# /etc/init.d/init.wbem start |
スーパーユーザー状態から抜けます。
CIM Object Manager の適切なクラスを読み込んでプロバイダを識別するためにプログラムに関連した .mof ファイルをコンパイルします。
% mofcomp -u root -p root_password Native_Example.mof |
CIM Workshop を起動します。
% /usr/sadm/bin/cimworkshop |
CIM Workshop ツールバーの「クラスを検索 (Find Class) 」アイコンをクリックします。
「入力 (Input) 」ダイアログボックスで、表示したいクラス名を入力して「了解 (OK) 」をクリックします。
CIM Workshop にクラスが表示されます。