1 /*
2 (C) Copyright IBM Corp. 2006, 2013
3
4 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
5 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
6 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
7
8 You can obtain a current copy of the Eclipse Public License from
9 http://www.opensource.org/licenses/eclipse-1.0.php
10
11 @author : Alexander Wolf-Reber, a.wolf-reber@de.ibm.com
12 *
13 * Flag Date Prog Description
14 * -------------------------------------------------------------------------------
15 * 1565892 2006-11-08 lupusalex Make SBLIM client JSR48 compliant
16 * 1688273 2007-04-19 lupusalex Full support of HTTP trailers
17 * 1815707 2007-10-30 ebak TLS support
18 * 1827728 2007-11-12 ebak embeddedInstances: attribute EmbeddedObject not set
19 * 1848607 2007-12-11 ebak Strict EmbeddedObject types
20 * 2003590 2008-06-30 blaschke-oss Change licensing from CPL to EPL
21 * 2372030 2008-12-01 blaschke-oss Add property to control synchronized SSL handshaking
22 * 2524131 2009-01-21 raman_arora Upgrade client to JDK 1.5 (Phase 1)
23 * 2763216 2009-04-14 blaschke-oss Code cleanup: visible spelling/grammar errors
24 * 2846231 2009-09-23 rgummada connection failure on CIMOM w/o user/pw
25 * 2930341 2010-01-12 blaschke-oss Sync up WBEMClientConstants with JSR48 1.0.0
26 * 2957387 2010-03-03 blaschke-oss EmbededObject XML attribute must not be all uppercases
27 * 2970881 2010-03-15 blaschke-oss Add property to control EmbeddedObject case
28 * 3046073 2010-09-07 blaschke-oss Performance hit due to socket conn. creation with timeout
29 * 3111718 2010-11-18 blaschke-oss org.sblim.cimclient SSL Code is using the wrong SSL Property
30 * 3185763 2011-02-25 blaschke-oss Reliable indication support - Phase 1
31 * 3195069 2011-02-28 blaschke-oss Need support to disable SSL Handshake
32 * 3197423 2011-03-02 blaschke-oss Server authentication with PegasusLocalAuthInfo failing
33 * 3277928 2011-04-06 blaschke-oss CIM-XML tracing cannot be enabled in the field
34 * 3206904 2011-05-03 blaschke-oss Indication listener deadlock causes JVM to run out sockets
35 * 3288721 2011-05-20 blaschke-oss Need the function of indication reordering
36 * 3459036 2011-12-13 blaschke-oss Linked list for RI queue not efficient for many LDs
37 * 3485074 2012-02-06 blaschke-oss An Indication trace request
38 * 3492246 2012-02-23 blaschke-oss Rename new indication trace property
39 * 3492214 2012-02-23 blaschke-oss Add a SenderIPAddress property indications
40 * 3492224 2012-02-23 blaschke-oss Need two different timeouts for Socket connections
41 * 3521157 2012-05-10 blaschke-oss JSR48 1.0.0: PROP_ENABLE_*_LOGGING is Level, not 0/1
42 * 3524050 2012-06-06 blaschke-oss Improve WWW-Authenticate in HTTPClient.java
43 * 3536399 2012-08-25 hellerda Add client/listener peer authentication properties
44 * 3572993 2012-10-01 blaschke-oss parseDouble("2.2250738585072012e-308") DoS vulnerability
45 * 3598613 2013-01-11 blaschke-oss different data type in cim instance and cim object path
46 * 2618 2013-02-27 blaschke-oss Need to add property to disable weak cipher suites for the secure indication
47 * 2628 2013-03-26 blaschke-oss Limit size of LinkedList of CIMEvents to be dispatched
48 * 2635 2013-05-16 blaschke-oss Slowloris DoS attack for CIM indication listener port
49 * 2642 2013-05-21 blaschke-oss Seperate properties needed for cim client and listener to filter out ciphers
50 * 2647 2013-07-01 blaschke-oss Add two ssl protocol properties for http server and client
51 * 2654 2013-07-29 blaschke-oss Check jcc idle time with CIMOM keepalive timeout to avoid EOF
52 * 2151 2013-08-20 blaschke-oss gzip compression not supported
53 * 2711 2013-11-13 blaschke-oss LOCALNAMESPACEPATH allows 0 NAMESPACE children
54 */
55 package org.metricshub.wbem.sblim.cimclient;
56
57 /*-
58 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
59 * WBEM Java Client
60 * ჻჻჻჻჻჻
61 * Copyright 2023 - 2025 MetricsHub
62 * ჻჻჻჻჻჻
63 * Licensed under the Apache License, Version 2.0 (the "License");
64 * you may not use this file except in compliance with the License.
65 * You may obtain a copy of the License at
66 *
67 * http://www.apache.org/licenses/LICENSE-2.0
68 *
69 * Unless required by applicable law or agreed to in writing, software
70 * distributed under the License is distributed on an "AS IS" BASIS,
71 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
72 * See the License for the specific language governing permissions and
73 * limitations under the License.
74 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
75 */
76
77 /**
78 * The interface WBEMConfigurationProperties contains the names of all
79 * configuration properties that are recognized by the CIM Client.
80 *
81 */
82 public interface WBEMConfigurationProperties {
83 /**
84 * A URL string giving the location of the CIM client config file. <br />
85 * <br />
86 * By default the SBLIM CIM Client looks for
87 * <ul>
88 * <li>file:sblim-cim-client2.properties</li>
89 * <li>file:%USER_HOME%/sblim-cim-client2.properties</li>
90 * <li>file:/etc/java/sblim-cim-client2.properties</li>
91 * </ul>
92 * The first file found will be used. The default search list is not applied
93 * if this property is set, even if the given URL does not exist.<br />
94 */
95 public static final String CONFIG_URL = "sblim.wbem.configURL";
96
97 /**
98 * Sets the minimum level for messages to be written to the log file.<br />
99 * <br />
100 * Type: <code>Discrete</code><br />
101 * Recognition: <code>Startup</code><br />
102 * Range: <code>OFF, SEVERE, WARNING, INFO, CONFIG, ALL</code><br />
103 * Default: <code>OFF</code>, which disables file logging completely.
104 */
105 public static final String LOG_FILE_LEVEL = "sblim.wbem.logFileLevel";
106
107 /**
108 * A string specifying the location of the log file. The string may include
109 * the following special components that will be replaced at runtime:<br />
110 * <ul>
111 * <table border="1">
112 * <tr>
113 * <td>/</td>
114 * <td>the local pathname separator</td>
115 * </tr>
116 * <tr>
117 * <td>%t</td>
118 * <td>the system temporary directory</td>
119 * </tr>
120 * <tr>
121 * <td>%h</td>
122 * <td>the value of the "user.home" system property</td>
123 * </tr>
124 * <tr>
125 * <td>%g</td>
126 * <td>the generation number to distinguish rotated logs</td>
127 * </tr>
128 * <tr>
129 * <td>%u</td>
130 * <td>a unique number to resolve conflicts</td>
131 * </tr>
132 * <tr>
133 * <td>%%</td>
134 * <td>translates to a single percent sign "%"</td>
135 * </tr>
136 * </table>
137 * </ul>
138 * Thus for example a pattern of <code>%t/java%g.log</code> with a count of
139 * 2 would typically cause log files to be written on Unix to
140 * /var/tmp/java2.log<br />
141 * <br />
142 * Type: <code>String</code><br />
143 * Recognition: <code>Startup</code><br />
144 * Default: <code>%t/cimclient_log_%g.txt</code>.
145 */
146 public static final String LOG_FILE_LOCATION = "sblim.wbem.logFileLocation";
147
148 /**
149 * Sets the maximum size in bytes of a single log file. When the limit is
150 * reached a new file is created. A limit of zero will create a new log file
151 * for every log record !<br />
152 * <br />
153 * Type: <code>Integer</code><br />
154 * Recognition: <code>Startup</code><br />
155 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
156 * Default: <code>100.000</code><br />
157 */
158 public static final String LOG_FILE_SIZE_LIMIT = "sblim.wbem.logFileSizeLimit";
159
160 /**
161 * Sets the number of log files to cycle through. When the number is
162 * exceeded the oldest file is dropped.<br />
163 * <br />
164 * Type: <code>Integer</code><br />
165 * Recognition: <code>Startup</code><br />
166 * Range: <code>1 .. Integer.MAX_VALUE</code><br />
167 * Default: <code>5</code><br />
168 */
169 public static final String LOG_FILE_COUNT = "sblim.wbem.logFileCount";
170
171 /**
172 * Sets the minimum level for messages to be written to the console logger
173 * file.<br />
174 * <br />
175 * Type: <code>Discrete</code><br />
176 * Recognition: <code>Startup</code><br />
177 * Range: <code>OFF, SEVERE, WARNING, INFO, CONFIG, ALL</code><br />
178 * Default: <code>OFF</code>, which disables console logging completely.
179 */
180 public static final String LOG_CONSOLE_LEVEL = "sblim.wbem.logConsoleLevel";
181
182 /**
183 * Sets the type of the console logger. Maybe either message log or trace
184 * log.<br />
185 * <br />
186 * Type: <code>Discrete</code><br />
187 * Recognition: <code>Startup</code><br />
188 * Range: <code>MESSAGE, TRACE</code><br />
189 * Default: <code>MESSAGE</code>.
190 */
191 public static final String LOG_CONSOLE_TYPE = "sblim.wbem.logConsoleType";
192
193 /**
194 * Sets the minimum level for messages to be written to the trace file.<br />
195 * <br />
196 * Type: <code>Discrete</code><br />
197 * Recognition: <code>Startup</code><br />
198 * Range:
199 * <code>OFF, SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, ALL</code><br />
200 * Default: <code>OFF</code>, which disables file tracing completely<br />
201 */
202 public static final String TRACE_FILE_LEVEL = "sblim.wbem.traceFileLevel";
203
204 /**
205 * A string specifying the location of the trace file. The string may
206 * include the following special components that will be replaced at
207 * runtime:<br />
208 * <ul>
209 * <table border="1">
210 * <tr>
211 * <td>/</td>
212 * <td>the local pathname separator</td>
213 * </tr>
214 * <tr>
215 * <td>%t</td>
216 * <td>the system temporary directory</td>
217 * </tr>
218 * <tr>
219 * <td>%h</td>
220 * <td>the value of the "user.home" system property</td>
221 * </tr>
222 * <tr>
223 * <td>%g</td>
224 * <td>the generation number to distinguish rotated logs</td>
225 * </tr>
226 * <tr>
227 * <td>%u</td>
228 * <td>a unique number to resolve conflicts</td>
229 * </tr>
230 * <tr>
231 * <td>%%</td>
232 * <td>translates to a single percent sign "%"</td>
233 * </tr>
234 * </table>
235 * </ul>
236 * Thus for example a pattern of <code>%t/java%g.log</code> with a count of
237 * 2 would typically cause log files to be written on Unix to
238 * /var/tmp/java2.log<br />
239 * <br />
240 * Type: <code>String</code><br />
241 * Recognition: <code>Startup</code><br />
242 * Default: <code>%t/cimclient_trace_%g.txt</code><br />
243 */
244 public static final String TRACE_FILE_LOCATION = "sblim.wbem.traceFileLocation";
245
246 /**
247 * Sets the maximum size in bytes of a single log file. When the limit is
248 * reached a new file is created. A limit of zero creates a new file for
249 * each trace record !<br />
250 * <br />
251 * Type: <code>Integer</code><br />
252 * Recognition: <code>Startup</code><br />
253 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
254 * Default: <code>1.000.000</code><br />
255 */
256 public static final String TRACE_FILE_SIZE_LIMIT = "sblim.wbem.traceFileSizeLimit";
257
258 /**
259 * Sets the number of log files to cycle through. When the number is
260 * exceeded the oldest file is dropped.<br />
261 * <br />
262 * Type: <code>Integer</code><br />
263 * Recognition: <code>Startup</code><br />
264 * Range: <code>1 .. Integer.MAX_VALUE</code><br />
265 * Default: <code>5</code><br />
266 */
267 public static final String TRACE_FILE_COUNT = "sblim.wbem.traceFileCount";
268
269 /**
270 * The timeout for http requests. A timeout of zero is interpreted as
271 * infinite timeout.<br />
272 * <br />
273 * Type: <code>Integer</code><br />
274 * Unit: <code>Milliseconds</code><br />
275 * Recognition: <code>Anytime</code><br />
276 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
277 * Default: <code>0</code><br />
278 */
279 public static final String HTTP_TIMEOUT = "sblim.wbem.httpTimeout";
280
281 /**
282 * The size of the internal http connection pools. Each
283 * <code>WBEMClient</code> instance has it's own http connection pool. A
284 * positive value defines the number of connections, zero that no connection
285 * will be reused, and -1 all connections will be reused (when it's
286 * possible).<br />
287 * <br />
288 * Type: <code>Integer</code><br />
289 * Recognition: <code>Anytime</code><br />
290 * Range: <code>-1, 0, 1 .. Integer.MAX_VALUE</code><br />
291 * Default: <code>16</code><br />
292 */
293 public static final String HTTP_POOL_SIZE = "sblim.wbem.httpPoolSize";
294
295 /**
296 * The Java class name of the authentication module to use for http
297 * authentication. <br />
298 * <br />
299 * Type: <code>String</code><br />
300 * Recognition: <code>On next authentication</code><br />
301 * Range:
302 *
303 * <code>org.sblim.cimclient.internal.http.WwwAuthInfo, org.sblim.cimclient.internal.http.PegasusLocalAuthInfo or any self-written subclass of org.sblim.cimclient.internal.http.AuthorizationInfo</code>
304 * <br />
305 * Default: <code>org.sblim.cimclient.internal.http.WwwAuthInfo</code><br />
306 */
307 public static final String HTTP_AUTHENTICATION_MODULE = "sblim.wbem.httpAuthModule";
308
309 /**
310 * The WWW-Authenticate information to use when sending the first request to
311 * a server. <br />
312 * <br />
313 * Note: This string must exactly match what the server returns in the<br />
314 * WWW-Authenticate field of an HTTP 401 response when authentication<br />
315 * fails. The following two strings are examples:<br />
316 * <br />
317 *
318 *
319 * Basic realm="Secure Area"
320 * Digest realm="testrealm@host.com",qop="auth,auth-int",nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",opaque="5ccc069c403ebaf9f0171e9517f40e41"
321 *
322 *
323 * Type: <code>String</code><br />
324 * Recognition: <code>On next authentication</code><br />
325 * Range: <code>Basic, Digest</code><br />
326 * Default: <code>none</code><br />
327 */
328 public static final String HTTP_WWW_AUTHENTICATE_INFO = "sblim.wbem.httpWwwAuthenticateInfo";
329
330 /**
331 * Specifies if MPOST is used for transmitting http messages. If false, POST
332 * is used.<br />
333 * <br />
334 * Type: <code>Boolean</code><br />
335 * Recognition: <code>Anytime</code><br />
336 * Range: <code>true, false</code><br />
337 * Default: <code>true</code><br />
338 */
339 public static final String HTTP_USE_MPOST = "sblim.wbem.httpMPOST";
340
341 /**
342 * Specifies if chunking is used for transmitting http messages.<br />
343 * <br />
344 * Type: <code>Boolean</code><br />
345 * Recognition: <code>Anytime</code><br />
346 * Range: <code>true, false</code><br />
347 * Default: <code>true</code><br />
348 */
349 public static final String HTTP_USE_CHUNKING = "sblim.wbem.httpChunking";
350
351 /**
352 * Specifies the http protocol version to use. This option is useful if the
353 * protocol negotiation fails.<br />
354 * <br />
355 * Type: <code>String</code><br />
356 * Recognition: <code>Anytime</code><br />
357 * Range: <code>1.0, 1.1</code><br />
358 * Default: <code>1.1</code><br />
359 */
360 public static final String HTTP_VERSION = "sblim.wbem.httpVersion";
361
362 /**
363 * Specifies how often the client will retry to connect to a CIMOM which
364 * refused the connection in the first place.<br />
365 * <br />
366 * Type: <code>Integer</code><br />
367 * Recognition: <code>Anytime</code><br />
368 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
369 * Default: <code>0</code><br />
370 */
371 public static final String HTTP_CONNECTION_RETRIES = "sblim.wbem.httpConnectionRetries";
372
373 /**
374 * Specifies if the client will discard and request again http documents
375 * with less than a given number of bytes.<br />
376 * <br />
377 * Type: <code>Boolean</code><br />
378 * Recognition: <code>Anytime</code><br />
379 * Range: <code>true, false</code><br />
380 * Default: <code>false</code><br />
381 */
382 public static final String HTTP_ENABLE_CONTENT_LENGTH_RETRY = "sblim.wbem.httpEnableContentLengthRetry";
383
384 /**
385 * Specifies the threshold above which a http document is regarded as valid
386 * by the content length retry algorithm.<br />
387 * <br />
388 * Type: <code>Integer</code><br />
389 * Recognition: <code>Anytime</code><br />
390 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
391 * Default: <code>50</code><br />
392 */
393 public static final String HTTP_CONTENT_LENGTH_THRESHOLD = "sblim.wbem.httpContentLengthThreshold";
394
395 /**
396 * The file path of the SSL keystore.<br />
397 * <br />
398 * Type: <code>String</code><br />
399 * Recognition: <code>On next SSL connection</code><br />
400 * Default: none<br />
401 */
402 public static final String KEYSTORE_PATH = "javax.net.ssl.keyStore";
403
404 /**
405 * The type of the keystore.<br />
406 * <br />
407 * Type: <code>String</code><br />
408 * Recognition: <code>On next SSL connection</code><br />
409 * Range: <code>PKCS12, JKS, ...</code><br />
410 * Default: <code>JKS</code><br />
411 */
412 public static final String KEYSTORE_TYPE = "javax.net.ssl.keyStoreType";
413
414 /**
415 * The password of the keystore.<br />
416 * <br />
417 * Type: <code>String</code><br />
418 * Recognition: <code>On next SSL connection</code><br />
419 * Default: none<br />
420 */
421 public static final String KEYSTORE_PASSWORD = "javax.net.ssl.keyStorePassword";
422
423 /**
424 * The file path of the SSL truststore.<br />
425 * <br />
426 * Type: <code>String</code><br />
427 * Recognition: <code>On next SSL connection</code><br />
428 * Default: none<br />
429 */
430 public static final String TRUSTSTORE_PATH = "javax.net.ssl.trustStore";
431
432 /**
433 * The type of the truststore.<br />
434 * <br />
435 * Type: <code>String</code><br />
436 * Recognition: <code>On next SSL connection</code><br />
437 * Range: <code>PKCS12, JKS, ...</code><br />
438 * Default: <code>JKS</code><br />
439 */
440 public static final String TRUSTSTORE_TYPE = "javax.net.ssl.trustStoreType";
441
442 /**
443 * The password of the truststore.<br />
444 * <br />
445 * Type: <code>String</code><br />
446 * Recognition: <code>On next SSL connection</code><br />
447 * Default: none<br />
448 */
449 public static final String TRUSTSTORE_PASSWORD = "javax.net.ssl.trustStorePassword";
450
451 /**
452 * The provider to use for creation of SSL client sockets.<br />
453 * <br />
454 * <em>Security property: JRE global access via <code>Security.setProperty()</code> and <code>Security.getProperty()</code> !</em>
455 * <br />
456 * <br />
457 * Type: <code>Java class name</code><br />
458 * Recognition: <code>On next SSL connection</code><br />
459 * Default: <code>Security.getProviders("SSLContext.SSL")</code><br />
460 */
461 public static final String SSL_SOCKET_PROVIDER = "sblim.wbem.sslSocketProvider";
462
463 /**
464 * The provider to use for creation of SSL server sockets.<br />
465 * <br />
466 * <em>Security property: JRE global access via <code>Security.setProperty()</code> and <code>Security.getProperty()</code> !</em>
467 * <br />
468 * <br />
469 * Type: <code>Java class name</code><br />
470 * Recognition: <code>On next SSL connection</code><br />
471 * Default: <code>Security.getProviders("SSLContext.SSL")</code><br />
472 */
473 public static final String SSL_SERVER_SOCKET_PROVIDER = "sblim.wbem.sslServerSocketProvider";
474
475 /**
476 * The protocol used for SSLContext.getInstance(String protocol). For
477 * IBMJSSE2 provider it can be "SSL_TLS".<br/>
478 * <br/>
479 * Security property: JRE global access via
480 * <code>Security.setProperty()</code> and
481 * <code>Security.getProperty()</code><br/>
482 * Recognition: <code>On next SSL connection</code><br/>
483 * Default: "SSL"
484 */
485 public static final String SSL_PROTOCOL = "ssl.Protocol";
486
487 /**
488 * The protocol used for SSLContext.getInstance(String protocol) by a
489 * client. This property overrides any value set via the ssl.Protocol
490 * property.<br/>
491 * <br/>
492 * Recognition: <code>On next SSL connection</code><br/>
493 * Default: none
494 */
495 public static final String SSL_CLIENT_PROTOCOL = "sblim.wbem.sslClientProtocol";
496
497 /**
498 * The protocol used for SSLContext.getInstance(String protocol) by a
499 * listener. This property overrides any value set via the ssl.Protocol
500 * property.<br/>
501 * <br/>
502 * Recognition: <code>On next SSL connection</code><br/>
503 * Default: none
504 */
505 public static final String SSL_LISTENER_PROTOCOL = "sblim.wbem.sslListenerProtocol";
506
507 /**
508 * The key manager factory algorithm name.<br />
509 * <br />
510 * <em>Security property: JRE global access via <code>Security.setProperty()</code> and <code>Security.getProperty()</code> !</em>
511 * <br />
512 * <br />
513 * Type: <code>String</code><br />
514 * Recognition: <code>On next SSL connection</code><br />
515 * Range: <code>IbmX509, SunX509, ...</code><br />
516 * Default: <code>JRE specific</code><br />
517 */
518 public static final String SSL_KEYMANAGER_ALGORITHM = "ssl.KeyManagerFactory.algorithm";
519
520 /**
521 * The trust manager factory algorithm name.<br />
522 * <br />
523 * <em>Security property: JRE global access via <code>Security.setProperty()</code> and <code>Security.getProperty()</code> !</em>
524 * <br />
525 * <br />
526 * Type: <code>String</code><br />
527 * Recognition: <code>On next SSL connection</code><br />
528 * Range: <code>IbmX509, SunX509, ...</code><br />
529 * Default: <code>JRE specific</code><br />
530 */
531 public static final String SSL_TRUSTMANAGER_ALGORITHM = "ssl.TrustManagerFactory.algorithm";
532
533 /**
534 * Determines if a HTTPS client will attempt to authenticate the server
535 * (i.e. CIMOM) by verifying the server certificate.<br />
536 * <br />
537 * If false, do not attempt verification. If true, the client will attempt
538 * to verify the server certificate against the contents of the truststore;
539 * in this case a valid path must be defined in "javax.net.ssl.trustStore"
540 * or no connection will be permitted. <br />
541 * <br />
542 * Type: <code>Boolean</code><br />
543 * Recognition: On initialization of a new client<br />
544 * Default: <code>false</code><br />
545 */
546 public static final String SSL_CLIENT_PEER_VERIFICATION = "sblim.wbem.sslClientPeerVerification";
547
548 /**
549 * Determines how a HTTPS listener will handle authentication of a client
550 * (i.e. indication sender):<br />
551 * <ul>
552 * <table border="1">
553 * <tr>
554 * <td>ignore</td>
555 * <td>do not examine the client certificate</td>
556 * </tr>
557 * <tr>
558 * <td>accept</td>
559 * <td>examine client certificate if presented; do not fail if not presented
560 * </td>
561 * </tr>
562 * <tr>
563 * <td>require</td>
564 * <td>examine client certificate; fail if not presented</td>
565 * </tr>
566 * </table>
567 * </ul>
568 * If set to "ignore", do not attempt verification. If set to "accept" or
569 * "require", the listener will attempt to verify the sender against the
570 * contents of the truststore; in this case a valid path must be defined in
571 * "javax.net.ssl.trustStore" or no connection will be permitted. <br />
572 * <br />
573 * Type: <code>String</code><br />
574 * Recognition: On next call to addListener()<br />
575 * Default: <code>ignore</code><br />
576 */
577 public static final String SSL_LISTENER_PEER_VERIFICATION = "sblim.wbem.sslListenerPeerVerification";
578
579 /**
580 * The comma-separated list of cipher suites that are to be disabled by the
581 * client when connecting via an SSL socket. In general, this is the list of
582 * cipher suites considered "too weak" for use in a particular environment.<br />
583 * <br />
584 * Type: <code>String</code><br />
585 * Recognition: <code>On initialization of a new client</code><br />
586 * Default: <code>none</code><br />
587 */
588 public static final String SSL_CLIENT_CIPHER_SUITES_TO_DISABLE = "sblim.wbem.sslClientCipherSuitesToDisable";
589
590 /**
591 * The comma-separated list of cipher suites that are to be disabled by the
592 * listener when connecting via an SSL socket. In general, this is the list
593 * of cipher suites considered "too weak" for use in a particular
594 * environment.<br />
595 * <br />
596 * Type: <code>String</code><br />
597 * Recognition: <code>On next call to addListener()</code><br />
598 * Default: <code>none</code><br />
599 */
600 public static final String SSL_LISTENER_CIPHER_SUITES_TO_DISABLE = "sblim.wbem.sslListenerCipherSuitesToDisable";
601
602 /**
603 * Specifies the XML parser for parsing CIM-XML responses.<br />
604 * The SAX parser is the default choice since it is fast, resource saving
605 * and interoperable. The streaming algorithm of the PULL parser uses the
606 * fewest possible resources but at the prize to keep the CIMOMs response
607 * open for a long time. That works with many but not all CIMOMs. The DOM
608 * parser is slow and resource hungry but nice to debug.<br />
609 * <br />
610 * Type: <code>Discrete</code><br />
611 * Recognition: <code>Anytime</code><br />
612 * Range: <code>DOM, PULL, SAX</code><br />
613 * Default: <code>SAX</code><br />
614 */
615 public static final String CIMXML_PARSER = "sblim.wbem.cimxmlParser";
616
617 /**
618 * Enables or disables tracing of CIM-XML communication. The trace is sent
619 * to an output stream the application has to set via the LogAndTraceManager
620 * class.<br />
621 * <br />
622 * Type: <code>Boolean</code><br />
623 * Recognition: <code>Anytime</code><br />
624 * Range: <code>true, false</code><br />
625 * Default: <code>false</code><br />
626 */
627 public static final String CIMXML_TRACING = "sblim.wbem.cimxmlTracing";
628
629 /**
630 * Specifies the stream to use for tracing CIM-XML communication in the
631 * event the application does not set one via the LogAndTraceManager class.
632 * This stream can either be standard output (System.out), standard error
633 * output (System.err) or a filename to be opened by the client.
634 *
635 * Note: This property has no effect unless sblim.wbem.cimxmlTracing is set
636 * to true.
637 *
638 * Note: This property has no effect if the application already set the
639 * stream prior to client initialization. If the application sets the stream
640 * after client initialization, the stream specified by this property is
641 * overridden.
642 *
643 * Note: If a filename is specified, it is opened and all CIM-XML
644 * communication is written to it - no checks are made for an existing file
645 * or for filling up the disk. USE WITH CAUTION.
646 *
647 * Type: <code>String</code><br />
648 * Recognition: <code>Startup</code><br />
649 * Range: <code>System.out, System.err, filename</code><br />
650 * Default: <code>none</code><br />
651 */
652 public static final String CIMXML_TRACE_STREAM = "sblim.wbem.cimxmlTraceStream";
653
654 /**
655 *
656 * Tells the XML builder how to sign embedded objects. This is necessary due to
657 * the non-consequent handling of embedded objects on different CIMOMs.
658 * "AttribOnly" - only the EmbeddedObject="instance/object" is used
659 * (should be good for Pegasus)
660 * "EmbObjQuali" - on qualified CIM-XML elements the EmbeddedObject qualifier is used
661 * for embedded classes and instances
662 * "EmbObjAndEmbInstQuali" -
663 * on qualified CIM-XML elements the EmbeddedObject qualifier is used
664 * for embedded classes and the EmbeddedInstance="className" qualifier
665 * is used for embedded instances
666 * Type: String
667 * Recognition: Anytime
668 * Range: AttribOnly, EmbObjQuali, EmbObjAndEmbInstQuali
669 * Default: AttribOnly
670 *
671 */
672 public static final String CIMXML_EMBOBJBUILDER = "sblim.wbem.cimxmlEmbObjBuilder";
673
674 /**
675 *
676 * If set the type of valueless EmbeddedObjects are mapped to CLASS_T. It should work well
677 * with OpenPegasus-2.7.0.
678 * If unset no type mapping is done for valuless EmbeddedObjects.
679 *
680 * Type: Boolean
681 * Default: true
682 *
683 */
684 public static final String CIMXML_PARSER_STRICT_EMBOBJ_TYPES = "sblim.wbem.cimxmlParser.strictEmbObjTypes";
685
686 /**
687 *
688 * If set to false, the embedded object entity in all requests is in mixed case
689 * (EmbeddedObject) per DSP0203. If set to true, the embedded object entity is in
690 * upper case (EMBEDDEDOBJECT) - this works with some older CIMOMs, such as OpenPegasus
691 * 2.6.1 and 2.7.0.
692 *
693 * <!ENTITY % EmbeddedObject "EmbeddedObject (object|instance) #IMPLIED">
694 *
695 * Type: Boolean
696 * Recognition: Startup
697 * Range: true, false
698 * Default: true
699 *
700 */
701 public static final String CIMXML_BUILDER_UPPERCASE_EMBOBJ_ENTITIES =
702 "sblim.wbem.cimxmlBuilder.upperCaseEmbObjEntities";
703
704 /**
705 *
706 * If set to true, SSL handshakes are performed after an SSL socket is created by the
707 * socket factory. If set to false, handshakes are not performed, which is useful if
708 * if the handshake has already taken place.
709 *
710 * Type: Boolean
711 * Recognition: Anytime
712 * Default: true
713 *
714 */
715 public static final String PERFORM_SSL_HANDSHAKE = "sblim.wbem.performSslHandshake";
716
717 /**
718 *
719 * If set to false, SSL handshakes are not synchronized. If set to true, SSL handshakes
720 * are synchronized as a workaround for an IBMJSSE1 problem with thread-safe handshakes.
721 *
722 * Note: This property has no affect unless sblim.wbem.performSslHandshake is set to
723 * true.
724 *
725 * Type: Boolean
726 * Recognition: Anytime
727 * Default: false
728 *
729 */
730 public static final String SYNCHRONIZED_SSL_HANDSHAKE = "sblim.wbem.synchronizedSslHandshake";
731
732 /**
733 *
734 * If set to true, socket connections are attempted with the timeout value defined by
735 * sblim.wbem.socketConnectTimeout. If set to false, socket connections are attempted
736 * without a timeout. Using a timeout for socket connections is the preferred method
737 * but may introduce intermittent, significant performance impacts during the connection
738 * process in Java 5+ (see Sun bug 5092063).
739 *
740 * Type: Boolean
741 * Recognition: Anytime
742 * Default: true
743 *
744 */
745 public static final String SOCKET_CONNECT_WITH_TIMEOUT = "sblim.wbem.socketConnectWithTimeout";
746
747 /**
748 *
749 * The timeout for socket connect requests. A timeout of zero is interpreted
750 * as infinite timeout.
751 *
752 * Note: This property has no effect unless socket connection with timeout is
753 * enabled (see the sblim.wbem.socketConnectWithTimeout property).
754 *
755 * Type: Integer
756 * Unit: Milliseconds
757 * Recognition: Anytime
758 * Range: 0 .. Integer.MAX_VALUE
759 * Default: 0
760 *
761 */
762 public static final String SOCKET_CONNECT_TIMEOUT = "sblim.wbem.socketConnectTimeout";
763
764 /**
765 * The idle timeout between socket requests after which the socket is
766 * automatically reset (closed, then reopened). A timeout of zero is
767 * interpreted as infinite timeout. <br />
768 * Type: <code>Integer</code><br />
769 * Unit: <code>Milliseconds</code><br />
770 * Recognition: <code>Anytime</code><br />
771 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
772 * Default: <code>0</code><br />
773 */
774 public static final String SOCKET_IDLE_TIMEOUT = "sblim.wbem.socketIdleTimeout";
775
776 /**
777 *
778 * Turn on/off usage of the default user/password, which can be used
779 * if the CIMOM requires a "garbage" credential. If set to false,
780 * user-supplied credentials will be applied. If set to true,
781 * default credentials will be applied when both the user-supplied
782 * principal and credential are null/empty.
783 *
784 * Type: Boolean
785 * Recognition: Startup
786 * Default: false
787 *
788 */
789 public static final String KEY_CREDENTIALS_DEFAULT_ENABLED = "sblim.wbem.default.authorization.enabled";
790
791 /**
792 *
793 * The name of the user for the "garbage" credential.
794 *
795 * Note: This property has no effect unless default authorization is
796 * enabled (see the sblim.wbem.default.authorization.enabled property)
797 * AND both the user-supplied principal and credential are null/empty.
798 *
799 * Type: String
800 * Recognition: Startup
801 * Default: "default"
802 *
803 */
804 public static final String KEY_DEFAULT_PRINCIPAL = "sblim.wbem.default.principal";
805
806 /**
807 *
808 * The credential of the user for the "garbage" credential.
809 *
810 * Note: This property has no effect unless default authorization is
811 * enabled (see the sblim.wbem.default.authorization.enabled property)
812 * AND both the user-supplied principal and credential are null/empty.
813 *
814 * Type: String
815 * Recognition: Startup
816 * Default: "default"
817 *
818 */
819 public static final String KEY_DEFAULT_CREDENTIAL = "sblim.wbem.default.credential";
820
821 /**
822 * The timeout for http connections of an indication listener. A timeout of
823 * zero is interpreted as infinite timeout.<br />
824 * <br />
825 * Type: <code>Integer</code><br />
826 * Unit: <code>Milliseconds</code><br />
827 * Recognition: <code>On next creation of a WBEMListener</code><br />
828 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
829 * Default: <code>10000</code><br />
830 */
831 public static final String LISTENER_HTTP_TIMEOUT = "sblim.wbem.listenerHttpTimeout";
832
833 /**
834 * The header timeout for http connections of an indication listener. The
835 * header timeout is defined as the maximum amount of time allowed to read
836 * in the entire http header. A timeout of zero is interpreted as infinite
837 * timeout.<br />
838 * <br />
839 * Note: One form of DoS attack sends periodic http header lines in an
840 * attempt to keep the socket open indefinitely. This timeout can be used to
841 * thwart such an attempt.<br />
842 * <br />
843 * Type: <code>Integer</code><br/>
844 * Unit: <code>Milliseconds</code><br />
845 * Recognition: <code>On next creation of a WBEMListener<code><br/>
846 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
847 * Default: <code>30000</code><br/>
848 */
849 public static final String LISTENER_HTTP_HEADER_TIMEOUT = "sblim.wbem.listenerHttpHeaderTimeout";
850
851 /**
852 * The maximum allowable timeouts an http connection of an indication
853 * listener can have before the client ignores it. In other words, the
854 * number of times an IP exceeds sblim.wbem.listenerHttpTimeout and
855 * sblim.wbem.listenerHttpHeaderTimeout before it is blocked. A value of
856 * zero is interpreted as unlimited timeouts.<br />
857 * <br />
858 * Type: <code>Integer</code><br />
859 * Recognition: <code>On next creation of a WBEMListener</code><br />
860 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
861 * Default: <code>0</code><br />
862 */
863 public static final String LISTENER_HTTP_MAX_ALLOWED_TIMEOUTS = "sblim.wbem.listenerHttpMaxAllowedTimeouts";
864
865 /**
866 * The size of the thread pool for the connection handlers of the indication
867 * for http connections of an indication listener. This is the maximum
868 * number of handler threads the pool might create on heavy load.<br />
869 * A value of -1 is interpreted as infinity. <br />
870 * Type: <code>Integer</code><br />
871 * Unit: <code>Count</code><br />
872 * Recognition: <code>On next creation of a WBEMListener</code><br />
873 * Range: <code>-1 .. Integer.MAX_VALUE</code><br />
874 * Default: <code>8</code><br />
875 */
876 public static final String LISTENER_MAX_POOL_SIZE = "sblim.wbem.listenerPoolMaxSize";
877
878 /**
879 * The minimal number of connection handlers of the indication listener that
880 * will be kept open by the thread pool regardless of the current load. <br />
881 * Type: <code>Integer</code><br />
882 * Unit: <code>Count</code><br />
883 * Recognition: <code>On next creation of a WBEMListener</code><br />
884 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
885 * Default: <code>2</code><br />
886 */
887 public static final String LISTENER_MIN_POOL_SIZE = "sblim.wbem.listenerPoolMinSize";
888
889 /**
890 * The maximum number of queued connections (the fixed capacity of the
891 * ArrayBlockingQueue of pending connections incoming to the listener).
892 * Whereas increasing this number will result in a correspondingly greater
893 * memory usage, making the number too small can result in HTTP 503
894 * "Service temporarily overloaded" returned to server if there is no room
895 * in queue for an incoming connection. <br />
896 * Type: <code>Integer</code><br />
897 * Unit: <code>Count</code><br />
898 * Recognition: <code>On next creation of a WBEMListener</code><br />
899 * Range: <code>1 .. Integer.MAX_VALUE</code><br />
900 * Default: <code>32</code><br />
901 */
902 public static final String LISTENER_MAX_QUEUE_SIZE = "sblim.wbem.listenerQueueMaxSize";
903
904 /**
905 * The number of queued connections that is tolerated before the thread pool
906 * creates an additional handler thread. Increasing this value leads to a
907 * less "nervous" creation/destruction of handlers. However it
908 * makes the listener more vulnerable to frozen connections.<br />
909 * <br />
910 * Type: <code>Integer</code><br />
911 * Unit: <code>Count</code><br />
912 * Recognition: <code>On next creation of a WBEMListener</code><br />
913 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
914 * Default: <code>2</code><br />
915 */
916 public static final String LISTENER_BACKLOG = "sblim.wbem.listenerBacklog";
917
918 /**
919 * The idle time of a worker that is tolerated before the worker is
920 * destroyed by the thread pool. By setting the minimal pool size >0 you can
921 * protect a given number of worker from destruction.<br />
922 * <br />
923 * Type: <code>Long</code><br />
924 * Unit: <code>Milliseconds</code><br />
925 * Recognition: <code>On next creation of a WBEMListener</code><br />
926 * Range: <code>0 .. Long.MAX_VALUE</code><br />
927 * Default: <code>30000</code><br />
928 */
929 public static final String LISTENER_HANDLER_MAX_IDLE = "sblim.wbem.listenerHandlerMaxIdle";
930
931 /**
932 * The maximum number of queued events (the fixed capacity of the LinkedList
933 * of indications awaiting delivery to the listener). When the maximum is
934 * reached, the oldest indications are discarded to make room for the newest
935 * ones. A value of 0 is interpreted as infinity. <br />
936 * Type: <code>Integer</code><br />
937 * Unit: <code>Count</code><br />
938 * Recognition: <code>On next creation of a WBEMListener</code><br />
939 * Range: <code>0 .. Integer.MAX_VALUE</code><br />
940 * Default: <code>0</code><br />
941 */
942 public static final String LISTENER_MAX_QUEUED_EVENTS = "sblim.wbem.listenerMaxQueuedEvents";
943
944 /**
945 *
946 * If set to true, reliable indication support is enabled and indications
947 * are processed accordingly. If set to false, reliable indication
948 * support is disabled and indications are passed directly to listener.
949 *
950 * If reliable indication support is enabled, incoming indications are
951 * handled as documented in DSP1054 which includes queuing unexpected
952 * indications, caching all indications for the duration of their sequence
953 * identifier lifetime, and logging missing, duplicate and out-of-order
954 * indications.
955 *
956 * The sequence identifier lifetime is defined as:
957 * DeliveryRetryAttempts * DeliveryRetryInterval * 10
958 * These values can be set by the sblim.wbem.listenerDeliveryRetryAttempts
959 * and sblim.wbem.listenerDeliveryRetryInterval properties below.
960 *
961 * Unexpected indications are queued in either a linked list or a hash
962 * table based on the sblim.wbem.listenerReliableIndicationHashtableCapacity
963 * property below. The linked list is better suited for a small number of
964 * listener destinations per WBEMListener while the hash table is better
965 * suited for a large number.
966 *
967 * Type: Boolean
968 * Recognition: On next creation of a WBEMListener
969 * Default: false
970 *
971 */
972 public static final String LISTENER_ENABLE_RELIABLE_INDICATIONS = "sblim.wbem.listenerEnableReliableIndications";
973
974 /**
975 *
976 * The default value to use for the CIM_IndicationService DeliveryRetryAttempts
977 * property. See DSP1054 for details on reliable indications.
978 *
979 * Note: This property has no effect unless reliable indication support is
980 * enabled. See the sblim.wbem.listenerEnableReliableIndications property.
981 *
982 * Type: Long
983 * Unit: Count
984 * Recognition: On next creation of a WBEMListener
985 * Range: 1 .. 1000
986 * Default: 3
987 *
988 */
989 public static final String LISTENER_DELIVERY_RETRY_ATTEMPTS = "sblim.wbem.listenerDeliveryRetryAttempts";
990
991 /**
992 *
993 * The default value to use for the CIM_IndicationService DeliveryRetryInterval
994 * property. See DSP1054 for details on reliable indications.
995 *
996 * Note: This property has no effect unless reliable indication support is
997 * enabled. See the sblim.wbem.listenerEnableReliableIndications property.
998 *
999 * Type: Long
1000 * Unit: Seconds
1001 * Recognition: On next creation of a WBEMListener
1002 * Range: 1 .. 86400
1003 * Default: 20
1004 *
1005 */
1006 public static final String LISTENER_DELIVERY_RETRY_INTERVAL = "sblim.wbem.listenerDeliveryRetryInterval";
1007
1008 /**
1009 *
1010 * The default value to use for the reliable indication handler's initial
1011 * hash table capacity. A value of 0 indicates use a linked list instead.
1012 * Linked lists are better suited for a small number of listener destinations
1013 * per WBEMListener while hash tables are better suited for a large number.
1014 *
1015 * Note: This property has no effect unless reliable indication support is
1016 * enabled. See the sblim.wbem.listenerEnableReliableIndications property.
1017 *
1018 * Type: Integer
1019 * Unit: Count
1020 * Recognition: On next creation of a WBEMListener
1021 * Range: 0 .. 25000
1022 * Default: 0
1023 *
1024 */
1025 public static final String LISTENER_RELIABLE_INDICATION_HASHTABLE_CAPACITY =
1026 "sblim.wbem.listenerReliableIndicationHashtableCapacity";
1027
1028 /**
1029 *
1030 * The filter to use for tracing of incoming indications at the FINE level.
1031 *
1032 * If string is empty, no tracing of incoming indications will occur. If
1033 * string is not empty, it identifies one or more properties to be included
1034 * in the trace of all incoming indications. An optional class can be used
1035 * to filter the output to include only those indications that contain the
1036 * substring. For example, to trace the SequenceContext and SequenceNumber
1037 * properties of all alerts, use the following:
1038 *
1039 * alert:sequencecontext,sequencenumber
1040 *
1041 * To trace the IndicationTime of all indications, use the following:
1042 *
1043 * indicationtime
1044 *
1045 * Note: This property has no effect unless tracing is enabled. See the
1046 * sblim.wbem.traceFileLevel property.
1047 *
1048 * Type: String
1049 * Recognition: On next creation of WBEMListener
1050 * Format: [class:]property[,property]*
1051 *
1052 */
1053 public static final String LISTENER_INDICATION_TRACE_FILTER = "sblim.wbem.listenerIndicationTraceFilter";
1054
1055 /**
1056 *
1057 * If set to true, a property will be added to all indications that identifies
1058 * the sender's IP address. If set to false, the property will not be added.
1059 *
1060 * The property is a CIMProperty with:
1061 * name = "SBLIMJCC_SenderIPAddress"
1062 * data type = CIMDataType.STRING_T
1063 * value = String returned by InetAddress.getHostAddress() (i.e. 1.2.3.4)
1064 *
1065 * Type: Boolean
1066 * Recognition: On next creation of a WBEMListener
1067 * Default: false
1068 *
1069 */
1070 public static final String LISTENER_ADD_SENDER_IP_ADDRESS = "sblim.wbem.listenerAddSenderIPAddress";
1071
1072 /**
1073 *
1074 * If set to true, numeric string values passed to the java.lang.Double
1075 * constructor or its parseDouble method will be checked to make sure they
1076 * are not in the range that hangs Java 6- (see Sun bug 4421494). If
1077 * set to false, the string values will not be checked.
1078 *
1079 * Note: This property should only be set to true if running on Java 5 or
1080 * Java 6 prior to update 24.
1081 *
1082 * Type: Boolean
1083 * Recognition: Startup
1084 * Default: true
1085 *
1086 */
1087 public static final String VERIFY_JAVA_LANG_DOUBLE_STRINGS = "sblim.wbem.verifyJavaLangDoubleStrings";
1088
1089 /**
1090 *
1091 * If set to true, numeric key data types in a CIMInstance's CIMObjectPath
1092 * will be synchronized to match those of the corresponding keys within
1093 * the CIMInstance's CIMProperty[]. If set to false, the numeric key data
1094 * types will not be synchronized.
1095 *
1096 * Note: Only numeric key data types in CIMInstances from CIMOM responses
1097 * are synchronized, application calls to the CIMInstance constructor are
1098 * not affected.
1099 *
1100 * Type: Boolean
1101 * Recognition: Startup
1102 * Default: false
1103 *
1104 */
1105 public static final String SYNCHRONIZE_NUMERIC_KEY_DATA_TYPES = "sblim.wbem.synchronizeNumericKeyDataTypes";
1106
1107 /**
1108 *
1109 * If set to true, gzip encoding is enabled. If set to false, gzip encoding
1110 * is not enabled. When enabled, outgoing requests include the HTTP header
1111 * "Accept-Encoding: gzip" to indicate to the CIMOM that the client handles
1112 * message bodies compressed with gzip. If the incoming response includes
1113 * "Content-Encoding: gzip" the message body will be decompressed with gzip
1114 * before being processed.
1115 *
1116 * Note: This property does not affect indications or outgoing requests.
1117 *
1118 * Type: Boolean
1119 * Recognition: Anytime
1120 * Default: false
1121 *
1122 */
1123 public static final String ENABLE_GZIP_ENCODING = "sblim.wbem.enableGzipEncoding";
1124
1125 /**
1126 *
1127 * If set to true, the CIM-XML parser will allow empty LOCALNAMESPACEPATH
1128 * elements in incoming responses. If set to false, the parser will not
1129 * allow empty LOCALNAMESPACEPATH elements.
1130 *
1131 * Note: Some older CIMOMs sent empty LOCALNAMESPACEPATHs, relying on the
1132 * client to provide the local namespace path. This is a violation of
1133 * DSP0201, which dictates that LOCALNAMESPACEPATH must contain at least
1134 * one NAMESPACE child. By default, this property is set to false so the
1135 * client can adhere to the CIM-XML specifications. Set this property to
1136 * true if "LOCALNAMESPACEPATH requires NAMESPACE" exceptions occur while
1137 * interacting with one of these older CIMOMs.
1138 *
1139 * Type: Boolean
1140 * Recognition: Anytime
1141 * Default: false
1142 *
1143 */
1144 public static final String CIMXML_PARSER_ALLOW_EMPTY_LOCALNAMESPACEPATH =
1145 "sblim.wbem.cimxmlParser.allowEmptyLocalNameSpacePath";
1146
1147 /**
1148 * AMMO-863
1149 * <p>
1150 * New configuration property to force the use of a strict mode for the
1151 * HTTP header Connection=Keep-alive (that may not be used for HTTP/1.1).
1152 */
1153 public static final String HTTP_KEEP_ALIVE_STRICT_MODE = "sblim.wbem.httpKeepAliveStrictMode";
1154 }