Pegasus Enhancement Proposal (PEP)
Title: Java Implementation of CIM Client and CIM Listener Interface
Version History:
|
Version |
Date |
Author |
Change Description |
|
1.0 |
16 May 2003 |
Bapu Patil |
Initial Submission |
|
|
|
|
|
This proposal is to submit Java implementation of CIM Client and CIM Listener interface (does not include CIMServer), which is based on SNIA-CIMOM source. There are some Pegasus community members interested in using the Java interface for client applications. Adding the Java client-only interface to the Pegasus source base will provide a lighter-weight option to Java client applications with lower-cost maintenance that can be leveraged across the community.
Issue:
Due to customers requirements to have a Java implementation of CIM Client and CIM Listener interfaces that are easy to maintain by the client applications, does not include entire CIMOM source, does not depend on unnecessary components, and is as per DMTF specifications.
Current SNIA-CIMOM CIM Client interface is tightly coupled with the CIM Server itself. This causes client applications also to include CIM Server portion of the source, which is not really required or used by CIM Client applications. The CIM Listener interface of SNIA-CIMOM source is integrated with Client APIs and it also depends on CIMOM source. Because of this we needed to separate Java CIM Client and Listener functionality from SNIA-CIMOM core source.
Java CIM Interface source is based on SNIA-CIMOM source from Open Group, and we have extracted CIM Client and CIM Listener interfaces from SNIA-CIMOM core portion. This way we would have smaller version of CIM classes to support rather than the entire SNIA-CIMOM source. The Java CIM Client API is then enhanced to make it compliant with DMTF specifications and also added the various new functionalities to make it more stable and provide high quality. HP also added support for indications (CIM Listener) both SSL and Non-SSL functionalities. HP added Java documentation, written developer guide, and Release Notes.
This PEP proposes to submit this source to Pegasus source base. This way Pegasus source base will have both Java and C++ CIM client interface. The Java CIM Client APIs and CIM Listener APIs will be made available to other developers/users who may be interested in them, and maintenance efforts may be leveraged across the community.
Enhancements to SNIA-CIMOM source:
Following sections lists the major enhancements and changes that are done by HP.
CIM Client Interface
-
Extracted CIM Client and CIM Listener interfaces from
SNIA-CIMOM core source portion.
-
Enhanced and
modified CIM Client and CIM Listener interface as per the DMTF specifications.
-
Added plug-in
in SSL interface to support for Certificate Trust Manager to handle certificate
decision-making functionality. This is similar to Pegasus SSL Callbacks.
-
Enhanced and
added new exceptions and error handling related to connections, XML, and HTTP
standards.
-
Added Client
connection timeout to Client API
-
Fixed various
Bugs – including
o Namespace operations with Pegasus-CIMServer
o Invoke Method support with Pegasus-CIMServer
o Client API cannot handle if the providers
return an EMPTY value in KEY Bindings.
o CIM ObjectPath for reference class omits
namespace.
o Support for "VALUE.REFARRAY"
o Handle Keep-Alive with HTTP/1.0 requests.
o Client must first try to use M-POST to send
requests to cimserver if it fails then
try POST. Basically remove the flag isHTTP11Only.
o CIMClient API to handle both M-POST and POST
requests in case of CIMOM doesn't support M-POST and/or HTTP/1.1.
o And many more fixes…
-
Enhanced HTTP
output interface to handle various HTTP response codes.
-
Added Tests for
all the CIM Operations
-
Added Java
Documentation for all the CIM classes
-
Made changes to
CIM Browser to work with Pegasus-CIMServer and also supports new features.
CIM Listener
-
Separated CIM
Listener functionality from CIM Client interface. Changed the CIM Listener to
do only listening and processing indication as compared to it was doing both
Subscription and Listening.
-
Added SSL
Support to CIM Listener
-
Support for
2-Way SSL authentication in CIMListener
-
Made changes to
CIMListener to pass Indication URL to the Indication Consumers.
-
Made CIM
Listener Interface in compliance with DMTF specifications.
-
Defined
Certificate Trust Manager plug-in interface to manage Certification handling.
-
Added sample
SSL and non-SSL consumers programs.
-
Added SSL and
non-SSL Indication generation Test programs.
-
Added Java
Documentations.
List of Files:
This
PEP proposes to submit the following files to Pegasus CVS repository.
pegasus/src/Java/Client/Makefile
pegasus/src/Java/Client/org/Makefile
pegasus/src/Java/Client/org/snia/Makefile
pegasus/src/Java/Client/org/snia/wbem/Makefile
pegasus/src/Java/Client/org/snia/wbem/cim/CIMClass.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMDataType.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMDateTime.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMElement.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMException.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMFlavor.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMInstance.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMInstanceException.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMMethod.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMNameSpace.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMObjectPath.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMParameter.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMProperty.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMQualifier.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMQualifierType.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMQuery.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMScope.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMSemanticException.java
pegasus/src/Java/Client/org/snia/wbem/cim/CIMValue.java
pegasus/src/Java/Client/org/snia/wbem/cim/Makefile
pegasus/src/Java/Client/org/snia/wbem/cim/UnsignedInt16.java
pegasus/src/Java/Client/org/snia/wbem/cim/UnsignedInt32.java
pegasus/src/Java/Client/org/snia/wbem/cim/UnsignedInt64.java
pegasus/src/Java/Client/org/snia/wbem/cim/UnsignedInt8.java
pegasus/src/Java/Client/org/snia/wbem/cim/XmlInstance.java
pegasus/src/Java/Client/org/snia/wbem/Client/CIMClient.java
pegasus/src/Java/Client/org/snia/wbem/Client/CIMOMHandle.java
pegasus/src/Java/Client/org/snia/wbem/Client/Makefile
pegasus/src/Java/Client/org/snia/wbem/listener/CIMHTTPIndicationReceiver.java
pegasus/src/Java/Client/org/snia/wbem/listener/CIMHTTPListener.java
pegasus/src/Java/Client/org/snia/wbem/listener/CIMListener.java
pegasus/src/Java/Client/org/snia/wbem/listener/Makefile
pegasus/src/Java/Client/org/snia/wbem/listener/CIMIndication.java
pegasus/src/Java/Client/org/snia/wbem/listener/DoNotValidateClientCert.java
pegasus/src/Java/Client/org/snia/wbemcfg/GlobalConfig.java
pegasus/src/Java/Client/org/snia/wbemcfg/Makefile
pegasus/src/Java/Client/org/snia/wbemcmd/Makefile
pegasus/src/Java/Client/org/snia/wbemcmd/cimom/CIMFeatures.java
pegasus/src/Java/Client/org/snia/wbemcmd/cimom/CIMImplementation.java
pegasus/src/Java/Client/org/snia/wbemcmd/cimom/CIMOMCast.java
pegasus/src/Java/Client/org/snia/wbemcmd/cimom/CIMOMEscape.java
pegasus/src/Java/Client/org/snia/wbemcmd/cimom/CIMOMFeatures.java
pegasus/src/Java/Client/org/snia/wbemcmd/cimom/CIMOMHandleGeneric.java
pegasus/src/Java/Client/org/snia/wbemcmd/cimom/CIMOMHandleSNIA.java
pegasus/src/Java/Client/org/snia/wbemcmd/cimom/CIMOMHandleXML.java
pegasus/src/Java/Client/org/snia/wbemcmd/cimom/Makefile
pegasus/src/Java/Client/org/snia/wbemcmd/utils/Log.java
pegasus/src/Java/Client/org/snia/wbemcmd/utils/Makefile
pegasus/src/Java/Client/org/snia/wbemcmd/utils/SimpleEnum.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/Authorizer.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/Base64Decoder.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/Base64Encoder.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/Base64FormatException.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/CannotCreateSocketException.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/CertificateManager.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/DontValidateCertificate.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/HTTPCounter.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/HTTPException.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/HTTPOutput.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/HTTPOutputSimple.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/HTTPReader.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/HTTPWriter.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/JSSESocketProvider.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/Makefile
pegasus/src/Java/Client/org/snia/wbemcmd/xml/Param.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/PlainSocketProvider.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/SocketProvider.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/Utils.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/WBEMResponse.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLAssociatorNames.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLAssociators.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLAttribute.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLCIM.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLClass.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLCreateClass.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLCreateInstance.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLDeleteClass.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLDeleteInstance.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLDeleteQualifier.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLEnumerateClassNames.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLEnumerateClasses.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLEnumerateInstanceNames.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLEnumerateInstances.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLEnumerateQualifiers.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLError.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLFeatures.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLGetClass.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLGetInstance.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLGetProperty.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLGetQualifier.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLInvokeMethod.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLModifyClass.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLModifyInstance.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLNameSpace.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLNode.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLOperation.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLOperationGeneric.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLParameters.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLParse.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLQualifier.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLQuery.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLReferenceNames.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLReferences.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLSetProperty.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/XMLSetQualifier.java
pegasus/src/Java/Client/org/snia/wbemcmd/xml/BasicAuthorization.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/CBROW.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/CBROWInstance.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/CBROWMOFStatus.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/CBROWMethod.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/CBROWNamespaces.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/CBROWNode.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/CBROWTree.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/CBROWTreeCellRenderer.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/DialogBrowser.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/DialogConnect.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/DialogStatus.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/Makefile
pegasus/src/Java/Client/org/snia/wbemcmd/browser/TableModel.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/query/QueryFrame.java
pegasus/src/Java/Client/org/snia/wbemcmd/browser/query/QueryResultFrame.java
pegasus/src/Java/Client/org/snia/wbemcmd/mof/MOFLexer.java
pegasus/src/Java/Client/org/snia/wbemcmd/mof/MOFLexerException.java
pegasus/src/Java/Client/org/snia/wbemcmd/mof/MOFParse.java
pegasus/src/Java/Client/org/snia/wbemcmd/mof/MOFParseException.java
pegasus/src/Java/Client/org/snia/wbemcmd/mof/MOFParseFailException.java
pegasus/src/Java/Client/org/snia/wbemcmd/mof/MOFStatus.java
pegasus/src/Java/Client/org/snia/wbemcmd/mof/MOFToken.java
pegasus/src/Java/Client/org/snia/wbemcmd/mof/Makefile
pegasus/src/Java/Client/tests/ClientUnitTests/Makefile
pegasus/src/Java/Client/tests/ClientUnitTests/Test01.java
pegasus/src/Java/Client/tests/ClientUnitTests/Test02C.java
pegasus/src/Java/Client/tests/ClientUnitTests/Test02D.java
pegasus/src/Java/Client/tests/ClientUnitTests/Test02E.java
pegasus/src/Java/Client/tests/ClientUnitTests/Test02EE.java
pegasus/src/Java/Client/tests/ClientUnitTests/Test07.java
pegasus/src/Java/Client/tests/ClientUnitTests/Test08.java
pegasus/src/Java/Client/tests/ClientUnitTests/Test09.java
pegasus/src/Java/Client/tests/ClientUnitTests/Test09Invalid.java
pegasus/src/Java/Client/tests/ClientUnitTests/Test10.java
pegasus/src/Java/Client/tests/ClientUnitTests/TestMultiConnections.java
pegasus/src/Java/Client/tests/ClientUnitTests/TestTimeout.java
pegasus/src/Java/Client/tests/ClientUnitTests/cim.properties
pegasus/src/Java/Client/tests/ClientUnitTests/runtests.ksh
pegasus/src/Java/Client/tests/Makefile
pegasus/src/Java/Client/tests/ProviderClientTest/Makefile
pegasus/src/Java/Client/tests/ProviderClientTest/ProviderClient.java
pegasus/src/Java/Client/tests/ProviderClientTest/README.txt
pegasus/src/Java/Client/tests/ProviderClientTest/WBEMValue.java
pegasus/src/Java/Client/tests/ProviderClientTest/XMLConnect.java
pegasus/src/Java/Client/tests/ProviderClientTest/cim.properties
pegasus/src/Java/Client/tests/ProviderClientTest/runtests.ksh
pegasus/src/Java/Client/tests/TestClient/Makefile
pegasus/src/Java/Client/tests/TestClient/README.txt
pegasus/src/Java/Client/tests/TestClient/TestCIMClient.java
pegasus/src/Java/Client/tests/TestClient/cim.properties
pegasus/src/Java/Client/tests/TestClient/runtestSSL.ksh
pegasus/src/Java/Client/tests/IndTests/IndConsumer.java
pegasus/src/Java/Client/tests/IndTests/Makefile
pegasus/src/Java/Client/tests/IndTests/exportReq.xml
pegasus/src/Java/Client/tests/IndTests/exportReqResp.xml
pegasus/src/Java/Client/tests/IndTests/indSpec.xml
pegasus/src/Java/Client/tests/IndTests/jwbemexec.java
pegasus/src/Java/Client/tests/IndTests/jwbemexecSSL.java
pegasus/src/Java/Client/tests/IndTests/mkcert.sh
pegasus/src/Java/Client/tests/IndTests/mkcertClient.sh
pegasus/src/Java/Client/tests/IndTests/sendInd.sh
pegasus/src/Java/Client/tests/IndTests/sendIndSSL.sh
pegasus/src/Java/Client/tests/IndTests/startConsumer.sh
pegasus/src/Java/Client/tests/IndTests/startConsumerSSL.sh
pegasus/src/Java/Client/tests/IndTests/sockPost.java
pegasus/src/Java/Client/tests/IndTests/sendIndSock.sh
pegasus/src/Java/Client/tests/IndTests/README
pegasus/src/Java/Client/tests/IndTests/myTestConsumer.java
pegasus/src/Java/Client/tests/IndTests/myTestConsumer.sh
pegasus/src/Java/Client/tests/IndTests/cim.properties
pegasus/src/Java/Client/tests/IndTests/sendIndSockSSL.sh
pegasus/src/Java/Client/tests/IndTests/sendIndication.java
pegasus/src/Java/Client/tests/IndTests/sendIndication.sh
pegasus/src/Java/Client/tests/IndTests/sendIndicationSSL.sh
pegasus/src/Java/Makefile
pegasus/src/Java/README.browser
pegasus/src/Java/README.txt
pegasus/src/Java/cimrules.mk
pegasus/src/Java/config.mk
Client SDK Packages:
WBEM Java CIM Client and Listener SDK will include the following packages:
|
Common CIM object classes |
|
|
CIM Client Interface |
|
|
CIM Listener interface |
|
|
Common configuration properties |
The
source license is based on Open Group’s SNIA-CIMOM license and will remain
unchanged.
|
Action |
Planned |
||
|
|
|||
|
PEP Reviewed |
05/23/03 |
|
|
|
PEP Approved |
06/06/03 |
|
|
|
Code Committed |
06/20/03 |
|
|
Copyright (c)
2003 BMC Software; Hewlett-Packard Development Company, L.P.; IBM Corp.; The
Open Group
Permission is
hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
THE ABOVE
COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN ALL COPIES OR
SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED "AS
IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.