Solaris WBEM SDK 開発ガイド

第 6 章 Solaris WBEM SDK サンプルプログラムの使用

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

サンプルプログラムについて

Solaris WBEM SDK をインストールすると、Java アプレットおよびいくつかのプログラムが /usr/demo/wbem にインストールされます。これらのサンプルは、ユーザー独自のアプレットおよびプログラムを開発するためのベースとして使用できます。


注 -

アプレットおよびサンプルプログラムを使用するには、/usr/java が JDK 1.2.2 以上で Solaris WBEM SDK ファイルが /usr ディレクトリにインストールされている必要があります。


次のサンプルプログラムが提供されます。

サンプルアプレット


注 -

このアプレットの詳細については、/usr/demo/wbem/applet/README を参照してください。


アプレットは、CIM Object Manager にネットワークからアクセスしているコンピュータで実行する必要があります。またそのコンピュータで、次のソフトウェアを実行する必要があります。

JDK アプレットビューアまたは Java 実行環境の詳細については、http://java.sun.com を参照してください。Java Plug-in の詳細については、『Solaris Java Plug-in ユーザーズガイド』を参照してください。

アプレットビューアを使用してサンプルアプレットを実行する方法
  1. 次のコマンドを入力します。


    % appletviewer -JD \
    java.security.policy=/usr/demo/wbem/applet/applet.policy \
    /usr/demo/wbem/applet/GetPackageInfoAp.html
    
Web ブラウザでサンプルアプレットを実行する方法
  1. Web ブラウザで次のファイルを開きます。

    /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 ファイルを設定する必要があります。

CLASSPATH の設定方法
  1. 次のいずれかの方法を使用します。

    • 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 は、デフォルトプロトコルです。

  1. 次の形式を使用してサンプルクライアントプログラムを実行します。


    % java program_name parameters
    

たとえば、次のスクリプトは、 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 コード

サンプルプロバイダプログラムの実行方法

サンプルプロバイダプログラムを実行する前に環境を設定する必要があります。

  1. LD_LIBRARY_PATH 環境変数を、プロバイダクラスファイルの位置に設定します。

    • C シェルを使用して次のように入力します。


      % setenv LD_LIBRARY_PATH /usr/sadm/lib/wbem
      

    • Bourne シェルを使用して次のように入力します。


      $ LD_LIBRARY_PATH=/usr/sadm/lib/wbem; export LD_LIBRARY_PATH
      

  2. libnative.so 共有ライブラリファイルを、LD_LIBRARY_PATH 環境変数によって指定されているディレクトリにコピーします。


    % cp libnative.so /usr/sadm/lib/wbem
    

  3. プロバイダクラスファイルを、それらのファイルが定義されているパッケージと同じパスに移動します。


    % mv *.class /usr/sadm/lib/wbem
    

  4. スーパーユーザーになります。

  5. LD_LIBRARY_PATH 環境変数を設定したシェルと同じシェルの CIM Object Manager を停止します。


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

    注 -

    シェルに LD_LIBRARY_PATH 環境変数を設定する場合は、設定した新しい値を認識させるために、そのシェルで CIM Object Manager の停止と再起動を行なってください。


  6. CIM Object Manager を起動します。


    # /etc/init.d/init.wbem start
    
  7. スーパーユーザー状態から抜けます。

  8. CIM Object Manager の適切なクラスを読み込んでプロバイダを識別するためにプログラムに関連した .mof ファイルをコンパイルします。


    % mofcomp -u root -p root_password Native_Example.mof
    

  9. CIM Workshop を起動します。


    % /usr/sadm/bin/cimworkshop
    

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

  11. 「入力 (Input) 」ダイアログボックスで、表示したいクラス名を入力して「了解 (OK) 」をクリックします。

    CIM Workshop にクラスが表示されます。