ここでは、MOF (Managed Object Format) コンパイラの概要および mofcomp コマンドで -j オプションを指定して JavaBeans を作成する方法について説明します。内容は次のとおりです。
MOF コンパイラの詳細については、mofcomp(1M) のマニュアルページを参照してください。
MOF は、DMTF によって開発されたコンパイル言語です。MOF は、CIM および WBEM の静的および動的クラスとインスタンスを定義します。Solaris WBEM Services に含まれる CIM および Solaris MOF を使用でき、独自の MOF を作成することもできます。DMTF の MOF 言語を使用して独自の MOF を作成する方法の詳細については、DMTF Web サイト (http://www.dmtf.org) を参照してください。
MOF コンパイラ mofcomp(1M) は、MOF ファイルを構文解析し、クラスおよびインスタンスを Java クラスに変換します。そのあと、クラスをデフォルトの root\cimv2 または他の指定された名前空間に追加します。MOF ファイルは簡単に Java に変換できるので、Java ベースのアプリケーションでは、Java 仮想マシン (JVM) を実行するコンピュータ上の MOF ファイルに含まれるデータを解釈および交換することができます。
Solaris のインストール時に MOF コンパイラにより、CIM スキーマおよび Solaris スキーマを記述する MOF ファイルが自動的にコンパイルされ、それらのファイルが CIM Object Manager Repository に追加されます。
WBEM、JavaBeansTM または Bean のコンテキストで CIM クラスおよびデータ要素にアクセスし、操作するためのメソッドおよびインスタンスを定義します。mofcomp コマンドで -j オプションを指定すると、MOF ファイルで定義された CIM クラスを表す JavaBeans が自動的に生成されるので、開発作業を簡略化できます。これらの自動生成された JavaBeans によってインタフェースが定義されます。実装コードを追加するかどうかは、開発者によって異なります。
プログラムが、基盤となる JavaBeans 実装に対して行った変更の影響を受けないようにするため、元の JavaBeans の代わりにインタフェースを使用します。
mofcomp コマンドに -j オプションを指定すると、CIMBean.java というベース Java インタフェースと CIMBeanImpl.java というインタフェースを実装するベース Bean が生成されます。CIMBeanImpl.java には、生成された Bean に共通するすべてのコードが含まれます。生成されたすべての Java インタフェースは CIMBean.java から継承され、生成されたすべての Bean は CIMBeanImpl.java から継承されるため、結果的にベース実装から継承されることになります。
MOF ファイルに定義されている各 CIM クラス用に MOF コンパイラの JavaBeans 生成機能は、次の要素で構成される Java インタフェースを生成します。
MOF ファイルで定義されているプロパティのアクセスおよび変更用メソッド
MOF ファイルで定義されている invokeMethods と同等のメソッド
CIM クラスの OUT 修飾子パラメータを含む invokeMethod 用に、メソッドの呼び出し生成出力を保持するコンテナインタフェースが生成されます。これらのインタフェースには、CIMClass_ MethodNameOutput.java という名前が付けられます。この CIMClass_MethodNameOutput.java コンテナインタフェースのインスタンスは、Bean メソッドの最後のパラメータとして必要です。Bean メソッドでパラメータとして使用される 1 つまたは複数の Object データ型は可変データ型ではないため、このコンテナインタフェースが必要になります。そのため、入力および出力データの両方を保持するためには使用できません。
-j オプションを利用するには、MOF ファイルに PACKAGE 要素を含める必要があります。次の形式で IMPORTS および EXCEPTIONS 要素を指定できます。
PACKAGE=NameOfJavaPackage IMPORTS=JavaClassName1:JavaClassName2:... EXCEPTIONS=Exception1:Exception2:...
次の表では、これらの要素について説明します。
表 2-1 MOF ファイル要素
要素 |
説明 |
---|---|
PACKAGE |
必須。MOF コンパイラによって生成されたソースファイルを含む Java パッケージ名を指定する |
IMPORTS |
任意。生成されたソースファイルにインポートする Java クラス名をコロン (:) で区切って指定する。必要な数の Java クラスを必要なだけの行にわたって指定できる |
EXCEPTIONS |
任意。生成されたソースファイルに含める Java 例外名をコロン (:) で区切って指定する。必要な数の Java クラス例外を必要なだけの行にわたって指定できる 注 - EXCEPTIONS を指定する場合、IMPORTS を指定する必要がある |
次の表では、CIM 要素を Java 要素にマップする方法を説明します。
表 2-2 CIM 要素を Java 要素にマップする方法
CIM 要素 |
Java 要素 |
---|---|
クラス |
生成された Java ソースファイル名のベースとして、CIM クラス名が使用される。生成された Java クラスは、MOF のクラスとサブクラスの関係に定義された継承に従う |
プロパティ |
各 CIM プロパティにアクセス用メソッドおよび変更メソッドが作成される。関連するアクセス用メソッドおよび変更メソッドのベースとして、CIM プロパティ名が使用される |
メソッド |
各 CIM メソッドに対応する Java メソッドが作成される。関連した Java メソッド名のベースとして CIM メソッド名が使用される。戻り値は同様の Java データ型にマップされる。入力および出力パラメータが Java メソッドの引数として使用される。出力パラメータは、直接メソッドシグニチャに含まれないが、出力コンテナオブジェクトにカプセル化されて、メソッドパラメータとして含められる |
修飾子 | |
関連 |
特定の要素は要求されていない |
インジケーション |
特定の要素は要求されていない |
参照方法 |
それぞれの CIM 参照に対して、生成された Java インタフェースへの参照が作成される |
トリガー |
特定の要素は要求されていない |
スキーマ |
特定の要素は要求されていない |
次の表では、CIM データ型を Java データ型にマップする方法を説明します。
表 2-3 CIM データ型を Java データ型にマップする方法
CIM データ型 |
Java データ型 |
アクセス用メソッド |
変更メソッド |
---|---|---|---|
uint8 X |
UnsignedInt8 |
UnsignedInt8 getX(); |
void setX(UnsignedInt8 x); |
sint8 X |
Byte |
Byte getX(); |
void setX(Byte x); |
uint16 X |
UnsignedInt16 |
UnsignedInt16 getX(); |
void setX(UnsignedInt16 x); |
sint16 X |
Short |
Short getX(); |
void setX(Short x); |
uint32 X |
UnsignedInt32 |
UnsignedInt32 getX(); |
void setX(UnsignedInt32 x); |
sint32 X |
Integer |
Integer getX(); |
void setX(Integer x); |
uint64 X |
UnsignedInt64 |
UnsignedInt64 getX(); |
void setX(UnsignedInt64 x); |
sint64 X |
Long |
Long getX(); |
void setX(Long x); |
String X |
String |
String getX(); |
void setX(String x); |
Boolean X |
Boolean |
Boolean isX(); |
void setX(Boolean x); |
real32 X |
Float |
Float getX(); |
void setX(Float x); |
real64 X |
Double |
Double getX(); |
void setX(Double x); |
DateTime X |
CIMDateTime |
CIMDateTime getX(); |
void setX(CIMDateTime x); |
Reference X |
CIMObjectPath |
CIMObjectPath getX(); |
void setX(CIMObjectPath x); |
char16 X |
Character |
Character getX(); |
void setX(Character x); |
次の表にモデルのメタ構造体の定義を改良するメタ修飾子のリストを示します。これらの修飾子は、互いに排他的で、MOF 構文のオブジェクトクラスまたはプロパティ宣言の実際の使用方法を改良します。
表 2-4 メタ修飾子
修飾子 |
スコープ |
型 |
意味 |
---|---|---|---|
関連 |
クラス |
Boolean |
マップに影響しない |
インジケーション |
クラス |
Boolean |
クラスは abstract (抽象) クラス |
次の表では、標準修飾子と CIM オブジェクトを Bean にマップする際に与える影響について説明します。オプションの修飾子はサポートされていません。Javadoc は、このマップに基づく各インタフェースおよびクラスで作成されます。
表 2-5 標準修飾子
修飾子 |
スコープ |
意味 |
---|---|---|
ABSTRACT |
クラス、関連、インジケーション |
クラスは abstract クラスなので、Java インタフェースに影響を与えない |
DESCRIPTION |
任意 |
提供される情報によって、ソースファイルに Javadoc コメントが生成される |
DISPLAYNAME |
プロパティ |
表示名のアクセス用メソッドが作成される public String displayNameFor Property(); |
IN |
パラメータ |
メソッドシグニチャーを決定する |
OUT |
パラメータ |
メソッドパラメータシグニチャーおよび戻り値を決定する |
TERMINAL |
クラス |
クラスまたはインタフェースは、final |
UNITS |
プロパティ、メソッド、パラメータ |
ほかのアクセス用メソッドが作成される。 public String get propertyUnits(); |
VALUMAP |
プロパティ、メソッド、パラメータ |
Bean には、CIM ValueMap または Values 修飾子が設定されている CIM クラスの各プロパティに生成された定数が含まれる。これらのクラス変数を生成するために、定数名および定数値を取得する方法は、プロパティのデータ型およびプロパティがどの修飾子を処理するかによって異なる 注 - CIM 仕様で定義されている ValueMap および Values 修飾子は、修飾子名から予想される意味とは異なる場合がある。ValueMap ではプロパティの正当な値セットを定義し、Values では整数値と文字列を変換する。 |
VALUES |
プロパティ、メソッド、パラメータ |
Bean には、CIM ValueMap または Values 修飾子が設定されている CIM クラスの各プロパティの生成された定数が含まれる。これらのクラス変数を生成するために、定数名および定数値を取得する方法は、プロパティのデータ型およびプロパティがどの修飾子を処理するかによって異なる 注 - CIM 仕様で定義されている ValueMap および Values 修飾子は、修飾子名から予想される意味とは異なる場合がある。ValueMap ではプロパティの正当な値セットを定義し、Values では整数値と文字列を変換する |
VERSION |
クラス、スキーマ、関連、インジケーション |
クラスには、getClassVersion() メソッドが設定されている |
次の表では、MOF 要素を Java 要素にマップする方法を説明します。
表 2-6 MOF 要素を Java 要素にマップする方法
MOF 要素 |
Java 要素 |
---|---|
説明修飾子 |
クラス、プロパティ、またはメソッドの説明 |
クラスの完全な MOF 表現 |
Java インタフェースと実装される Bean を指定するクラス Javadoc の説明 |
ここでは、mofcomp コマンドに -j オプションを指定した場合に生成される JavaBeans の例を示します。
mofcomp コマンドは、スーパーユーザーとして実行するか、コンパイルを実行中の名前空間に書き込み権を持つユーザーとして実行する必要があります。
コマンド行に直接パスワードを入力する必要があるので、mofcomp コマンドの実行時には、-u (ユーザー) と -p (パスワード) オプションを同時に指定しないようにしてください。代わりに、暗号化されたパスワードを入力するプロンプトが表示されるように -u オプションだけを指定します。
/usr/sadm/bin/mofcomp -u root -p mypassword -o /tmp -j /tmp/bean.txt /usr/sadm/mof/Simple.mof |
/usr/sadm/mof/Simple.mof の内容は、次のとおりです。
/usr/sadm/mof/Simple.mof ------------------- #pragma include ("CIM_Core26.mof") class Simple_Class { [Key, Description ("Name of the class.") ] string Name; [Description ("Method to print the contents of the class.") ] string printClass(); }; |
/tmp/bean.txt の内容は、次のとおりです。
/tmp/bean.txt ---------- PACKAGE=foo.com IMPORTS=java.lang.Exception EXCEPTIONS=Exception |
CIMBean.java の内容は、次のとおりです。
package foo.com; import javax.wbem.cim.CIMException; import javax.wbem.client.CIMOMHandle; import javax.wbem.cim.CIMInstance; /** * このインタフェースは、CIMBeanImpl とそのサブクラスによって * 実装されるメソッドを定義する。CIMBeanImpl は、'mofcomp -j' * によって生成される Java ソースの基底クラスで構成される */ public interface CIMBean { /** * このメソッドは、CIMBean の CIMOMHandle を返す * * @return CIMOMHandle CIMOM のハンドル */ public CIMOMHandle getCIMOMHandle(); /** * このメソッドは、CIMBean の CIMOMHandle を指定値に設定する * * @param CIMOMHandle CIMOM のハンドル */ public void setCIMOMHandle(CIMOMHandle handle); /** * このメソッドは、CIMBean の CIMInstance を返す * * @return CIMInstance 管理されている CIMInstance のハンドル */ public CIMInstance getCIMInstance(); /** * このメソッドは、CIMBean の CIMInstance を指定値に設定する * * @param CIMInstance 管理されている CIMInstance のハンドル */ public void setCIMInstance(CIMInstance instance); /** * このメソッドは、リモート呼び出しを実行して * CIMOM の CIMInstance を更新する */ public void update() throws CIMException; /** * このメソッドは、リモート呼び出しを実行して * CIMOM の CIMInstance の指定された CIMProperty を更新する * * @param String CIMInstance では、このプロパティ名が更新される * @param Object CIMProperty では、このプロパティ値が更新される */ public void update(String propName, Object value) throws CIMException; /** * このメソッドは、リモート呼び出しを実行して * CIMOM の CIMInstance を削除する */ public void delete() throws CIMException; /** * このメソッドは、CIMInstance のキー修飾プロパティ * 名の文字列型の配列を返す。これは、CIMInstance に * 修飾子情報が含まれない場合に CIMInstance の * CIMObjectPath を作成するために必要 * * @return String Version 修飾子の値または "-1" (値が * 指定されていない場合) */ public String[] getBeanKeys(); /** * このメソッドは、CIM クラスの Version 修飾子の値または * "-1"(この修飾子に値が設定されていない場合) を返す * * @return String キー修飾プロパティ名 */ public String getBeanVersion(); /** * このメソッドは、CIMBean の文字列表現を返す。 * このメソッドは、デバッグ用。文字列の * 形式は、実装ごとに異なる場合がある。空白文字列が * 返されても、NULL 文字ではない場合がある * * @return String Bean の文字列表現 */ public String toString(); } // CIMBean インタフェース
CIMBeanImpl.java の内容は、次のとおりです。
package foo.com; import java.io.Serializable; import java.util.*; import javax.wbem.client.CIMOMHandle; import javax.wbem.cim.CIMException; import javax.wbem.cim.CIMInstance; import javax.wbem.cim.CIMObjectPath; import javax.wbem.cim.CIMValue; import javax.wbem.client.CIMOMHandle; /** * このクラスは、CIMBean インタフェースを実装する。このクラスは、 * mofcomp -j によって生成された Java ソースコードの基底クラス */ public class CIMBeanImpl implements CIMBean, Serializable { private CIMInstance cimInstance = null; private CIMOMHandle cimomHandle = null; /** * このデフォルトコンストラクタにはパラメータがなく、 * CIMBeanImpl の空のインスタンスを作成する */ public CIMBeanImpl() { super(); } // コンストラクタ /** * このコンストラクタには、指定された CIMOMHandle および * CIMInstance を設定する。 * またこのコンストラクタは CIMBeanImpl を作成する * * @param CIMOMHandle CIMOM へのハンドル * @param CIMInstance 管理されている CIMInstance へのハンドル */ public CIMBeanImpl(CIMOMHandle handle, CIMInstance instance) { super(); cimomHandle = handle; cimInstance = instance; } // constructor /** * このメソッドは、CIMBean の CIMOMHandle を返す * * @return CIMOMHandle CIMOM へのハンドル */ public CIMOMHandle getCIMOMHandle() { return (cimomHandle); } // getCIMOMHandle /** * このメソッドは、CIMBean の CIMOMHandle を指定値に設定する * * @param CIMOMHandle CIMOM へのハンドル */ public void setCIMOMHandle(CIMOMHandle handle) { this.cimomHandle = handle; } // setCIMOMHandle /** * このメソッドは、CIMBean の CIMInstance を返す * * @return CIMInstance 管理されているCIMInstance へのハンドル */ public CIMInstance getCIMInstance() { return (cimInstance); } // getCIMInstance /** * このメソッドは、CIMBean の CIMInstance を * 指定値に設定する * * @param CIMInstance 管理されている CIMInstance へのハンドル */ public void setCIMInstance(CIMInstance instance) { this.cimInstance = instance; } // setCIMInstance /** * このメソッドは、リモート呼び出しを実行して * CIMOM の CIMInstance を更新する */ public void update() throws CIMException { cimomHandle.setInstance(getObjectPath(), cimInstance); } // update /** * このメソッドは、リモート呼び出しを実行してCIMOM の * CIMInstance の指定した CIMProperty を更新する * * @param String CIMInstance でこのプロパティ名を更新する * @param Object CIMProperty でこのプロパティ値を更新する */ public void update(String propName, Object value) throws CIMException { cimomHandle.setProperty(getObjectPath(), propName, new CIMValue(value)); } // update /** * このメソッドは、リモート呼び出しを実行し、 * CIMOM の CIMInstance を削除する */ public void delete() throws CIMException { cimomHandle.deleteInstance(getObjectPath()); } // delete /** * サブクラスは、この簡易メソッドを使用して指定された CIMProperty の * CIMValue に含まれるオブジェクトを取得する * 注: 返されるオブジェクトは NULL 文字の場合がある * * @param String このプロパティ名の値を取得する必要がある * @return Object CIMProperty の CIMValue に含まれるオブジェクト */ protected Object getProperty(String propName) { try { return (cimInstance.getProperty(propName).getValue().getValue()); } catch (NullPointerException npe) { } return ((Object)null); } // getProperty /** * サブクラスはこの簡易メソッドを使用して指定された * CIMProperty の CIMValue に含まれる Vector に等しい * String[] を取得する * 注: 返される String[] は NULL である場合がある * * @param String このプロパティ名の値を取得する * @param String[] プロパティ Values 修飾子データ * @param Object[] プロパティ ValueMap 修飾子データ * @return String[] プロパティ値の定数のコンテナ */ protected String[] getArrayProperty(String propName, String[] valueArr, Object[] valueMapArr) { List propList = null; try { propList = ((List)cimInstance.getProperty(propName).getValue().getValue()); } catch (NullPointerException npe) { } if (propList != null) { String[] returnArr; returnArr = new String[propList.size()]; ListIterator listIterator = propList.listIterator(); int counter = 0; while (listIterator.hasNext()) { returnArr[counter] = valueArr[getArrayIndex(valueMapArr, listIterator.next())]; counter++; } return (returnArr); } return ((String[])null); } // getArrayProperty /** * このメソッドは、プロパティ値 (指定されたオブジェクトパスなど) が * 参照する CIMInstance を取得し、それを指定した Bean に設定する。 * このメソッドは、Association プロパティのアクセス用メソッド * により使用される * * @param CIMObjectPath CIMInstance のオブジェクトパス * @param CIMBeanImpl 取得した CIMInstance の Bean コンテナ */ protected void getAssociationProperty(CIMObjectPath cop, CIMBeanImp bean) throws CIMException { cop.setNameSpace(""); CIMInstance ci = cimomHandle.getInstance(cop, false, true, true, (String[])null); bean.setCIMInstance(ci); bean.setCIMOMHandle(cimomHandle); } // getAssociationProperty /** * サブクラスは、この簡易メソッドを使用して名前が * 指定された CIMProperty の指定された Object 値を含む * CIMValue を設定する * * @param String このプロパティ名に新しい値を設定する * @param Object CIMInstance で更新するプロパティ値 */ protected void setProperty(String propName, Object propValue)throws IllegalArgumentException { cimInstance.setProperty(propName, new CIMValue(propValue)); } // setProperty /** * サブクラスは、この簡易メソッドを使用して、名前が * 指定された CIMProperty の指定された String[] に等しい * Vector を含む CIMValue を設定する * * @param String このプロパティ名の値を取得する * @param String[] プロパティ Values の修飾子データ * @param Object[] プロパティ ValueMap の修飾子データ * @param String[] CIMInstance に設定するプロパティ値 */ protected void setArrayProperty(String propName, String[] valueArr, Object[] valueMapArr, String[] propValues) { Vector vPropValue = new Vector(propValues.length); for (int i = 0; i < propValues.length; i++) { vPropValue.addElement(valueMapArr[getArrayIndex(valueArr, propValues[i])]); } setProperty(propName, vPropValue); } // setArrayProperty /** * このメソッドは、CIMInstance の Key 修飾プロパティ * 名の文字列配列を返す。これは、修飾子情報が含ま * れない場合、CIMInstance の CIMObjectPath を構築する * ために必要 * * @return String[] Key 修飾プロパティ名の配列 */ public String[] getBeanKeys() { return ((String[])null); } // getBeanKeys /** * このメソッドは、クラスの CIMInstance の CIMObjectPath を返す。 * * @return CIMObjectPath CIMInstance のオブジェクトパス */ protected CIMObjectPath getObjectPath() { CIMObjectPath cop = new CIMObjectPath(cimInstance.getClassName()); Vector vKeys = cimInstance.getKeyValuePairs(); if ((vKeys != null) && (vKeys.size()> 0)) { cop.setKeys(vKeys); } else { String[] keyArr = getBeanKeys(); if (keyArr != null) { String keyProperty; for (int i = 0; i < keyArr.length; i++) { keyProperty = keyArr[i]; cop.addKey(keyProperty, (cimInstance.getProperty(keyProperty)).getValue()); } } } return (cop); } // getObjectPath /** * この簡易メソッドは、指定した配列に指定したオブジェクトの * インデックスを返す。 * 配列にオブジェクトが含まれない場合は、-1 を返す * * @param Object[] オブジェクトのインデックスを検索する * オブジェクト配列 * @param Object オブジェクト配列でこのオブジェクトのインデックスを * 検索する * @return int オブジェクト配列のオブジェクトのインデックス */ protected int getArrayIndex(Object[] objArr, Object obj) { List arrList = Arrays.asList(objArr); return (arrList.indexOf(obj)); } // getArrayIndex /** * このメソッドは、CIM クラスの Version 修飾子値を返す。 * この修飾子が指定されていない場合は、"-1" を返す * * @return String Version 修飾子の値。 * 修飾子が指定されていない場合は、-1。 */ public String getBeanVersion() { return ("-1"); } // getBeanVersion /** * このメソッドは、CIMBean の文字列表現を返す。 * このメソッドはデバッグ用。文字列の形式は、実装ごと * に異なる場合がある。 * 返される文字列が空でも NULL 文字でない場合がある * * @return String Bean の文字列表現 */ public String toString() { return (cimInstance.toString()); } // toString } // CIMBeanImpl クラス
Simple_ClassBean.java の内容は次のとおりです。
package foo.com; import javax.wbem.client.*; import javax.wbem.cim.*; import java.util.*; import java.lang.Exception; /** * このインタフェースには、CIM class Simple_Class で定義された * すべてのプロパティのアクセス用メソッドおよび変更メソッドが含まれる。 * またこのクラスに定義された invokeMethods と等価のメソッドも含まれる。 * このインタフェースは、Simple_ClassBeanImpl によって実装される。 * CIM class Simple_Class は、次のように記述される */ public interface Simple_ClassBean extends CIMBean { /** * このメソッドは、Simple_Class.Name プロパティ値を返す。 * このプロパティは、次のように記述される * * クラス名 * * @return String 現在の Name プロパティ値 * @exception Exception */ public String getName() throws Exception; /** * このメソッドは、Simple_Class.Name プロパティ値を設定する。 * このプロパティは、次のように記述する * * クラス名 * * @param String 新しい Name プロパティ値 * @exception Exception */ public void setName(String name) throws Exception; /** * このメソッドは、Simple_Class.printClass() メソッドを呼び出す。 * このメソッドは、次のように記述する * * クラスのコンテンツを出力するメソッド * * @return String printClass() 呼び出しの戻り値 * @exception Exception */ public String printClass() throws Exception, CIMException; } // Simple_ClassBean インタフェース
Simple_ClassBeanImpl.java の内容は、次のとおりです。
package foo.com; import javax.wbem.client.*; import javax.wbem.cim.*; import java.util.*; import java.lang.Exception; /** * このインタフェースには、CIM class Simple_Class で定義された * すべてのプロパティのアクセス用メソッドおよび変更メソッドが含まれる。 * またこのクラスに定義された invokeMethods と等価のメソッドも含まれる。 * このクラスは、Simple_ClassBeanImpl インタフェースを実装する。 * CIM class Simple_Class は、次のように記述される */ public class Simple_ClassBeanImpl extends CIMBeanImpl implements Simple_ClassBean { private CIMOMHandle cimomHandle = null; private CIMInstance cimInstance = null; private final static String[] keysArr = {"Name"}; /** * このコンストラクタは、Simple_ClassBean インタフェースを * 実装する Simple_ClassBeanImpl Class を作成し、 * Java Bean に CIM class Simple_Class をカプセル化する。 * CIM class Simple_Class は次のように記述される * * @param CIMOMHandle CIMOM のハンドル * @param CIMInstance 管理されている CIMInstance のハンドル */ public Simple_ClassBeanImpl(CIMOMHandle handle, CIMInstance instance) { super(handle, instance); this.cimomHandle = handle; this.cimInstance = instance; } // コンストラクタ /** * このメソッドは、CIM クラスに定義された Key * 修飾プロパティの名前で文字列の配列を返す。 * Key 修飾子が CIMInstance に含まれない場合、この * メソッドを使用して Bean によって管理される * CIMInstance の CIMObjectPath を構築する * * @return String[] Key 修飾プロパティ名の配列 */ public String[] getBeanKeys() { return keysArr; } // getBeanKeys /** * このメソッドは、Simple_Class.Name プロパティ値を返す。 * このプロパティは次のように記述される * * クラス名 * * @return String 現在の Name プロパティ値 * @exception Exception */ public String getName() throws Exception { return (String)getProperty("Name"); } // getName /** * このメソッドは、Simple_Class.Name プロパティ値を設定する。 * このプロパティは、次のように記述される * * クラス名 * * @param String 新しい Name プロパティ値 * @exception Exception */ public void setName(String name) throws Exception { setProperty("Name", name); } // setName /** * このメソッドは、Simple_Class.printClass() メソッドを呼び出す。 * このメソッドは、次のように記述される * * クラスのコンテンツを出力するメソッド * * @return String printClass() 呼び出しの戻り値 * @exception Exception */ public String printClass() throws Exception, CIMException { Vector vInParams = new Vector(); Vector vOutParams = new Vector(); CIMValue cv = cimomHandle.invokeMethod(cimInstance.getObjectPath(), "printClass", vInParams, vOutParams); return (String)cv.getValue(); } // printClass } // Simple_ClassBeanImpl クラス