Pegasus Enhancement Proposal (PEP)

PEP #: 64

Title: Java Implementation of CIM Client and CIM Listener Interface

Version: 1.0

Created: 16 May 2003

Authors: Bapu Patil

Status:  draft

Version History:

Version

Date

Author

Change Description

1.0

16 May 2003

Bapu Patil

Initial Submission

 

 

 

 

 


Abstract:

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.


Definition of the Problem

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.

Proposed Solution

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:

org.snia.wbem.cim

 Common CIM object classes

org.snia.wbem.client

 CIM Client Interface

org.snia.wbem.listener

 CIM Listener interface

org.snia.wbemcfg

 Common configuration properties

 

License

The source license is based on Open Group’s SNIA-CIMOM license and will remain unchanged.

Schedule

Action

Planned

Actual

Comment

PEP Submitted

05/16/03

05/16/03

 

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.

 

-