この章では、MOF (Managed Object Format) コンパイラの概要を説明します。また、mofcomp コマンドで -j オプションを使用して JavaBeans 構成要素を作成する方法についても説明します。この章の内容は次のとおりです。
MOF コンパイラの詳細については、mofcomp(1M) のマニュアルページを参照してください。
MOF (Managed Object Format) は、Distributed Management Task Force (DMTF) によって開発されたコンパイラ言語です。MOF 言語は、CIM と WBEM の静的クラス、動的クラス、およびインスタンスを定義します。Solaris WBEM サービス付属の CIM および Solaris MOF ファイルを使用できます。また、独自の MOF ファイルを作成することもできます。DMTF の MOF 言語を使用して独自の MOF ファイルを作成する方法の詳細については、DMTF の Web サイト (http://www.dmtf.org) を参照してください。
MOF コンパイラ (mofcomp(1M)) は、次のタスクを実行します。
MOF ファイルの構文解析
クラスおよびインスタンスの Java プログラミング言語への変換
デフォルトの名前空間 (root\cimv2) または指定された名前空間内の CIM オブジェクトマネージャリポジトリへのクラスの追加
MOF ファイルは、簡単に Java プログラミング言語に変換できます。その結果、Java テクノロジベースのアプリケーションは、Java 仮想マシンを実行する任意のマシン上で MOF ファイル内のデータを解釈したり、交換したりできます。
Solaris OS のインストール時に、MOF コンパイラは、CIM スキーマおよび Solaris プラットフォームスキーマを記述する MOF ファイルをコンパイルし、これらのファイルを CIM オブジェクトマネージャリポジトリに追加します。
JavaBeans 構成要素 (Bean) は、WBEM のコンテキストで、CIM クラスおよびデータにアクセスしたり、これらを操作したりするためのメソッドを定義します。開発作業の効率化のため、mofcomp コマンドに -j オプションを指定して、MOF ファイル内の CIM クラスから Bean を生成できます。これらの自動生成された Bean はインタフェースを定義します。実装コードは追加する必要があります。
プログラムが、基盤となる JavaBeans 実装に対して行なった変更の影響を受けないようにするため、元の JavaBeans 構成要素の代わりにインタフェースを使用します。
mofcomp コマンドに -j オプションを指定した場合、Java インタフェース CIMBean.java と、このインタフェースを実装する Bean、CIMBeanImpl.java が生成されます。CIMBeanImpl.java には、生成された Bean に共通するすべてのコードが含まれます。生成されるすべての Java インタフェースは、CIMBean.java から拡張されます。生成されるすべての Bean は、CIMBeanImpl.java から拡張され、元となる実装を継承します。
MOF コンパイラの JavaBeans 生成機能では、MOF ファイルに定義された各 CIM クラスに対して、次のメソッドを含む Java プログラミング言語インタフェースを生成します。
MOF ファイルで定義されているプロパティのアクセスおよび変更用メソッド
MOF ファイルで定義されている invokeMethods と同等のメソッド
Java インタフェースには、CIMClassBean.java という名前が付けられます。これらの Java インタフェースを実装した Bean クラス名は、CIMClassBeanImpl.java です。また CIM DisplayName、Units、および Version 修飾子を含むプロパティのアクセス用メソッドも生成されます。
CIM クラスの OUT 修飾子パラメータを含む invokeMethod 用に、メソッドの呼び出し生成出力を保持するコンテナインタフェースが生成されます。これらのインタフェースには、CIMClass_MethodNameOutput.java という名前が付けられます。この CIMClass_MethodNameOutput.java コンテナインタフェースのインスタンスは、Bean メソッドの最後のパラメータとして必要です。オブジェクトデータ型や Bean メソッドのパラメータのデータ型は変更できないのでこのコンテナインタフェースは必須です。よってこれらのデータ型は、データの入出力には使用できません。
-j オプションを利用するには、MOF ファイルに PACKAGE 要素を含める必要があります。また次の形式で IMPORTS および EXCEPTIONS 要素も指定できます。
PACKAGE=NameOfJavaPackage IMPORTS=JavaClassName1:JavaClassName2:... EXCEPTIONS=Exception1:Exception2:...
次の表では、これらの要素について説明します。
表 7–1 MOF ファイル要素
要素 |
説明 |
---|---|
PACKAGE |
必須。MOF コンパイラによって生成されたソースファイルを含む Java パッケージ名を指定する |
IMPORTS |
任意。生成されたソースファイルにインポートする Java クラスの名前を指定する。複数のクラスを指定する場合はコロン (:) で区切る。必要な数の Java クラスを複数行にわたって指定できる |
EXCEPTIONS |
任意。生成されたソースファイルに追加する Java 例外の名前を指定する。複数の例外を指定する場合はコロン (:) で区切る。必要な数の Java クラス例外を複数行にわたって指定できる 注 – EXCEPTIONS を指定する場合、IMPORTS を指定する必要がある |
次の表に、CIM 要素を Java プログラミング言語の要素にマップする方法を示します。
表 7–2 CIM 要素を Java 要素にマップする方法
CIM 要素 |
Java 要素 |
---|---|
クラス |
生成された Java ソースファイル名のベースとして、CIM クラス名が使用される。生成された Java クラスは、MOF のクラスとサブクラスの関係に定義された継承に従う |
プロパティ |
各 CIM プロパティにアクセス用メソッドおよび変更メソッドが作成される。関連するアクセス用メソッドおよび変更メソッドのベースとして、CIM プロパティ名が使用される |
ソート方法 |
各 CIM メソッドに対応する Java メソッドが作成される。関連した Java メソッド名のベースとして CIM メソッド名が使用される。戻り値は同様の Java データ型にマップされる。入力および出力パラメータが Java メソッドの引数として使用される。出力パラメータはメソッドシグニチャーに直接追加されずに、メソッドパラメータとして追加される出力コンテナオブジェクトにカプセル化される |
修飾子 | |
関連 |
特定の要素は要求されていない |
インジケーション |
特定の要素は要求されていない |
参照方法 |
それぞれの CIM 参照に対して、生成された Java インタフェースへの参照が作成される |
トリガー |
特定の要素は要求されていない |
スキーマ |
特定の要素は要求されていない |
次の表では、CIM データ型を Java データ型にマップする方法を説明します。
表 7–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 構文のオブジェクトクラスまたはプロパティ宣言の実際の使用方法を改良します。
表 7–4 メタ修飾子
修飾子 |
スコープ |
型 |
意味 |
---|---|---|---|
関連 |
クラス |
Boolean |
マップに影響しない |
インジケーション |
クラス |
Boolean |
クラスは abstract クラス |
次の表では、標準修飾子と CIM オブジェクトを Bean にマップする際に与える影響について説明します。オプションの修飾子はサポートされていません。このマッピングに基づいて、個々のインタフェースおよびクラスの Javadoc API ドキュメンテーションが生成されます。
表 7–5 標準修飾子
修飾子 |
スコープ |
意味 |
---|---|---|
ABSTRACT |
クラス、関連、インジケーション |
クラスは abstract クラスなので、Java プログラミング言語インタフェースに影響を与えない |
DESCRIPTION |
任意 |
提供される情報によって、ソースファイルに Javadoc コメントが生成される |
DISPLAYNAME |
プロパティ |
表示名のアクセス用メソッドが作成される public String displayNameForProperty(); |
IN |
パラメータ |
メソッドシグニチャーを決定する |
OUT |
パラメータ |
メソッドパラメータシグニチャーおよび戻り値を決定する |
TERMINAL |
クラス |
クラスまたはインタフェースは、final |
UNITS |
プロパティ、メソッド、パラメータ |
ほかのアクセス用メソッドが作成される public String getpropertyUnits(); |
VALUEMAP |
プロパティ、メソッド、パラメータ |
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 要素にマップする方法を説明します。
表 7–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; } // コンストラクタ /** * このメソッドは 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); } // 更新 /** *このメソッドはリモート呼び出しを実行して、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)); } // 更新 /** * このメソッドはリモート呼び出しを実行して、CIMOM 内の CIMInstance を * 削除する */ public void delete() throws CIMException { cimomHandle.deleteInstance(getObjectPath()); } // 削除 /** * サブクラスが指定の 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 内に設定する。関連プロパティのアクセスメソッド * によって使用されるメソッド * @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 } // Class 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_ClassBean インタフェースを実装する。 * 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 を作成し、 * 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 クラス