次の例では、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 内に設定する。 * このメソッドは、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[] はキー修飾プロパティ名の配列 */ 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 クラス