The method invokeMethod is the only way that a client program can call the methods of Solaris WBEM providers, whether those providers are:
Built–in – The “platform-free” CIM_* providers or the Solaris-specific Solaris_* providers.
Added by developers – For example, a method provider, whether it supplies provider or non-WBEM methods, is created by implementing the MethodProvider interface.
The following sample code creates the Solaris_ComputerSystem provider class that routes requests from the CIM Object Manager to one or more specialized providers. These providers service requests for dynamic data for a particular type of managed object. For example, the Solaris_Package provider services requests to execute methods in the Solaris_Package class.
The method provider implements a single method, invokeMethod, that calls the appropriate provider to either reboot a system, shut down a system, or delete a serial port.
... public class Solaris_ComputerSystem implements MethodProvider { ProviderCIMOMHandle pch = null; public void initialize(CIMOMHandle ch) throws CIMExcepiton { pch = (ProviderCIMOMHandle)ch; } public void cleanup() throws CIMException { } public CIMValue invokeMethod(CIMObjectPath op, String methodName, Vector inParams, Vector outParams) throws CIMException { if (op.getObjectName().equalsIgnoreCase("solaris_computersystem")) { if (methodName.equalsIgnoreCase("reboot")) { // call helper function, not shown here return new CIMValue(rebootSystem()); } if (methodName.equalsIgnoreCase("shutdown")) { // call helper function, not shown here return new CIMValue(shutdownSystem()); } } if (op.getObjectName().equalsIgnoreCase("solaris_serialport")) { if (methodName.equalsIgnoreCase("disableportservice")) { // call helper function, not shown here return new CIMValue(deletePort(op)); } } // error if we get here throw new CIMException(CIMException.CIM_ERR_NOT_SUPPORTED, "The requested function does not exist"); } // helper functions would be defined below ... }