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