Object Request Broker custom properties
There are several ways to configure an Object Request Broker (ORB). For example, you can use ORB custom property settings, or system property settings to configure an ORB, or you can provide objects during ORB initialization. If you use the following ORB custom properties to configure an ORB, remember that two types of default values exist for some of these properties: the Java™ SE Development Kit (JDK) default values and the WebSphere® Application Server default values.
- The orb.properties file when an application server is installed.
- The server.xml file when an application server is configured.
Because WebSphere Application Server explicitly sets its default value, if both a WebSphere Application Server and a JDK default value are defined for a property, the WebSphere Application Server default takes precedence over the JDK default.
For more information about the different ways to specify ORB properties and the precedence order, read the JDK Diagnostic Guide for the version of the JDK that you are using.
The orb.properties file, that is located in the was_home/properties directory, contains ORB custom properties that are initially set to the WebSphere Application Server default values during the product installation process. These values are passed to the ORB in a properties object and take precedence over Java virtual machine (JVM) arguments and other orb.properties files in either the java_home/lib or user_home directories.
You can use the administrative console to specify new values for these ORB custom properties. Any value that you specify takes precedence over any JDK or WebSphere Application Server default values for these properties, including JVM arguments. The ORB custom properties settings that you specify in the administrative console are stored in the server.xml system file and are passed to an ORB in a properties object whenever an ORB is initialized.
To use the administrative console to set ORB custom properties, click New to add a new property to the list. Then, click Apply to save your change. When you finish the changes, click OK and then click Save to save your changes.
. You can then change the setting of one of the listed custom properties or clickjava -Dcom.ibm.CORBA.propname1=value1 -Dcom.ibm.CORBA.propname2=value2 ... application name
launchclient yourapp.ear -CCDcom.ibm.CORBA.propname1=value1 -CCDcom.ibm.CORBA.propname2=value2 ... optional application arguments
The Custom properties page might already include Secure Sockets Layer (SSL) properties that were added during product installation. A list of the additional properties that are associated with the ORB service follows. Unless otherwise indicated, the default values that are provided in the descriptions of these properties are the JDK default values.
- com.ibm.CORBA.BootstrapHost
- com.ibm.CORBA.BootstrapPort
- com.ibm.CORBA.ConnectTimeout
- com.ibm.CORBA.ConnectionInterceptorName
- com.ibm.CORBA.enableLocateRequest
- com.ibm.CORBA.ListenerPort
- com.ibm.CORBA.LocalHost
- com.ibm.CORBA.ConnectionMultiplicity
- com.ibm.CORBA.RasManager
- com.ibm.CORBA.ServerSocketQueueDepth
- com.ibm.CORBA.ShortExceptionDetails
- com.ibm.CORBA.WSSSLClientSocketFactoryName
- com.ibm.CORBA.WSSSLServerSocketFactoryName
- com.ibm.websphere.ObjectIDVersionCompatibility
- com.ibm.websphere.orb.threadPoolTimeout
- com.ibm.ws.orb.services.lsd.EnableSecurityServiceCheck
- com.ibm.ws.orb.services.lsd.SecurityServiceCheckInterval
- com.ibm.ws.orb.services.lsd.SecurityServiceCheckRetry
- com.ibm.ws.orb.services.redirector.MaxOpenSocketsPerEndpoint
- com.ibm.ws.orb.services.redirector.RequestTimeout
- com.ibm.ws.orb.transport.SSLHandshakeTimeout
- com.ibm.ws.orb.transport.useMultiHome
- javax.rmi.CORBA.UtilClass
com.ibm.CORBA.BootstrapHost
Specifies the domain name service (DNS) host name or IP address of the machine on which initial server contact for this client resides.
For a command-line or programmatic alternative, read the topic Client-side programming tips for the Object Request Broker service.
com.ibm.CORBA.BootstrapPort
Specifies the port that the ORB uses to bootstrap to the machine on which the initial server contact for this client listens.
For a command line or programmatic alternative, read the topic Client-side programming tips for the Object Request Broker service.
Information | Value |
---|---|
Default | 2809 |
com.ibm.CORBA.ConnectTimeout
The com.ibm.CORBA.ConnectTimeout property specifies the maximum time, in seconds, that the client ORB waits prior to timing out when attempting to establish an IIOP connection with a remote server ORB. Typically, client applications use this property. You can specify the property for each individual application server through the administrative console.
- By including it in the orb.properties file
- By using the -CCD option to set the property with the launchclient
script. The following example specifies a maximum timeout value of
10 seconds:
launchclient clientapp.ear -CCDcom.ibm.com.CORBA.ConnectTimeout=10...
Begin with the default timeout value, but consider factors such as network congestion and
application server load and capacity. Lesser values provide better failover performance in the case
of extended problems with the remote server, such as downtime. Higher values are better for slow
network or remote server performance. However, exceptions can occur if the remote server does not
have enough time to complete the subsequent request. A value of 0
means that the
ORB relies on the timeout set by the operating system TCP/IP layer. For most operating systems, the
timeout is set to 75 seconds.
Information | Value |
---|---|
Valid Range | 0-300 |
Default | 10 |
com.ibm.CORBA.ConnectionInterceptorName
Specifies the connection interceptor class that is used to determine the type of outbound IIOP connection to use for a request, and if secure, the quality of protection characteristics associated with the request.
Information | Value |
---|---|
WebSphere Application Server default | com.ibm.ISecurityLocalObjectBaseL13Impl.SecurityConnectionInterceptor |
JDK default | None |
com.ibm.CORBA.enableLocateRequest
Specifies whether the ORB uses the locate request mechanism to find objects in a WebSphere Application Server cell. Use this property for performance tuning.
When this property is set to true, the ORB first sends a short message to the server to find the object that it needs to access. This first contact is called the locate request. If most of your initial method invocations are small, setting this property to false might improve performance because this setting change can reduce the GIOP traffic by as much as one-half. If most of your initial method invocations are large, you should set this property to true. When the property is set to true, the small locate request message is sent instead of the large locate request message. The large message is then sent to the target following the desired object is found.
Information | Value |
---|---|
WebSphere Application Server default | true |
JDK default | false |
com.ibm.CORBA.ListenerPort
Specifies the port on which this server listens for incoming requests. This setting only applies for client-side ORBs.
Information | Value |
---|---|
Default | Next available system-assigned port number |
Range | 0 - 2147483647 |
com.ibm.CORBA.LocalHost
Specifies the host name or IP address of the system on which the application server or client application ORB is running.
- If the ORB_LISTENER_ADDRESS host name is
*
, then the property is set to the local host name by using the InetAddress.getLocalHost().getCanonicalHostName() method. - For client applications, if no value is specified for this property, the ORB obtains a value at run time by calling the InetAddress.getLocalHost().getHostAddress() method.
- Do not set this property to the localhost string or 127.0.0.1 value because these values can result in unpredictable behavior for both clients and servers. Those values might impact callback behavior, the use of server IORs, and the creation of ORB connections.
com.ibm.CORBA.ConnectionMultiplicity
Specifies the number of concurrent TCP connections between the client and server Object Request Brokers. The default for this property is 1.
A value of 1 indicates that there will be at most only one connection between the client and each server ORB port. All the requests between the client and the server ORB will be multiplexed across those single connections. This can lead to a performance bottleneck in J2EE deployments where there are a large number of concurrent requests between the client and server ORBS.
Setting this value to a number greater than one <n> causes the client ORB to multiplex communications to each server ORB port over <n> multiple connections rather than a single connection. There will be no more than <n> concurrent sockets to each separate server ORB port at any one time. This can increase throughput under certain circumstances, particularly on a long-running, mulch-threaded client process. Since the number of parallel connections will never exceed the number of requesting client threads, the number of concurrent client request threads is therefore a sensible maximum limit for this property.
Side Effects
- Reader threads for that connection on both the client and server
- File descriptors (for the socket) on both client and server
- CPU processing time in handling additional threads
- Heap/memory for additional threads
Other Considerations
- Fine-tuning may be needed to balance increasing the desired throughput against the additional resources required
- Understand the server-side ramifications of increasing CM on clients, particularly if there is a large pool of clients. Increasing CM on a pool of clients can result in a marked increase of connections on the server(s).
- ORB connection cache settings. Increasing the ORB property com.ibm.CORBA.MaxOpenConnections on both clients and servers may be needed in order to prohibit thrashing (continual adding/deleting of connections) of the ORB connection table.
Read the following article for best practices on tuning this property: https://www.ibm.com/support/pages/behavior-connectionmultiplicity-alongside-minopenconnection-and-maxopenconnection
Information | Value |
---|---|
Valid Range | 0-2147483647 |
Default | 1 |
com.ibm.CORBA.RasManager
Specifies an alternative to the default RAS manager of the ORB. This property must be set to com.ibm.websphere.ras.WsOrbRasManager prior to the ORB can be integrated with the rest of the RAS processing for the product.
Information | Value |
---|---|
WebSphere Application Server default | com.ibm.websphere.ras.WsOrbRasManager |
JDK default | None |
com.ibm.CORBA.ServerSocketQueueDepth
Specifies the maximum number of connection requests that can be waiting to be handled by the Server ORB prior to the product starts to reject new incoming connection requests. This property corresponds to the backlog argument to a ServerSocket constructor and is handled directly by TCP/IP.
If you see a connection refused
message in a trace log,
typically, either the port on the target machine is not open, or the
server is overloaded with queued-up connection requests. Increasing
the value specified for this property can help alleviate this problem
if there does not appear to be any other problem in the system.
Information | Value |
---|---|
Default | 50 |
Range | From 50 to the largest value of the Java int type |
com.ibm.CORBA.ShortExceptionDetails
Specifies that the exception detail message that is returned whenever the server ORB encounters a CORBA system exception contains a short description of the exception as returned by the toString method of java.lang.Throwable class. Otherwise, the message contains the complete stack trace as returned by the printStackTrace method of java.lang.Throwable class.
com.ibm.CORBA.WSSSLClientSocketFactoryName
Specifies the class that the ORB uses to create SSL sockets for secure outbound IIOP connections.
Information | Value |
---|---|
WebSphere Application Server default | com.ibm.ws.security.orbssl.WSSSLClientSocketFactoryImpl |
JDK default | None |
com.ibm.CORBA.WSSSLServerSocketFactoryName
Specifies the class that the ORB uses to create SSL sockets for inbound IIOP connections.
Information | Value |
---|---|
WebSphere Application Server default | com.ibm.ws.security.orbssl.WSSSLServerSocketFactoryImpl |
JDK default | None |
com.ibm.websphere.ObjectIDVersionCompatibility
This property applies when you have a mixed release cluster for which you are performing an incremental cell upgrade, and at least one of the releases is earlier than Version 6.x.
In an environment that includes mixed release cells, the migration program automatically sets this property to 1.
Once you upgrade all of the cluster members to the same release, you can remove this property from the list of ORB custom properties, or you can change the value that is specified for the property to 2. Either action improves performance.
When this property is set to 1, the ORB runs using version 1 object identities, which are required for mixed cells that contain application servers with releases earlier than V6.x. If you do not specify a value for this property or if you set this property to 2, the ORB runs using version 2 object identities, which cannot be used with pre-V6.x application servers.
com.ibm.websphere.orb.threadPoolTimeout
Use this custom property to specify the length of time in which the object request broker (ORB) waits for an available thread from the ORB thread pool prior to rejecting a request.
When the ORB receives an incoming request, the request is read by an ORB reader thread. The ORB reader thread attempts to hand off the request for processing by a worker thread in the ORB thread pool. When all the worker threads are handling other requests, the reader thread waits until a worker thread becomes available. While the reader thread is waiting, new requests are not processed by that particular reader thread. This situation can lead to deadlocks between the ORB thread pools on two different Java virtual machine (JVM) processes. The deadlocks are prominent when the ORB in one JVM process must call back to the ORB in the other JVM process to complete its request. Therefore, it is highly advisable to set this property to a positive non-zero value, which configures a finite wait period and can limit deadlock situations. However, configure the value for this custom property based on its effect on the average request processing time, the ORB request timeout value, and whether servers are making additional circular or backend calls.
Information | Value |
---|---|
Data type | Integer |
Units | Milliseconds |
Default | 0 |
Range | 0 - largest integer that is recognized by the Java run time |
com.ibm.ws.orb.services.lsd.EnableSecurityServiceCheck
Prevents Location Service Daemon (LSD) related outgoing ORB calls from being invoked before the Security Service is initialized.
Sometimes Location Service Daemon (LSD) related outgoing ORB calls fail authentication because the calls are made before the server is ready to authenticate users. If you want the server to wait until the Security Service is initialized before invoking outgoing ORB calls, set this property to true.
The default value is false.
com.ibm.ws.orb.services.lsd.SecurityServiceCheckInterval
Specifies, in milliseconds, how frequently the server checks to see if the Security Service is up and running.
If you set the com.ibm.ws.orb.services.lsd.EnableSecurityServiceCheck custom property to true, use this property to indicate how frequently the server checks to see if the Security Service is up and running.
The default value is 5000 milliseconds, which is equivalent to 5 seconds.
com.ibm.ws.orb.services.lsd.SecurityServiceCheckRetry
Specifies the maximum number of times the server checks to see if the Security Service is up and running before issuing an error message that indicates that a Location Service Daemon (LSD) related outgoing ORB call failed authentication.
The default value is 10.
com.ibm.ws.orb.services.redirector.MaxOpenSocketsPerEndpoint
Specifies the maximum number of connections that the IIOP Tunnel Servlet maintains in its connection cache for each target host and port. If the number of concurrent client requests to a single host and port exceeds the setting for this property, the IIOP Tunnel Servlet opens a temporary connection to the target server for each extra client request, and then closes the connection once it receives the reply. Connections that are opened, but not used within 5 minutes, are removed from the cache for the IIOP Tunnel Servlet.
Information | Value |
---|---|
WebSphere Application Server default | 3 |
JDK default | Not applicable |
Range | 0 - largest integer recognized by Java |
com.ibm.ws.orb.services.redirector.RequestTimeout
Specifies the number of seconds that the IIOP Tunnel Servlet waits for a reply from the target server on behalf of a client prior to timing out. If a value is not specified for this property, or is incorrectly specified, the com.ibm.CORBA.RequestTimeout property setting for the application server, on which the IIOP Tunnel Servlet is installed, is used as the setting for the com.ibm.ws.orb.services.redirector.RequestTimeout property.
The value you specify for this property must be at least as high as the highest client setting for the com.ibm.CORBA.RequestTimeout property; otherwise the IIOP Tunnel Servlet might timeout more quickly than the client typically times out while waiting for a reply. If this property is set to zero, the IIOP Tunnel Servlet does not timeout.
Information | Value |
---|---|
WebSphere Application Server default | com.ibm.CORBA.RequestTimeout property setting for the application
server on which the IIOP Tunnel Servlet is installed. The request_timeout request-level Reliability Availability and Serviceability (RAS) attribute overrides the com.ibm.CORBA.RequestTimeout property for IIOP requests. You define the request-level RAS attributes in the workload classification file. |
JDK default | Not applicable |
Range | 0 - largest integer recognized by Java |
com.ibm.ws.orb.transport.SSLHandshakeTimeout
This custom property specifies a timeout value for reading Secure Sockets Layer (SSL) handshake-related messages.
When you set the com.ibm.ws.orb.transport.SSLHandshakeTimeout custom property to a positive integer value, the listener thread does not hang if a message is received following the specified timeout period. If you do not set this custom property or do not set it to a positive integer value, the timeout value defaults to 10000, a timeout period is not added, and the listener thread can hang.
Information | Value |
---|---|
Data type | Integer |
Default | 10000 |
Units | Milliseconds |
com.ibm.ws.orb.transport.useMultiHome
Specifies whether the server ORB binds to all network interfaces in the system. If you specify true, the ORB binds to all network interfaces that are available to it. If you specify false, the ORB only binds to the network interface that is specified for the com.ibm.CORBA.LocalHost system property.
Information | Value |
---|---|
WebSphere Application Server default | true |
JDK default | true |
javax.rmi.CORBA.UtilClass
Specifies the name of the Java class that the product uses to implement the javax.rmi.CORBA.UtilDelegate interface.
This property supports delegation for method implementations in the javax.rmi.CORBA.Util class. The javax.rmi.CORBA.Util class provides utility methods that can be used by stubs and ties to perform common operations. The delegate is a singleton instance of a class that implements this interface and provides a replacement implementation for all of the methods of javax.rmi.CORBA.Util. To enable a delegate, provide the class name of the delegate as the value of the javax.rmi.CORBA.UtilClass system property. The default value provides support for the com.ibm.CORBA.iiop.noLocalCopies property.
Information | Value |
---|---|
WebSphere Application Server default | com.ibm.ws.orb.WSUtilDelegateImpl |
JDK default | None |