Solaris WBEM SDK 開発ガイド

インスタンスの削除

インスタンスの削除には、deleteInstance メソッドを使用します。


例 3-6 インスタンスの削除

次の例では、クライアントアプリケーションを CIM Object Manager に接続し、CIMObjectPath を使用して削除するオブジェクトの CIM オブジェクトパスを含むオブジェクトを構築し、enumerateInstance を使用してインスタンスおよびサブクラスのすべてのインスタンスを取得し、 deleteInstance を使用して各インスタンスを削除します。

 
import java.rmi.*;
import java.util.Enumeration;

import javax.wbem.cim.CIMClass;
import javax.wbem.cim.CIMException;
import javax.wbem.cim.CIMInstance;
import javax.wbem.cim.CIMNameSpace;
import javax.wbem.cim.CIMObjectPath;

import javax.wbem.client.CIMClient;
import javax.wbem.client.PasswordCredential;
import javax.wbem.client.UserPrincipal;

/** 
 * 指定されたクラスのインスタンスをすべて返す。
 * このプログラム例では、5 つの必須コマンド行引数、hostname (args[0])、
 * username (args[1])、password (args[2]) namespace (args[3])、
 * および classname (args[4]) を取り、
 * 指定されたクラス名のインスタンスをすべて削除する。
 * 指定されたユーザー名は、
 * 指定された名前空間への書き込み権を持つ必要がある
 */
public class DeleteInstances {
    public static void main(String args[]) throws CIMException {
        CIMClient cc = null;
        // 5 つの引数が指定されない場合、使用法を表示して終了する
        if (args.length != 5) {
           System.out.println("Usage: DeleteInstances host username " +
                              "password namespace classname ");
           System.exit(1);
           }
       try {
          // args[0] にはホスト名が、args[3] には名前空間 
          // が含まれる。指定されたホスト上の指定された
          // 名前空間を指す CIMNameSpace (cns) を作成する
          CIMNameSpace cns = new CIMNameSpace(args[0], args[3]);

         // args[1] と args[2] にはユーザー名およびパスワードが含まれる。
         // ユーザー名を使用して UserPrincipal (up) を作成し、
         // パスワードを使用して PasswordCredential を作成する
         UserPrincipal up = new UserPrincipal(args[1]);
         PasswordCredential pc = new PasswordCredential(args[2]);

        // CIM Object Manager に接続して、
        // 作成した CIMNameSpace、UserPrincipal、および 
        // PasswordCredential オブジェクトを渡す
        cc = new CIMClient(cns, up, pc);

        // クラス名 (args[4]) を取得し、CIMObjectPath を作成する
        CIMObjectPath cop = new CIMObjectPath(args[4]);

        // クラスおよびそのサブクラスすべてのインスタンスオブジェクトパス
        // すべての列挙を取得する。インスタンスオブジェクトパスは、
        // CIM Object Manager がインスタンス検出に
        // 使用する参照を指す
        Enumeration e = cc.enumerateInstanceNames(cop);


        // 列挙されたインスタンスオブジェクトパスを繰り返し処理する。
        // オブジェクトを作成して列挙された各インスタンスのオブジェクトパス
        // を格納し、インスタンスの出力後に削除する
        while (e.hasMoreElements()) {
           CIMObjectPath  op = (CIMObjectPath)e.nextElement();
           System.out.println(op);
           cc.deleteInstance(op);
        } // while 終了 
  } catch (Exception e) {
       // 例外が発生した場合はそれを出力する
       System.out.println("Exception: "+e);
  } // catch 終了

 // セッションを閉じる
 if (cc != null) {
     cc.close();
       }
    }
}