//%2006//////////////////////////////////////////////////////////////////////// // // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.; // IBM Corp.; EMC Corporation, The Open Group. // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.; // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; // EMC Corporation; VERITAS Software Corporation; The Open Group. // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; // EMC Corporation; Symantec Corporation; 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. // //============================================================================== Java Manageability Programming Interface - JMPI Author: Adrian Schuur, schuur@de.ibm.com - 30 Apr 2004 - First installment This installment of JMPI has been committed to the 2.4 branch. This installment has been build and tested on Suse 9.0 with Sun's j2sdk 1.4.2_04. Environment settings In order to build this support a few environment variables have to used. The following script has been proven useful for setting up the build and execution environment. You might need to adjust this to your system layout. export PEGASUS_HOME=`pwd` export PEGASUS_PLATFORM=LINUX_IX86_GNU export PEGASUS_ENABLE_CMPI_PROVIDER_MANAGER=1 export PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER=1 export PEGASUS_DEBUG=1 export JAVA_SDK=/usr/java/j2sdk1.4.2_04 export JAVA_SDKINC=$JAVA_SDK/include export LD_LIBRARY_PATH=$PEGASUS_HOME/lib:$JAVA_SDK/jre/lib/i386/server:$JAVA_SDK/jre/lib/i386/native_threads:$JAVA_SDK/jre/lib/i386 export PATH=$JAVA_SDK/bin:$PATH export CLASSPATH=$PEGASUS_ROOT/src/Pegasus/ProviderManager2/JMPI export PATH=$PEGASUS_HOME/bin:$PATH export PEGASUS_ROOT=$PEGASUS_HOME export LD_ASSUME_KERNEL=2.2.5 cd $PEGASUS_HOME There is now a new variable to determine which JVM to link with. The choices are as follows: PEGASUS_JVM sun Sun's jvm (ex: j2sdk1.4.2_07) PEGASUS_JVM ibm IBM's jvm (ex: IBMJava2-142) PEGASUS_JVM bea Suse's IBM jvm (ex: BEAJava2-1.4.2) So, pick one and export that variable to the environment. For example, export PEGASUS_JVM=sun NOTE: This is currently listened to for Linux builds. There are a couple of optional environment variables to determine how the JRE is initialized. These are as follows (the variable name and what JRE option that it corresponds to): PEGASUS_JMPI_MAX_HEAP -Xmx PEGASUS_JMPI_INITIAL_HEAP -Xms PEGASUS_JMPI_JAVA_THREAD_STACK_SIZE -Xss So, for example, you would perform the following if you want to change the maximum heap size to 128 megabytes. export PEGASUS_JMPI_MAX_HEAP=128m There is a new environment variable that tells the JVM to output more debugging information. The variable name is called PEGASUS_JMPI_VERBOSE. An example usage is as follows: export PEGASUS_JMPI_VERBOSE="jni,class" This will tell the JVM to output debug information on the JNI layer and class loading. When using this script, place a copy of this script above your PEGASUS_HOME directory. "cd" to PEGASUS_HOME, and issue ". ../setJPeg". Then do a normal make. This installment has a number of restrictios: The provider interfaces follow the SNIA OpenWBEM APIs Only Instance and Association providers are supported at the moment. SetProperty and GetProperty CIM operations will crash cimserver Jar support is not yet implemented - all classes must be accessable via the CLASSPATH variabe. The Makefiles are not yet Pegasus conforming. cimmofl must be used for provider registration. Unloading of idle providers is not supported and Java will increase the memory footprint. poststarttests This installment has a set of tests modelled after wetest/static. All tests work properly except the Property tests. I had to modify "diff" to "diff -w", why that is needed I do not understand. Building poststarttests: cd to .../src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/Load Issue "make" This will load a schema to the repository and register the provider. Running poststarttests: cd to .../src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests Issue "find -name "*.rsp" -exec rm {} \;" to clean up *.rsp files Issue "make poststarttests" Samples The provider used for posstarttest, .../JMPI/org/pegasus/jmpi/test/JMPI_TestPropertyTypes/JMPI_TestPropertyTest.java is a working example of how to code an JMPI tyle instance provider. This directors also constains the required Makefile. .../JMPI/org/pegasus/jmpi/sample contains more samples, one of which is an incomplete CIMClient sample. Notice that all provider classes must be accessibe via the CASSPATH environment setting. Provider Registration JMPI providers are registered as usual. The Location property in P_ProviderModule has a special format. The format is: : Although jar support is not yet working correctly, this format must be used. You should use cimmofl for registration untill cimmof is prepared for JMPI. instance of PG_ProviderModule { Name = "JMPI_TestPropertyTypesModule"; Location = "JMPI_TestPropertyTypes.jar:" "org/pegasus/jmpi/tests/JMPI_TestPropertyTypes/JMPI_TestPropertyTypes"; Vendor = "Pegasus Community"; Version = "2.0.0"; InterfaceType = "JMPI"; InterfaceVersion = "1.0.0"; }; Bug reports Use normal Pegasus bugzilla procedures to report malfunctions. Regards, Adrian Schuur.