Sun WBEM SDK 開発ガイド

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

アプリケーションが、 CIM Object Manager から CIM インスタンスを取得する場合、getInstance メソッドがよく使用されます。クラスのインスタンスが作成されるときに、インスタンスはその派生元クラスとそのクラス階層にあるすべての親クラスのプロパティを継承します。getInstance メソッドはブール値引数 localOnly を受け取り、localOnly が真である場合、指定されたインスタンスによって継承されたプロパティ以外のプロパティだけを返します。これらのプロパティは、そのインスタンス自体によって定義されたものです。localOnly が偽の場合は、そのクラスのすべてのプロパティが返されます (つまり、インスタンス自体によって定義されたプロパティと、クラス階層にあるすべての親クラスから継承されたすべてのプロパティ)。

新しいインスタンスを作成する場合は、CIMClass クラスの CIMInstance メソッドを使ってインスタンスをローカルシステム上に作成します。そして、CIMClient.setInstance メソッドを使ってネームスペース内の既存のインスタンスを更新するか、CIMClient.createInstance メソッドを使って新しいインスタンスをネームスペースに追加します。

例 — インスタンスの取得

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


例 4–8 クラスインスタンスの取得 (getInstance)

...
{
//ネームスペース cns を作成
CIMnameSpace cns = new CIMNameSpace(); 
 
//CIM Object Manager 上で cns ネームスペースに接続
cc = new CIMClient(cns, "root", "root_password"); 
 
/* CIM_Process クラスの CIM オブジェクトパスを
CIM Object Manager に渡す (このクラスのインスタンスを取得する)。 */ 
 
CIMObjectPath cop = new CIMObjectPath("CIM_Process"); 
 
/* CIM Object Manager が、オブジェクトパスの列挙 
(CIM_Process クラスのインスタンス名) を返す。 */
Enumeration e = cc.enumerateInstanceNames(cop); 
 
/* インスタンスオブジェクトパスを含む列挙のサイズ分だけ繰り返す。
各オブジェクト名によって参照されるインスタンスを取得するには、 
CIM Client の getInstance クラスを使用する。 */

while(e.hasMoreElements()) {
    CIMObjectPath op = (CIMObjectPath)e.nextElement();
    // インスタンスを取得する。インスタンスに対してローカルである
		// プロパティだけを返す (localOnly が真) 
		CIMInstance ci = cc.getInstance(op, true);
		}
...


例 — プロパティの取得

例 4–9 は、すべての Solaris プロセスの lockspeed プロパティの値を出力します。このコードセグメントは、次のメソッドを使用します。


例 4–9 プロセッサ情報の出力 (getProperty)

...
{
/* オブジェクト (CIMObjectPath) を作成し、Solaris_Processor 
クラスの名前を格納する */ 
 
CIMObjectPath cop = new CIMObjectPath("Solaris_Processor"); 
 
/* Solaris_Processor クラスとそのすべてのサブクラス (cc.DEEP) の
インスタンスの名前が含まれている列挙を CIM Object Manager が返す */
 
Enumeration e = cc.enumInstances(cop, cc.DEEP); 
 
/* インスタンスオブジェクトパスの列挙のサイズ分だけ繰り返す。
getProperty メソッドを使って、各 Solaris プロセッサの
lockspeed 値を取得する */
 
while(e.hasMoreElements()) {
			CIMValue cv = cc.getProperty(e.nextElement(), "lockspeed");
    	System.out.println(cv);
}
...
}
 


例 — プロパティの設定

例 4–10のコードセグメントでは、すべての Solaris プロセッサの仮定の lockspeed 値を設定します。この例では、次のメソッドを使用します。


例 4–10 プロセッサ情報の設定 (setProperty)

...
{
    /* オブジェクト (CIMObjectPath) を作成し、Solaris_Processor
    クラスの名前を格納する*/ 
 
    CIMObjectPath cop = new CIMObjectPath("Solaris_Processor"); 
 
    /* Solaris_Processor クラスとそのすべてのサブクラスの
    インスタンスの名前が含まれている列挙を CIM Object Manager が返す */
 
    Enumeration e = cc.enumerateInstanceNames(cop); 
 
    /* インスタンスオブジェクトパスの列挙のサイズ分だけ繰り返す。
    その中で setProperty メソッドを使って、各 Solaris プロセッサの
    lockspeed 値に 500 を設定する。 */
 
    for (; e.hasMoreElements(); cc.setProperty(e.nextElement(), "lockspeed", 
        new CIMValue(new Integer(500))));
 
...
}
 


例 — インスタンスの設定

例 4–11 のコードセグメントは、CIM インスタンスを取得してそのプロパティ値の 1 つを変更し、変更後のインスタンスを CIM Object Manager に渡します。

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


例 4–11 インスタンスの設定 (setInstance)

...
{
    // オブジェクトパスを作成する (CIM 名「myclass」を持つ
    // オブジェクト)
    CIMObjectPath cop = new CIMObjectPath("myclass"); 
    /* 列挙内の各インスタンスオブジェクトパスのインスタンスを取得し、
    各インスタンスのプロパティ値 b に 10 を設定し、
    更新済みインスタンスを CIM Object Manager に渡す。 */
    
    while(e.hasMoreElements()) {
		    CIMInstance ci = cc.getInstance(CIMObjectPath)(e.nextElement(), 
                true, true, true, null);
        ci.setProperty("b", new CIMValue(new Integer(10)));
				cc.setInstance(new CIMObjectPath(),ci);
		}
}
...