次の表で、メソッドプロバイダインタフェースのメソッドについて説明します。
表 5–4 MethodProvider インタフェースメソッド|
メソッド |
説明 |
|---|---|
|
CIMValue invokeMethod(CIMObjectPath op, String methodName, Vector inParams, Vector outParams) |
CIM Object Manager は、op によって参照されるインスタンス内の methodName が呼び出されると、このメソッドを呼び出す。 inParams は、呼び出されるメソッドへの入力パラメータとなる CIMValues のベクトル、outParams は、呼び出されるメソッドからの出力パラメータとなる CIMValues のベクトル。 |
例 5–3 のコードセグメントは、CIM Object Manager からのメソッド実行要求を 1 つ以上の特化されたプロバイダに送る Solaris プロバイダクラスを作成します。これらの特化されたプロバイダは、特定の Solaris オブジェクトの動的データの要求に対するサービスを行います。たとえば、Solaris_Package プロバイダは、Solaris_Package クラスのメソッドを実行する要求に対応します。
この例のメソッドプロバイダは、適切なプロバイダを呼び出して次に示す処理の 1 つを実行する単一のメソッド invokeMethod を実装します。
Solaris システムをリブートする
Solaris システムをリブートまたは停止する
Solaris シリアルポートを削除する
...
public class Solaris implements MethodProvider {
public void initialize(CIMONHandle, ch) throws CIMException {
}
public void cleanup() throws CIMException {
}
public CIMValue invokeMethod(CIMObjectPath op, String methodName,
Vector inParams, Vector outParams) throws CIMException {
if (op.getObjectName().equalsIgnoreCase("solaris_computersystem")) {
Solaris_ComputerSystem sp = new Solaris_ComputerSystem();
if (methodName.equalsIgnoreCase("reboot")) {
return new CIMValue (sp.Reboot());
}
}
if (op.getObjectName().equalsIgnoreCase("solaris_operatingsystem")) {
Solaris_OperatingSystem sos = new Solaris_OperatingSystem();
if (methodName.equalsIgnoreCase("reboot")) {
return new CIMValue (sos.Reboot());
}
if (methodName.equalsIgnoreCase("shutdown")) {
return new CIMValue (sos.Shutdown());
}
}
if (op.getObjectName().equalsIgnoreCase("solaris_serialport")) {
Solaris_SerialPort ser = new Solaris_SerialPort();
if (methodName.equalsIgnoreCase("disableportservice")) {
return new CIMValue (ser.DeletePort(op));
}
}
return null;
}
}
...