アプリケーションが、 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 プロセスが返されます。
... { //ネームスペース 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 プロパティの値を出力します。このコードセグメントは、次のメソッドを使用します。
getProperty – 各インスタンスの lockspeed の値を取得する
println – lockspeed の値を出力する
... { /* オブジェクト (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 値を設定します。この例では、次のメソッドを使用します。
... { /* オブジェクト (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 クラスの特性を記述するために使用される値です。プロパティは、プロパティ値を設定する機能と、プロパティ値を取得する機能の組み合わせと考えることができます。
... { // オブジェクトパスを作成する (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); } } ...