Sun WBEM SDK 開発ガイド

第 7 章 Sun WBEM SDK サンプルの使用

この章では、Sun WBEM SDK に付属のプログラム例について説明します。内容は次のとおりです。

プログラム例について

Sun WBEM SDK には、サンプル Java プログラムが付属しています。このプログラムは、/usr/demo/wbem にインストールされます。このソースコードは、独自のプログラムを開発するためのベースとして使用できます。提供されているプログラム例は次の 2 種類です。

アプレットの使用

Solaris WBEM Services が動作するシステムにインストールされている Solaris ソフトウェアパッケージをリストするには、GetPackageInfoAp という Java アプレットを使用します。このアプレットを使用して、パッケージを選択し、そのパッケージの詳しい情報を表示できます。さらに、このアプレットでは、ローカルシステムまたはリモートシステムで動作する CIM Object Manager に接続できます。

このアプレットを実行するには、次のいずれかが必要です。

アプレットの実行に関する詳細は、/usr/demo/wbem/README を参照してください。

クライアント例の使用

クライアント例は、クライアント API を使用して、クラス、インスタンス、ネームスペースの、作成、削除、表示を行います。次の 4 種類のクライアントプログラムが提供されています。

クライアントサンプルファイル

次の表において、クライアントプログラム例のファイルについて説明し、各例を実行するコマンドと引数を示します。

表 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. 次に示す方法の 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
    

  2. プロバイダクラスファイルを /usr/sadm/lib/wbem に移動します。

    プロバイダクラスファイルは、それらのファイルが定義されているパッケージと同じパスに移動する必要があります。たとえば、プロバイダが com.sun.providers.myprovider.* のようにパッケージされている場合には、プロバイダクラスファイルを /usr/sadm/lib/wbem/com/sun/wbem/myprovider/.class に移動します。

  3. Solaris プロバイダの CLASSPATH 変数に、プロバイダクラスファイルが含まれているディレクトリを設定します。これについては、プロバイダの CLASSPATH を設定する方法を参照してください。

  4. 次のコマンドを入力して CIM Object Manager を停止します。


    # /etc/init.d/init.wbem -stop
    

  5. 次のコマンドを入力して CIM Object Manager を再起動します。


    # /etc/init.d/init.wbem -start
    

  6. Native_Example.mof ファイルをコンパイルします。次に入力例を示します。

    % mofcomp Native_Example.mof
    

    この MOF ファイルをコンパイルすると、CIM Object Manager に Native_Example クラスが読み込まれ、NativeProvider がそのプロバイダとして識別されます。

  7. CIM WorkShop を実行し、Native_Example クラスを表示します。次に入力例を示します。


    % /usr/sadm/bin/cimworkshop &
    

  8. ツールバーで「クラスを検索 (Find Class)」アイコンをクリックします。

  9. 「入力 (Input)」ダイアログボックスで、Native_Example と入力して「了解 (OK)」をクリックします。