Sun WBEM 開発ガイド

インスタンスの取得と設定

アプリケーションが、 CIM Object Manager から CIM インスタンスを検出する場合、getInstance メソッドがよく使用されます。

例 - インスタンスの取得

例 6-6 のコードセグメントは、特定のシステム上のすべてのプロセスを表示します。この例では、enumInstances メソッドを使用して CIM_Process クラスのインスタンス名を取得します。このコードを Microsoft Windows 32 システムで実行すると、Windows 32 のプロセスが返されます。このコードを Solaris システムで実行すると、Solaris プロセスが返されます。


例 6-6 クラスインスタンスの取得 (getInstance)

{
//ネームスペース 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 プロパティの値を出力します。このコードセグメントは、次のメソッドを使用します。


例 6-7 プロセッサ情報の出力 (getProperty)

/* 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 クラスの特性を記述するために使用される値です。プロパティは、プロパティ値を設定する機能と、プロパティ値を取得する機能の組み合わせと考えることができます。


例 6-8 インスタンスの設定 (setInstance)

{
/* ベクトル内の各要素のインスタンスを取得し、 
各インスタンスで 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); 
 
}