version 1.14, 2007/05/16 06:41:05
|
version 1.15, 2007/09/26 21:46:07
|
|
|
Environment settings | Environment settings |
-------------------- | -------------------- |
| |
In order to build this support a few environment variables have to used. |
In order to build the JMPI support a few environment variables have to used. |
The following script has been proven useful for setting up the build and execution environment. |
The following script has been proven useful for setting up the build and |
You might need to adjust this to your system layout. |
execution environment. You might need to adjust this to your system layout. |
| |
an example setJPeg script file: |
An example setJPeg script file: |
export PEGASUS_HOME=`pwd` | export PEGASUS_HOME=`pwd` |
export PEGASUS_ROOT=${PEGASUS_HOME} | export PEGASUS_ROOT=${PEGASUS_HOME} |
export PEGASUS_PLATFORM=LINUX_IX86_GNU | export PEGASUS_PLATFORM=LINUX_IX86_GNU |
|
|
export PATH=${JAVA_SDK}/bin/:${PEGASUS_HOME}/bin:${PATH} | export PATH=${JAVA_SDK}/bin/:${PEGASUS_HOME}/bin:${PATH} |
export CLASSPATH=${CLASSPATH}:${PEGASUS_HOME}/lib/JMPIImpl.jar | export CLASSPATH=${CLASSPATH}:${PEGASUS_HOME}/lib/JMPIImpl.jar |
| |
Lets walk through the manditory environment variables. The first tells Pegasus to build the |
Lets walk through an example for the mandatory environment variables. |
Java provider manager. |
|
|
(1) The first tells Pegasus to build the Java provider manager: |
export PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER=true | export PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER=true |
| |
The second says which JRE to use. The choices are as follows: |
(2) The second says which JRE to use. The choices are as follows: |
export PEGASUS_JVM=gcj Gnu's jvm (ex: gcj (GCC) 4.1.1 20061011 (Red Hat 4.1.1-30)) | export PEGASUS_JVM=gcj Gnu's jvm (ex: gcj (GCC) 4.1.1 20061011 (Red Hat 4.1.1-30)) |
export PEGASUS_JVM=sun Sun's jvm (ex: j2sdk1.4.2_07) | export PEGASUS_JVM=sun Sun's jvm (ex: j2sdk1.4.2_07) |
export PEGASUS_JVM=ibm IBM's jvm (ex: IBMJava2-142) | export PEGASUS_JVM=ibm IBM's jvm (ex: IBMJava2-142) |
export PEGASUS_JVM=ibm64 IBM's jvm for 64 bit machine. | export PEGASUS_JVM=ibm64 IBM's jvm for 64 bit machine. |
export PEGASUS_JVM=bea Suse's IBM jvm (ex: BEAJava2-1.4.2) | export PEGASUS_JVM=bea Suse's IBM jvm (ex: BEAJava2-1.4.2) |
So, pick one and export that variable to the environment. For example, |
So, pick one and export that variable to the environment. For example: |
export PEGASUS_JVM=sun | export PEGASUS_JVM=sun |
NOTE: The gcj and sun options were the only tested JVMs. |
NOTE: As the primary maintainer of the JMPI code, IBM developers have |
NOTE: gcj is only supported using gcc version 4.1.1 or later. |
independently tested (and routinely test) JMPI with the following JREs. |
|
The results of these tests are not yet reported on the OpenPegasus Nightly |
The third and fourth say where the JRE libraries and header files are located. This may or may not |
Build and Test Status page. |
be necessary depending upon the compiler's default search paths. |
- LINUX_IX86_GNU (Fedora Core 5), Sun JVM 1.4.2_08 |
Since we are using Sun's JRE, point to Sun's paths. |
- LINUX_IX86_GNU (Fedora Core 5), Gcc JVM 4.1.1 20060525 |
|
- LINUX_IX86_GNU (RHEL 5.1), Gcc JVM 4.1.2 20070626 |
|
- LINUX_X86_64_GNU (SLES 9 SP3), Sun JVM 1.4.2_15 |
|
- LINUX_X86_64_GNU (RHEL 5.0), IBM Classic VM (build 1.4.2, J2RE 1.4.2 IBM build cxz64142-20070317 (SR8) (JIT disabled)) |
|
- LINUX_ZSERIES64_GNU (RHEL 5.0), IBM J9SE VM (build 2.2, J2RE 1.4.2 IBM J9 2.2 Linux amd64-64 |
|
- ZOS_ZSERIES_IBM (z/OS 1.7), J2RE 1.4.2 IBM z/OS Persistent Reusable VM build cm142-20060824 (SR6) |
|
- ZOS_ZSERIES_IBM (z/OS 1.8), J2RE 1.4.2 IBM z/OS Persistent Reusable VM build cm142-20060824 (SR6) |
|
- ZOS_ZSERIES_IBM (z/OS 1.9), J2RE 1.4.2 IBM z/OS Persistent Reusable VM build cm142-20060824 (SR6) |
|
- WIN32_IX86_MSVC (Microsoft Windows XP Professional), Sun JVM 1.6.0_02 |
|
|
|
(3, 4) The third and fourth say where the JRE libraries and header files are |
|
located. This may or may not be necessary depending upon the compiler's |
|
default search paths. Since in this example we are using Sun's JRE, we |
|
point to Sun's paths: |
export JAVA_SDK=/usr/java/j2sdk1.4.2_08 | export JAVA_SDK=/usr/java/j2sdk1.4.2_08 |
export JAVA_SDKINC=${JAVA_SDK}/include | export JAVA_SDKINC=${JAVA_SDK}/include |
| |
The fifth variable defines the Java architecture of the JMV |
(5) The fifth variable defines the Java architecture of the JMV: |
export PEGASUS_JAVA_ARCH=i386 | export PEGASUS_JAVA_ARCH=i386 |
| |
The sixth variable defines which version of the jvm library to link to (the |
(6) The sixth variable defines which version of the jvm library to link to |
client or the server). |
(the client or the server): |
export PEGASUS_JAVA_TYPE=client | export PEGASUS_JAVA_TYPE=client |
| |
As a test to make sure your environment variables are correct |
As a test to make sure your environment variables are correct in this |
|
example: |
ls ${JAVA_SDK}/jre/lib/${PEGASUS_JAVA_ARCH}/${PEGASUS_JAVA_TYPE} | ls ${JAVA_SDK}/jre/lib/${PEGASUS_JAVA_ARCH}/${PEGASUS_JAVA_TYPE} |
should show you libjvm.so for Sun's JRE. | should show you libjvm.so for Sun's JRE. |
| |
The seventh may be necessary to tell the linker where to load the JRE libraries. |
(7) The seventh may be necessary to tell the linker where to load the JRE |
|
libraries: |
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${JAVA_SDK}/jre/lib/${PEGASUS_JAVA_ARCH}/server:${JAVA_SDK}/jre/lib/${PEGASUS_JAVA_ARCH}/native_threads:${JAVA_SDK}/jre/lib/${PEGASUS_JAVA_ARCH} | export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${JAVA_SDK}/jre/lib/${PEGASUS_JAVA_ARCH}/server:${JAVA_SDK}/jre/lib/${PEGASUS_JAVA_ARCH}/native_threads:${JAVA_SDK}/jre/lib/${PEGASUS_JAVA_ARCH} |
| |
The eighth one may be necessary to get the JVM's executable files into the PATH. |
(8) The eighth one may be necessary to get the JVM's executable files into the |
|
PATH: |
export PATH=${JAVA_SDK}/bin/:${PEGASUS_HOME}/bin:${PATH} | export PATH=${JAVA_SDK}/bin/:${PEGASUS_HOME}/bin:${PATH} |
| |
The nineth tells the JRE to include JMPI's Java classes. |
(9) The nineth tells the JRE to include JMPI's Java classes: |
export CLASSPATH=${CLASSPATH}:${PEGASUS_HOME}/lib/JMPIImpl.jar | export CLASSPATH=${CLASSPATH}:${PEGASUS_HOME}/lib/JMPIImpl.jar |
| |
There are a couple of optional environment variables to determine how the JRE is initialized. These are |
There are a couple of optional environment variables to determine how the JRE |
as follows (the variable name and what JRE option that it corresponds to): |
is initialized. These are as follows (the variable name and what JRE option |
|
that it corresponds to): |
| |
PEGASUS_JMPI_MAX_HEAP -Xmx | PEGASUS_JMPI_MAX_HEAP -Xmx |
PEGASUS_JMPI_INITIAL_HEAP -Xms | PEGASUS_JMPI_INITIAL_HEAP -Xms |
PEGASUS_JMPI_JAVA_THREAD_STACK_SIZE -Xss | 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. |
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 | export PEGASUS_JMPI_MAX_HEAP=128m |
| |
There is a new optional environment variable that tells the JVM to output more debugging information. The variable name |
There is a new optional environment variable that tells the JVM to output more |
is called PEGASUS_JMPI_VERBOSE. An example usage is as follows: |
debugging information. The variable name is called PEGASUS_JMPI_VERBOSE. |
|
An example usage is as follows: |
| |
export PEGASUS_JMPI_VERBOSE="jni,class" | export PEGASUS_JMPI_VERBOSE="jni,class" |
| |
This will tell the JVM to output debug information on the JNI layer and class loading. |
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. |
When using this script, place a copy of this script above your PEGASUS_HOME |
"cd" to PEGASUS_HOME, and issue ". ./setJPeg". Then do a normal make. |
directory, "cd" to PEGASUS_HOME, and issue ". ./setJPeg". Then do a normal |
|
make. |
| |
| |
Known restrictions | Known restrictions |
------------------ | ------------------ |
| |
This installment has the following restrictios: |
This installment has the following restrictions: |
|
|
|
Unloading of idle providers is not supported and Java will increase the |
|
memory footprint. |
| |
Unloading of idle providers is not supported and Java will increase the memory footprint. |
|
Java 1.5 is not currently supported. | Java 1.5 is not currently supported. |
| |
|
Gcj on 31 bit machines is only supported using gcc version 4.1.1 or later. |
|
Gcj on 64 bit machines is not supported. Bugs 5913, 5921, and 5963 have |
|
been written to address that issue. Instead, you should use the Sun ported |
|
JVM from the Blackdown project located at www.blackdown.org. |
| |
Level of coverage |
|
----------------- |
|
| |
All interfaces to a provider have a sample provider written for them and are part of the |
Level of test coverage |
testcases. All main CIM java classes have testcases written for them as well. |
---------------------- |
|
|
|
All interfaces to a provider have a sample provider written for them and are |
|
part of the testcases. All main CIM java classes have testcases written for |
|
them as well. |
| |
| |
Outstanding issues | Outstanding issues |
|
|
Testing | Testing |
------- | ------- |
| |
This installment has a set of tests located under src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/ |
This installment has a set of tests located under |
|
src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/ |
| |
Static/ | Static/ |
| |
These tests have been modelled after wetest/static. |
These tests have been modelled after wetest/static. (For the tests, we |
For the tests, I had to modify "diff" to "diff -w", why that is needed I do not understand. |
had to modify "diff" to "diff -w", why that is needed I do not |
|
understand.) |
| |
Providers/ | Providers/ |
| |
|
|
----------------- | ----------------- |
| |
Tests are run with the following process. | Tests are run with the following process. |
If the repository has not been built before then issue the following: |
|
|
If the repository has not already been built then issue the following: |
| |
cd to ${PEGASUS_HOME}/src/Pegasus/ProviderManager2/JMPI/ | cd to ${PEGASUS_HOME}/src/Pegasus/ProviderManager2/JMPI/ |
Issue "make repository" | Issue "make repository" |
|
|
Provider Registration | Provider Registration |
--------------------- | --------------------- |
| |
JMPI providers are registered as usual. The Location property in PG_ProviderModule has a special format. |
JMPI providers are registered as usual. The Location property in |
The format is: <jar-file-name>:<provider-class-name> |
PG_ProviderModule has a special format. The format is: |
|
<jar-file-name>:<provider-class-name> |
| |
JMPI providers now fall into two groups. | JMPI providers now fall into two groups. |
1) Legacy providers use: |
|
|
(1) Legacy providers use: |
InterfaceType = "JMPI" | InterfaceType = "JMPI" |
and use one of the 3 following based on existing JMPI samples: | and use one of the 3 following based on existing JMPI samples: |
InterfaceVersion = "1.0.0"; | InterfaceVersion = "1.0.0"; |
|
|
InterfaceVersion = "1.0.0"; | InterfaceVersion = "1.0.0"; |
}; | }; |
| |
2) New style providers use: |
(2) New style providers use: |
InterfaceType = "JMPIExperimental" | InterfaceType = "JMPIExperimental" |
and: | and: |
InterfaceVersion = "0.0.1"; | InterfaceVersion = "0.0.1"; |