アプリケーションが、 CIM Object Manager から CIM インスタンスを検出する場合、getInstance メソッドがよく使用されます。
例 6-6 のコードセグメントは、特定のシステム上のすべてのプロセスを表示します。この例では、enumInstances メソッドを使用して CIM_Process クラスのインスタンス名を取得します。このコードを Microsoft Windows 32 システムで実行すると、Windows 32 のプロセスが返されます。このコードを Solaris システムで実行すると、Solaris プロセスが返されます。
{ //ネームスペース cns を作成 CIMnameSpace cns = new CIMNameSpace; //CIM Object Manager 上で cns ネームスペースに接続 cc = new CIMClient(cns); /* CIM_Process クラスの CIM オブジェクトパスを CIM Object Manager に渡す (このクラスのインスタンスを取得する)。 */ CIMObjectPath op = new CIMObjectPath("CIM_Process"); /* CIM Object Manager が、オブジェクトパスのベクトル (CIM_Process クラスのインスタンス名) を返す。 */ Vector v = cc.enumInstances(op, true); /* インスタンスオブジェクトパスが入ったベクトルのサイズ分だけ繰り返す。 各オブジェクト名によって参照されるインスタンスを取得するには、 CIM Client の getInstance インタフェースを使用する。 */ for (int i=0; i < v.size(); i++) { // インスタンスを取得 CIMInstance ci = cc.getInstance(v.elementAt(i)); /* CIM_Process の各インスタンスのプロセス ID 文字列を 取得 */ CIMProperty cp = ci.getProperty("Handle"); } |
例 6-7 は、すべての Solaris プロセスの lockspeed プロパティの値を出力します。このコードセグメントは、次のメソッドを使用します。
getInstance - 各インスタンス名のインスタンスデータを取得する
getProperty - 各インスタンスの lockspeed の値を取得する
println - lockspeed の値を出力する
/* myhost の /root ネームスペースで、パスワード contrary を 持つユーザー mary として CIM Object Manager に接続 */ { CIMNameSpace cns = new CIMNamesSpace ("myhost" "/root"); cc = new CIMClient (cns, "/root", "mary", "contrary"); // Solaris_Processor のすべてのインスタンスの名前を取得 Vector op cc.enumInstances("Solaris_Processor") // 各 Solaris プロセッサごとに、そのインスタンスデータを取得 while (vector has more elements) { cn.getNextElement(); cc.getInstance (cn); // 各プロセッサの lockspeed を出力 p = ci.getProperty("lockspeed") System.out.println(p.getValue().getValue()); } |
例 6-8 のコードセグメントは、CIM インスタンスを取得してそのプロパティ値の 1 つを変更し、変更後のインスタンスを CIM Object Manager に渡します。
CIM プロパティは、CIM クラスの特性を記述するために使用される値です。プロパティは、プロパティ値を設定する機能と、プロパティ値を取得する機能の組み合わせと考えることができます。
{ /* ベクトル内の各要素のインスタンスを取得し、 各インスタンスで b のプロパティ値を 10 に変更し、 変更後のインスタンスを CIM Object Manager に渡す。 */ For (int i=0; i(v.size(); i++) { CIMInstance ci = cc.getInstance(v.elementAt(i)); ci.setProperty("b",new CIMValue(10)); cc.setInstance(new CIMObjectPath(),ci); } |