この章では、Sun WBEM SDK に付属のプログラム例について説明します。内容は次のとおりです。
Sun WBEM SDK には、サンプル Java プログラムが付属しています。このプログラムは、/usr/demo/wbem にインストールされます。このソースコードは、独自のプログラムを開発するためのベースとして使用できます。提供されているプログラム例は次の 2 種類です。
アプレット – Java 対応の Web ブラウザや Java Development Kit (JDK) のアプレットビューアで動作するプログラム
クライアントプログラム – クライアント API と CIM API を使用して CIM Object Manager からの WBEM オペレーションを要求するプログラム
プロバイダプログラム – データにアクセスするために管理対象オブジェクトと通信を行うプログラム
Solaris WBEM Services が動作するシステムにインストールされている Solaris ソフトウェアパッケージをリストするには、GetPackageInfoAp という Java アプレットを使用します。このアプレットを使用して、パッケージを選択し、そのパッケージの詳しい情報を表示できます。さらに、このアプレットでは、ローカルシステムまたはリモートシステムで動作する CIM Object Manager に接続できます。
このアプレットを実行するには、次のいずれかが必要です。
Java Development Kit (JDK) 1.2 アップレットビューア
Java 対応の Web ブラウザ。ただし、JRE 1.2.2 が使用されているか、Java Plug-in 1.2.2 ソフトウェアが有効になっている必要があります。
アプレットの実行に関する詳細は、/usr/demo/wbem/README を参照してください。
クライアント例は、クライアント API を使用して、クラス、インスタンス、ネームスペースの、作成、削除、表示を行います。次の 4 種類のクライアントプログラムが提供されています。
列挙 – クラスとインスタンスを列挙します。このプログラムは、コマンド行から渡されるクラスの詳細 (deep) 列挙と簡易 (shallow) 列挙を行います。
ロギング – ログ記録の書き込みと読み取りを行います。
その他 – クラスとインスタンスを削除します。
ネームスペース – ネームスペースの作成と削除を行います。
システム情報 – 選択されるシステムおよびネットワークの Solaris プロセス情報を表示します。
次の表において、クライアントプログラム例のファイルについて説明し、各例を実行するコマンドと引数を示します。
表 7–1 クライアントファイル例
サンプルファイル名 |
説明 |
実行するコマンド |
---|---|---|
CreateNameSpace |
指定されたユーザーとして CIM Object Manager に接続し、指定されたホスト上にネームスペースを作成する。root ユーザー名とパスワードを指定する必要がある。 |
java CreateNameSpace host parentNS childNS username password |
DeleteNameSpace |
指定されたホスト上の指定されたネームスペースを削除する。root ユーザー名とパスワードを指定する必要がある。 |
java DeleteNameSpace host parentNS childNS username password |
ClientEnum |
指定されたホスト上のデフォルトネームスペース root\cimv2 に存在する指定されたクラスのサブクラスとインスタンスを列挙する。 |
java ClientEnum host className |
CreateLog |
指定されたホスト上にログレコードを作成する。root ユーザー名とパスワードを指定する必要がある。 |
java CreateLog host username password |
ReadLog |
指定されたホスト上のログレコードを読み取る。root ユーザー名とパスワードを指定する必要がある。 |
java ReadLog host username password |
DeleteClass |
指定されたホスト上のデフォルトネームスペース root\cimv2 に存在する指定されたクラスを削除する。root ユーザー名とパスワードを指定する必要がある。 |
java DeleteClass host className username password |
DeleteInstances |
指定されたホスト上のデフォルトネームスペース root\cimv2 に存在する指定されたクラスのインスタンスを削除する。root ユーザー名とパスワードを指定する必要がある。 |
java DeleteInstances host className username password |
CreateQualifierType |
指定されたホスト上の指定されたネームスペースに、指定された修飾子型を作成する。root のユーザー名とパスワードを指定する必要がある。 |
java CreateQualifierType host parentNS username password qualifierTypeName |
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 . "" root secret |
プロバイダ例は、システムプロパティを返し、文字列「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)」をクリックします。