(file) Return to readme.jmpi CVS log (file) (dir) Up to [Pegasus] / pegasus

Diff for /pegasus/readme.jmpi between version 1.8 and 1.13

version 1.8, 2006/04/20 15:42:30 version 1.13, 2007/01/16 20:19:56
Line 29 
Line 29 
 // //
 //============================================================================== //==============================================================================
  
 Java Manageability Programming Interface - JMPI  Java Manageability Programming Interface (JMPI)
   -----------------------------------------------
  
 Author: Adrian Schuur, schuur@de.ibm.com  - 30 Apr 2004 -  JMPI is a bridge between clients and providers written in Java and the Open
   Pegasus project.
  
 First installment  More information on JMPI's status can be found at
      http://www.openpegasus.org/page.tpl?ggid=799
    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 Environment settings
   --------------------
  
    In order to build this support a few environment variables have to used.    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.    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.    You might need to adjust this to your system layout.
  
      an example setJPeg script file:
    export PEGASUS_HOME=`pwd`    export PEGASUS_HOME=`pwd`
      export PEGASUS_ROOT=${PEGASUS_HOME}
    export PEGASUS_PLATFORM=LINUX_IX86_GNU    export PEGASUS_PLATFORM=LINUX_IX86_GNU
    export PEGASUS_ENABLE_CMPI_PROVIDER_MANAGER=1     export PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER=true
    export PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER=1     export PEGASUS_JVM=sun
    export PEGASUS_DEBUG=1     export JAVA_SDK=/usr/java/j2sdk1.4.2_08
    export JAVA_SDK=/usr/java/j2sdk1.4.2_04     export JAVA_SDKINC=${JAVA_SDK}/include
    export JAVA_SDKINC=$JAVA_SDK/include     export PEGASUS_JAVA_ARCH=i386
    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 PEGASUS_JAVA_TYPE=client
    export PATH=$JAVA_SDK/bin:$PATH     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 CLASSPATH=$PEGASUS_ROOT/src/Pegasus/ProviderManager2/JMPI     export PATH=${JAVA_SDK}/bin/:${PEGASUS_HOME}/bin:${PATH}
    export PATH=$PEGASUS_HOME/bin:$PATH     export CLASSPATH=${CLASSPATH}:${PEGASUS_HOME}/lib/JMPIImpl.jar
    export PEGASUS_ROOT=$PEGASUS_HOME  
    export LD_ASSUME_KERNEL=2.2.5  Lets walk through the manditory environment variables.  The first tells Pegasus to build the
    cd $PEGASUS_HOME  Java provider manager.
      export PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER=true
    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)  The second says which JRE to use.  The choices are as follows:
         PEGASUS_JVM     ibm     IBM's jvm (ex: IBMJava2-142)     export PEGASUS_JVM=gcj     Gnu's jvm (ex: gcj (GCC) 4.1.1 20061011 (Red Hat 4.1.1-30))
         PEGASUS_JVM     bea     Suse's IBM jvm (ex: BEAJava2-1.4.2)     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=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: This is currently listened to for Linux builds.  NOTE: The gcj and sun options were the only tested JVMs.
   NOTE: gcj is only supported using gcc version 4.1.1 or later.
   
   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 we are using Sun's JRE, point to Sun's paths.
      export JAVA_SDK=/usr/java/j2sdk1.4.2_08
      export JAVA_SDKINC=${JAVA_SDK}/include
   
   The fifth variable defines the Java architecture of the JMV
      export PEGASUS_JAVA_ARCH=i386
   
   The sixth variable defines which version of the jvm library to link to (the
   client or the server).
      export PEGASUS_JAVA_TYPE=client
   
   As a test to make sure your environment variables are correct
      ls ${JAVA_SDK}/jre/lib/${PEGASUS_JAVA_ARCH}/${PEGASUS_JAVA_TYPE}
   should show you libjvm.so for Sun's JRE.
   
   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}
   
   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}
   
   The nineth tells the JRE to include JMPI's Java classes.
      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 is initialized.  These are
    as follows (the variable name and what JRE option that it corresponds to):    as follows (the variable name and what JRE option that it corresponds to):
Line 79 
Line 111 
  
    export PEGASUS_JMPI_MAX_HEAP=128m    export PEGASUS_JMPI_MAX_HEAP=128m
  
    There is a new 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 debugging information.  The variable name
    is called PEGASUS_JMPI_VERBOSE.  An example usage is as follows:    is called PEGASUS_JMPI_VERBOSE.  An example usage is as follows:
  
    export PEGASUS_JMPI_VERBOSE="jni,class"    export PEGASUS_JMPI_VERBOSE="jni,class"
Line 87 
Line 119 
    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 directory.
    "cd" to PEGASUS_HOME, and issue ". ../setJPeg". Then do a normal make.  "cd" to PEGASUS_HOME, and issue ". ./setJPeg". Then do a normal make.
   
  
   Known restrictions
   ------------------
  
 This installment has a number of restrictios:  This installment has the following restrictios:
  
    The provider interfaces follow the SNIA OpenWBEM APIs  
    Only Instance and Association providers are supported at the moment.  
    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.
   
   
   Level of coverage
   -----------------
   
   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
   ------------------
   
   Java documentation needs to be written for the classes and methods within JMPI.
   
  
   Testing
   -------
  
 poststarttests  This installment has a set of tests located under src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/
  
    This installment has a set of tests modelled after wetest/static.     Static/
   
         These tests have been modelled after wetest/static.
    For the tests, I had to modify "diff" to "diff -w", why that is needed I do not understand.    For the tests, I had to modify "diff" to "diff -w", why that is needed I do not understand.
  
      Providers/
  
 Building poststarttests:        These tests implement the many variants of provider interfaces.
  
    cd to .../src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/Load     Client/
    Issue "make"  
  
    This will load a schema to the repository and register the provider.        These tests test out the client code and various Java classes.
   
   
   Running the tests
   -----------------
  
   Tests are run with the following process.
   If the repository has not been built before then issue the following:
   
      cd to ${PEGASUS_HOME}/src/Pegasus/ProviderManager2/JMPI/
      Issue "make repository"
   
      This will load a schema to the repository and register the provider.
  
 Running poststarttests:  Next, run the tests.
  
    cd to .../src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests     cd to ${PEGASUS_HOME}/src/Pegasus/ProviderManager2/JMPI/
    Issue "find -name "*.rsp" -exec rm {} \;" to clean up *.rsp files     Issue "find -name \*.rsp -exec rm {} \;" to clean up *.rsp files from failed tests.
    Issue "make poststarttests"    Issue "make poststarttests"
  
  
 Samples Samples
   -------
   
    There are four sample providers located in
      ${PEGASUS_HOME}/src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/Providers/
   
      Associations/
   
         This provider implements an association provider.
   
      Instances/
   
         This provider implements an instance provider.
   
      Indications/
  
    The provider used for posstarttest,        This provider implements an indication provider.
         .../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     Properties/
         sample.  
  
         Notice that all provider classes must be accessibe via the CASSPATH environment setting.        This provider implements a property provider.
   
      There is also sample Java code that deals with CIM classes that is located in
      ${PEGASUS_HOME}/src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/Client/
  
  
 Provider Registration Provider Registration
   ---------------------
  
    JMPI providers are registered as usual. The Location property in P_ProviderModule has a special format.     JMPI providers are registered as usual. The Location property in PG_ProviderModule has a special format.
         The format is: <jar-file-name>:<provider-class-name>         The format is: <jar-file-name>:<provider-class-name>
  
    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";  
    };  
   
    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"
Line 154 
Line 221 
       InterfaceVersion = "2.0.0";       InterfaceVersion = "2.0.0";
       InterfaceVersion = "2.2.0";       InterfaceVersion = "2.2.0";
    Note that there is no difference in behavior in the three versions.    Note that there is no difference in behavior in the three versions.
   
      instance of PG_ProviderModule
      {
         Name             = "JMPIInstanceProviderModule";
         Location         = "JMPIInstanceProvider.jar:Instances/JMPIInstanceProvider";
         Vendor           = "OpenPegasus";
         Version          = "2.0.0";
         InterfaceType    = "JMPI";
         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";
  
      instance of PG_ProviderModule
      {
         Name             = "JMPIExpInstanceProviderModule";
         Location         = "JMPIExpInstanceProvider.jar:Instances/JMPIExpInstanceProvider";
         Vendor           = "OpenPegasus";
         Version          = "2.0.0";
         InterfaceType    = "JMPIExperimental";
         InterfaceVersion = "0.0.1";
      };
   
  
 Bug reports Bug reports
   -----------
  
    Use normal Pegasus bugzilla procedures to report malfunctions.    Use normal Pegasus bugzilla procedures to report malfunctions.
   
   
 Regards, Adrian Schuur.  
   
   


Legend:
Removed from v.1.8  
changed lines
  Added in v.1.13

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2