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

  1 karl  1.7 //%2006////////////////////////////////////////////////////////////////////////
  2           //
  3           // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
  4           // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
  5           // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
  6           // IBM Corp.; EMC Corporation, The Open Group.
  7           // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  8           // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
  9           // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10           // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11           // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 12           // EMC Corporation; Symantec Corporation; The Open Group.
 13           //
 14           // Permission is hereby granted, free of charge, to any person obtaining a copy
 15           // of this software and associated documentation files (the "Software"), to
 16           // deal in the Software without restriction, including without limitation the
 17           // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 18           // sell copies of the Software, and to permit persons to whom the Software is
 19           // furnished to do so, subject to the following conditions:
 20 mark.hamzy 1.8 //
 21 karl       1.7 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 22                // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 23                // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 24                // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 25                // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 26                // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 27                // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 28                // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 29                //
 30                //==============================================================================
 31 schuur     1.1 
 32 mark.hamzy 1.9 Java Manageability Programming Interface (JMPI)
 33                -----------------------------------------------
 34 schuur     1.1 
 35 mark.hamzy 1.9 JMPI is a bridge between clients and providers written in Java and the Open
 36                Pegasus project.
 37 schuur     1.1 
 38 mark.hamzy 1.13 More information on JMPI's status can be found at
 39 mark.hamzy 1.9     http://www.openpegasus.org/page.tpl?ggid=799
 40 r.kieninger 1.3  
 41 schuur      1.1  
 42                  Environment settings
 43 mark.hamzy  1.9  --------------------
 44 schuur      1.1  
 45 mark.hamzy  1.9  In order to build this support a few environment variables have to used.
 46                  The following script has been proven useful for setting up the build and execution environment.
 47                  You might need to adjust this to your system layout.
 48 schuur      1.1  
 49 mark.hamzy  1.9     an example setJPeg script file:
 50 schuur      1.1     export PEGASUS_HOME=`pwd`
 51 mark.hamzy  1.9     export PEGASUS_ROOT=${PEGASUS_HOME}
 52 schuur      1.1     export PEGASUS_PLATFORM=LINUX_IX86_GNU
 53 mark.hamzy  1.9     export PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER=true
 54 mark.hamzy  1.12    export PEGASUS_JVM=sun
 55 mark.hamzy  1.9     export JAVA_SDK=/usr/java/j2sdk1.4.2_08
 56                     export JAVA_SDKINC=${JAVA_SDK}/include
 57 mark.hamzy  1.12    export PEGASUS_JAVA_ARCH=i386
 58 mark.hamzy  1.13    export PEGASUS_JAVA_TYPE=client
 59 mark.hamzy  1.12    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}
 60 mark.hamzy  1.9     export PATH=${JAVA_SDK}/bin/:${PEGASUS_HOME}/bin:${PATH}
 61                     export CLASSPATH=${CLASSPATH}:${PEGASUS_HOME}/lib/JMPIImpl.jar
 62                  
 63 mark.hamzy  1.12 Lets walk through the manditory environment variables.  The first tells Pegasus to build the
 64                  Java provider manager.
 65                     export PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER=true
 66                  
 67                  The second says which JRE to use.  The choices are as follows:
 68                     export PEGASUS_JVM=gcj     Gnu's jvm (ex: gcj (GCC) 4.1.1 20061011 (Red Hat 4.1.1-30))
 69                     export PEGASUS_JVM=sun	Sun's jvm (ex: j2sdk1.4.2_07)
 70                     export PEGASUS_JVM=ibm	IBM's jvm (ex: IBMJava2-142)
 71                     export PEGASUS_JVM=bea	Suse's IBM jvm (ex: BEAJava2-1.4.2)
 72 mark.hamzy  1.9  So, pick one and export that variable to the environment.  For example,
 73 mark.hamzy  1.12    export PEGASUS_JVM=sun
 74 mark.hamzy  1.11 NOTE: The gcj and sun options were the only tested JVMs.
 75 mark.hamzy  1.12 NOTE: gcj is only supported using gcc version 4.1.1 or later.
 76                  
 77                  The third and fourth say where the JRE libraries and header files are located.  This may or may not
 78                  be necessary depending upon the compiler's default search paths.
 79                  Since we are using Sun's JRE, point to Sun's paths.
 80                     export JAVA_SDK=/usr/java/j2sdk1.4.2_08
 81                     export JAVA_SDKINC=${JAVA_SDK}/include
 82                  
 83                  The fifth variable defines the Java architecture of the JMV
 84                     export PEGASUS_JAVA_ARCH=i386
 85                  
 86 mark.hamzy  1.13 The sixth variable defines which version of the jvm library to link to (the
 87                  client or the server).
 88                     export PEGASUS_JAVA_TYPE=client
 89                  
 90                  As a test to make sure your environment variables are correct
 91                     ls ${JAVA_SDK}/jre/lib/${PEGASUS_JAVA_ARCH}/${PEGASUS_JAVA_TYPE}
 92                  should show you libjvm.so for Sun's JRE.
 93                  
 94                  The seventh may be necessary to tell the linker where to load the JRE libraries.
 95 mark.hamzy  1.12    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}
 96                  
 97 mark.hamzy  1.13 The eighth one may be necessary to get the JVM's executable files into the PATH.
 98 mark.hamzy  1.12    export PATH=${JAVA_SDK}/bin/:${PEGASUS_HOME}/bin:${PATH}
 99                  
100 mark.hamzy  1.13 The nineth tells the JRE to include JMPI's Java classes.
101 mark.hamzy  1.12    export CLASSPATH=${CLASSPATH}:${PEGASUS_HOME}/lib/JMPIImpl.jar
102 schuur      1.1  
103 mark.hamzy  1.9  There are a couple of optional environment variables to determine how the JRE is initialized.  These are
104                  as follows (the variable name and what JRE option that it corresponds to):
105 mark.hamzy  1.5  
106 mark.hamzy  1.9  PEGASUS_JMPI_MAX_HEAP               -Xmx
107                  PEGASUS_JMPI_INITIAL_HEAP           -Xms
108                  PEGASUS_JMPI_JAVA_THREAD_STACK_SIZE -Xss
109 mark.hamzy  1.4  
110 mark.hamzy  1.9  So, for example, you would perform the following if you want to change the maximum heap size to 128 megabytes.
111 mark.hamzy  1.4  
112 mark.hamzy  1.9  export PEGASUS_JMPI_MAX_HEAP=128m
113 mark.hamzy  1.4  
114 mark.hamzy  1.9  There is a new optional environment variable that tells the JVM to output more debugging information.  The variable name
115                  is called PEGASUS_JMPI_VERBOSE.  An example usage is as follows:
116 mark.hamzy  1.4  
117 mark.hamzy  1.9  export PEGASUS_JMPI_VERBOSE="jni,class"
118 mark.hamzy  1.6  
119 mark.hamzy  1.9  This will tell the JVM to output debug information on the JNI layer and class loading.
120 mark.hamzy  1.6  
121 mark.hamzy  1.9  When using this script, place a copy of this script above your PEGASUS_HOME directory.
122                  "cd" to PEGASUS_HOME, and issue ". ./setJPeg". Then do a normal make.
123 mark.hamzy  1.6  
124 schuur      1.1  
125 mark.hamzy  1.9  Known restrictions
126                  ------------------
127 schuur      1.1  
128 mark.hamzy  1.9  This installment has the following restrictios:
129 schuur      1.1  
130 mark.hamzy  1.8     Unloading of idle providers is not supported and Java will increase the memory footprint.
131 mark.hamzy  1.9     Java 1.5 is not currently supported.
132                  
133                  
134                  Level of coverage
135                  -----------------
136                  
137                  All interfaces to a provider have a sample provider written for them and are part of the
138                  testcases.  All main CIM java classes have testcases written for them as well.
139                  
140                  
141                  Outstanding issues
142                  ------------------
143                  
144                  Java documentation needs to be written for the classes and methods within JMPI.
145                  
146                  
147                  Testing
148                  -------
149                  
150                  This installment has a set of tests located under src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/
151 schuur      1.1  
152 mark.hamzy  1.9     Static/
153 schuur      1.1  
154 mark.hamzy  1.9        These tests have been modelled after wetest/static.
155                        For the tests, I had to modify "diff" to "diff -w", why that is needed I do not understand.
156 schuur      1.1  
157 mark.hamzy  1.9     Providers/
158 schuur      1.1  
159 mark.hamzy  1.9        These tests implement the many variants of provider interfaces.
160 schuur      1.1  
161 mark.hamzy  1.9     Client/
162 schuur      1.1  
163 mark.hamzy  1.9        These tests test out the client code and various Java classes.
164                  
165                  
166                  Running the tests
167                  -----------------
168                  
169                  Tests are run with the following process.
170                  If the repository has not been built before then issue the following:
171                  
172                     cd to ${PEGASUS_HOME}/src/Pegasus/ProviderManager2/JMPI/
173                     Issue "make repository"
174 schuur      1.1  
175                     This will load a schema to the repository and register the provider.
176                  
177 mark.hamzy  1.9  Next, run the tests.
178 schuur      1.1  
179 mark.hamzy  1.9     cd to ${PEGASUS_HOME}/src/Pegasus/ProviderManager2/JMPI/
180                     Issue "find -name \*.rsp -exec rm {} \;" to clean up *.rsp files from failed tests.
181 schuur      1.1     Issue "make poststarttests"
182                  
183                  
184                  Samples
185 mark.hamzy  1.9  -------
186                  
187                   There are four sample providers located in
188                     ${PEGASUS_HOME}/src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/Providers/
189                  
190                     Associations/
191                  
192                        This provider implements an association provider.
193                  
194                     Instances/
195                  
196                        This provider implements an instance provider.
197                  
198                     Indications/
199 schuur      1.1  
200 mark.hamzy  1.9        This provider implements an indication provider.
201 schuur      1.1  
202 mark.hamzy  1.9     Properties/
203 schuur      1.1  
204 mark.hamzy  1.9        This provider implements a property provider.
205                  
206                     There is also sample Java code that deals with CIM classes that is located in
207                     ${PEGASUS_HOME}/src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/Client/
208 schuur      1.1  
209                  
210                  Provider Registration
211 mark.hamzy  1.9  ---------------------
212 schuur      1.1  
213 mark.hamzy  1.9     JMPI providers are registered as usual. The Location property in PG_ProviderModule has a special format.
214 schuur      1.1  	The format is: <jar-file-name>:<provider-class-name>
215                  
216 mark.hamzy  1.8     JMPI providers now fall into two groups.
217                     1) Legacy providers use:
218                        InterfaceType = "JMPI"
219                     and use one of the 3 following based on existing JMPI samples:
220                        InterfaceVersion = "1.0.0";
221                        InterfaceVersion = "2.0.0";
222                        InterfaceVersion = "2.2.0";
223                     Note that there is no difference in behavior in the three versions.
224 mark.hamzy  1.9  
225                     instance of PG_ProviderModule
226                     {
227                        Name             = "JMPIInstanceProviderModule";
228                        Location         = "JMPIInstanceProvider.jar:Instances/JMPIInstanceProvider";
229                        Vendor           = "OpenPegasus";
230                        Version          = "2.0.0";
231                        InterfaceType    = "JMPI";
232                        InterfaceVersion = "1.0.0";
233                     };
234                  
235 mark.hamzy  1.8     2) New style providers use:
236                        InterfaceType = "JMPIExperimental"
237                     and:
238                        InterfaceVersion = "0.0.1";
239                  
240 mark.hamzy  1.9     instance of PG_ProviderModule
241                     {
242                        Name             = "JMPIExpInstanceProviderModule";
243                        Location         = "JMPIExpInstanceProvider.jar:Instances/JMPIExpInstanceProvider";
244                        Vendor           = "OpenPegasus";
245                        Version          = "2.0.0";
246                        InterfaceType    = "JMPIExperimental";
247                        InterfaceVersion = "0.0.1";
248                     };
249                  
250 schuur      1.1  
251                  Bug reports
252 mark.hamzy  1.9  -----------
253 schuur      1.1  
254 r.kieninger 1.3     Use normal Pegasus bugzilla procedures to report malfunctions.

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2