次の例では、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 クラス