Object Request Broker custom properties
There are several ways to configure an Object Request Broker (ORB). For example, we can use ORB custom property settings, or system property settings to configure an ORB, or we can provide objects during ORB initialization. If we 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 JDK default is the value that the ORB uses for a property if the property is not specified in any way. The WAS default is the value that the WAS sets for a property in one of the following files:
- The orb.properties file when an application server is installed.
- The server.xml file when an application server is configured.
Because WAS explicitly sets its default value, if both a WAS and a JDK default value are defined for a property, the WAS 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 we are using.
The orb.properties file, located in the was_home/properties directory, contains ORB custom properties initially set to the WAS default values during the product installation process. These values are passed to the ORB in a properties object and take precedence over JVM arguments and other orb.properties files in either the java_home/lib or user_home directories.
Use the administrative console to specify new values for these ORB custom properties. Any value specified takes precedence over any JDK or WAS default values for these properties, including JVM arguments. The ORB custom properties settings specified 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...
Servers > Server Types > Application servers > server > Container services > ORB service > Custom properties. We can then change the setting of one of the listed custom properties or click New to add a new property to the list. Then, click Apply to save your change. When we finish the changes, click OK and then click Save to save the changes.
To use the java command on a command line, use the -D option; for example:
java -Dcom.ibm.CORBA.propname1=value1 -Dcom.ibm.CORBA.propname2=value2 ... application nameTo use the launchclient command on a command line, prefix the property with -CC; for example:
launchclient yourapp.ear -CCDcom.ibm.CORBA.propname1=value1 -CCDcom.ibm.CORBA.propname2=value2 ... optional application argumentsThe Custom properties page might already include SSL properties that were added during product installation. A list of the additional properties associated with the ORB service follows. Unless otherwise indicated, the default values provided in the descriptions of these properties are the JDK default values.
Use the custom properties page to define the following properties for use by the ORB.
- com.ibm.CORBA.BootstrapHost
- com.ibm.CORBA.BootstrapPort
- com.ibm.CORBA.ConnectTimeout
- com.ibm.CORBA.ConnectionInterceptorName
- com.ibm.CORBA.enableLocateRequest
- com.ibm.CORBA.FragmentSize
- com.ibm.CORBA.ListenerPort
- com.ibm.CORBA.LocalHost
- com.ibm.CORBA.numJNIReaders
- com.ibm.CORBA.ORBPluginClass.com.ibm.ws.orbimpl.transport.JNIReaderPoolImpl
- com.ibm.CORBA.RasManager
- com.ibm.CORBA.SendConnectionContexts
- 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.websphere.threadpool.strategy.implementation
- com.ibm.websphere.threadpool.strategy.LogicalPoolDistribution.calcinterval
- com.ibm.websphere.threadpool.strategy.LogicalPoolDistribution.lruinterval
- com.ibm.websphere.threadpool.strategy.LogicalPoolDistribution.outqueues
- com.ibm.websphere.threadpool.strategy.LogicalPoolDistribution.statsinterval
- com.ibm.websphere.threadpool.strategy.LogicalPoolDistribution.workqueue
- 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.DeferSSLHandshake
- com.ibm.ws.orb.transport.SSLHandshakeTimeout
- com.ibm.ws.orb.transport.useMultiHome
- javax.rmi.CORBA.UtilClass
com.ibm.CORBA.BootstrapHost
Domain name service (DNS) host name or IP address of the machine on which initial server contact for this client resides.
Deprecated feature: This setting is deprecated.depfeat
For a command-line or programmatic alternative, read the topic Client-side programming tips for the Object Request Broker service.
com.ibm.CORBA.BootstrapPort
Port that the ORB uses to bootstrap to the machine on which the initial server contact for this client listens.
Deprecated feature: This setting is deprecated.depfeat
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. We can specify the property for each individual application server through the administrative console.
Client applications can specify the com.ibm.CORBA.ConnectTimeout property in one of two ways:
- 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. Lower 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.
For transitioning users: The default for the com.ibm.CORBA.ConnectTimeout property for v8 and later is 10. Earlier than v8, the default is 0.trns
Information Value Valid Range 0-300 Default 10
com.ibm.CORBA.ConnectionInterceptorName
Connection interceptor class 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 WAS 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 WAS cell. Use this property for performance tuning.
When 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 our 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 our initial method invocations are large, we should set this property to true. When 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 WAS default true JDK default false
com.ibm.CORBA.FragmentSize
Size of GIOP fragments that the ORB uses when it sends requests. If the total size of a request exceeds the set value, the ORB breaks the request into fragments, and sends each fragment separately until the entire request is sent. Set this property on the client side with a -D system property if we use a stand-alone Java application.
Adjust the value specified for the com.ibm.CORBA.FragmentSize property if the amount of data sent over IIOP in most GIOP requests exceeds 1 KB, or if thread dumps show that most client-side threads are waiting while sending or receiving data. Most messages should have few or no fragments.
To instruct the ORB not to chunk any of the requests or replies it sends, set this property to 0. However, setting the value to zero does not prevent the ORB from receiving GIOP fragments in requests or replies sent by another ORB.
Information Value Units Bytes Default 1024 Range From 64 to the largest value of a Java integer type that is divisible by 8
com.ibm.CORBA.ListenerPort
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
Host name or IP address of the system on which the application server or client application ORB is running.
For application servers, this property is automatically set to the host name of the ORB_LISTENER_ADDRESS endpoint. Any value specified by the user will be overwritten by the ORB_LISTENER_ADDRESS host name.
- If the ORB_LISTENER_ADDRESS host name is "*", then the property is set to the local host name 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.
- (Windows) When the client ORB makes a TCP connection to a server, there are two possible scenarios:
- The local socket side is bound to the single address, specified on either the ORB_LISTENER_ADDRESS property in the serverindex.xml file, or the com.ibm.CORBA.LocalHost custom property.
- The local socket side is not bound to a particular address.
These two scenarios occur because the Micosoft Windows networking stack does not forward packets across different scope zones. The loopback and public interfaces are in different scope zones.
The first scenario fails with a SocketException if the client is running on Microsoft Windows7 or Microsoft Windows 2008 R2, and the com.ibm.ws.orb.transport.useMultiHome custom property on the client is set to false, because either:
- The client ORB_LISTENER_ADDRESS host value, in the serverindex.xml file, or the com.ibm.CORBA.LocalHost custom property has an internal address of either localhost or 127.0.0.1, and the server has an external IP address or host name, such as 147.10.32.117).
- Or the client has an external address and server has an internal address.
(iSeries) (Dist)
com.ibm.CORBA.numJNIReaders
Number of JNI reader threads to be allocated in the JNI reader thread pool used by the ORB. Each thread can handle up to 1024 connections.
Prior to specifying this property, verify that a JSSE provider is selected as the provider for the SSL repertoire associated with the port on which the ORB service listens for incoming requests. We can specify either IBMJSSE2 SSL or IBMJSSE SSL. IBMJSSE2 SSL is the default provider setting for SSL repertoires.
Information Value Valid Range 1 - 2147483647 Default 4 (iSeries) (Dist)
com.ibm.CORBA.ORBPluginClass.com.ibm.ws.orbimpl.transport.JNIReaderPoolImpl
That JNI reader threads are used. The property name specifies the class name of the ORB component that manages the pool of JNI reader threads and interacts with the native OS library used to process multiple connections simultaneously.
- Verify that the library is located in the proper directory for the product.
For a Windows operating system, the library is located in the lib\native\win\x86_32 or lib\native\win\x86_64, depending on whether you're running a 32 bit or 64 bit version of WAS. The name of the file containing the library name is Selector.dll
For a UNIX-based operating system, the library is located in the bin directory and the name of the file containing the library is either libSelector.a or libSelector.so. If the lib prefix is missing from the file name, rename the file such that the name includes the lib prefix.
- When we specify this property using the administrative console, enter com.ibm.CORBA.ORBPluginClass.com.ibm.ws.orbimpl.transport.JNIReaderPoolImpl for the property name and an empty string ("""") for the value.
When we specify this property on the java command, do not include a value:
-Dcom.ibm.CORBA.ORBPluginClass.com.ibm.ws.orbimpl.transport.JNIReaderPoolImpl
Information Value Valid Range Not applicable Default None
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 WAS default com.ibm.websphere.ras.WsOrbRasManager JDK default None (Dist)
com.ibm.CORBA.SendConnectionContexts
Specifies whether the connection contexts, such as Partner Version, Sending Context Runtime, and Codebase contexts, are always sent with every GIOP message, or are sent only once for each connection.
When set to always, all of the connection contexts are sent with every GIOP request and every GIOP response.
When set to once, the connection contexts are only sent with the initial request.
Information Value Default once
com.ibm.CORBA.ServerSocketQueueDepth
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 we 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
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
Class that the ORB uses to create SSL sockets for secure outbound IIOP connections.
Information Value WAS default com.ibm.ws.security.orbssl.WSSSLClientSocketFactoryImpl JDK default None
com.ibm.CORBA.WSSSLServerSocketFactoryName
Class that the ORB uses to create SSL sockets for inbound IIOP connections.
Information Value WAS default com.ibm.ws.security.orbssl.WSSSLServerSocketFactoryImpl JDK default None
com.ibm.websphere.ObjectIDVersionCompatibility
This property applies when we have a mixed release cluster for which we 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 we upgrade all of the cluster members to the same release, we can remove this property from the list of ORB custom properties, or we can change the value specified for the property to 2. Either action improves performance.
When 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 we do not specify a value for this property or if we 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
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 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 (iSeries) (Dist)
com.ibm.websphere.threadpool.strategy.implementation
Logical pool distribution (LPD) thread pool strategy that takes effect the next time we start the application server, and is enabled if set to com.ibm.ws.threadpool.strategy.LogicalPoolDistribution.
Deprecated feature: The logical pool distribution function is deprecated. Do not configure logical pool distribution unless we have already configured it for a previous release of the product.depfeat
Some requests have shorter start times than others. LPD is a mechanism for providing these shorter requests greater access to start threads. For more information, read the topic Logical pool distribution.
(iSeries) (Dist)
com.ibm.websphere.threadpool.strategy.LogicalPoolDistribution.calcinterval
Specifies how often the logical pool distribution (LPD) mechanism readjusts the pool start target times. This property cannot be turned off once this support is installed.
Deprecated feature: The logical pool distribution function is deprecated. Do not configure logical pool distribution unless we have already configured it with a previous release of the product.depfeat
If we use this property, LPD must be enabled. Read the description of the com.ibm.websphere.threadpool.strategy.implementation property for more information.
Information Value Data type Integer Units Milliseconds Default 30 Range 20,000 milliseconds minimum (iSeries) (Dist)
com.ibm.websphere.threadpool.strategy.LogicalPoolDistribution.lruinterval
Specifies, in milliseconds, how long the logical pool distribution internal data is kept for inactive requests. This mechanism tracks several statistics for each request type that is received. Consider removing requests that have been inactive for an unusually long length of time.
Deprecated feature: This function is deprecated. Do not configure logical pool distribution unless we have already configured it with a previous release of the product.depfeat
If we use this property, LPD must be enabled. Read the description of the com.ibm.websphere.threadpool.strategy.implementation property for more information.
Information Value Data type Integer Units Milliseconds Default 300000 (5 minutes) Range 60000 (1 minute) minimum (iSeries) (Dist)
com.ibm.websphere.threadpool.strategy.LogicalPoolDistribution.outqueues
Specifies how many pools are created and how many threads are allocated to each pool in the logical pool distribution mechanism.
Deprecated feature: The logical pool distribution function is deprecated. Do not configure logical pool distribution unless we have already configured it with a previous release of the product.depfeat
The ORB parameter for specifying the maximum number of threads controls the total number of threads. The outqueues parameter is specified as a comma-separated list of percentages that add up to 100. For example, the list 25,25,25,25 sets up 4 pools, each allocated 25 percent of the available ORB thread pool. The pools are indexed left to right from 0 to n-1. The calculation mechanism dynamically assigns each outqueue a target start time. Target start times are assigned to outqueues in increasing order. Therefore, pool 0 gets the requests with the least start time, and pool n-1 gets requests with the highest start times.
If we specify this property, LPD must be enabled. Read the description of the com.ibm.websphere.threadpool.strategy.implementation property for more information.
Information Value Data type Integers in comma-separated list Default 25,25,25,25 Range Percentages in list must total 100 percent (iSeries) (Dist)
com.ibm.websphere.threadpool.strategy.LogicalPoolDistribution.statsinterval
That statistics are dumped to stdout once this interval expires, but only if requests are processed. This process keeps the mechanism from filling the log files with redundant information. These statistics are beneficial for tuning the logical pool distribution mechanism.
Deprecated feature: The logical pool distribution function is deprecated. Do not configure logical pool distribution unless we have already configured it with a previous release of the product. depfeat
If we use this property, LPD must be enabled. Read the description of the com.ibm.websphere.threadpool.strategy.implementation property for more information.
Information Value Data type Integer Units Milliseconds Default 0 (off) Range 30,000 (30 seconds) minimum (iSeries) (Dist)
com.ibm.websphere.threadpool.strategy.LogicalPoolDistribution.workqueue
Size of a new queue where incoming requests wait for dispatch. Pertains to the logical pool distribution mechanism.
Deprecated feature: The logical pool distribution function is deprecated. Do not configure logical pool distribution unless we have already configured it with a previous release of the product. depfeat
If we use this property, LPD must be enabled. Read the description of the com.ibm.websphere.threadpool.strategy.implementation property for more information.
Information Value Data type Integer Default 96 Range 10 minimum
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 we want the server to wait until the Security Service is initialized before invoking outgoing ORB calls, set this property to true.
The default 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 we 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 is 5000 milliseconds, which is equivalent to 5 seconds.
com.ibm.ws.orb.services.lsd.SecurityServiceCheckRetry
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 is 10.
com.ibm.ws.orb.services.redirector.MaxOpenSocketsPerEndpoint
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 WAS default 3 JDK default Not applicable Range 0 - largest integer recognized by Java
com.ibm.ws.orb.services.redirector.RequestTimeout
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 we 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 set to zero, the IIOP Tunnel Servlet does not timeout.
Information Value WAS 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. We 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.DeferSSLHandshake
Specify whether the server-side ORB performs an SSL handshake on one of the ORB's secure Listener Threads or whether the SSL handshake is deferred to a newly-created Reader thread.
When we set the com.ibm.ws.orb.transport.DeferSSLHandshake custom property to false (or do not set it at all), the SSL handshake between the client and server (performed for new incoming SSL connections) is done by the server's Listener Thread, at which point a new Reader Thread will be created to read the incoming ORB request message. When true, the Listener Thread does not perform the SSL Handshake but instead defers the handshake to the newly-created Reader Thread which performs the SSL handshake and then reads the incoming ORB request message. This property can be used on servers that handle an extremely large amount of concurrent new incoming SSL ORB connections, ensuring that the ORB's Listener Thread does not become a bottleneck, and eliminating or reducing SSL handshake read timeouts (due to the com.ibm.ws.orb.transport.SSLHandshakeTimeout setting).
The ORBs secure Listener Thread ports are:
- CSIV2_SSL_MUTUALAUTH_LISTENER_ADDRESS - CSIv2 Client Authentication SSL Port
- CSIV2_SSL_SERVERAUTH_LISTENER_ADDRESS - CSIv2 SSL Port
- SAS_SSL_SERVERAUTH_LISTENER_ADDRESS - SAS SSL Port
Information Value WAS default false JDK default none
com.ibm.ws.orb.transport.SSLHandshakeTimeout
Specify a timeout value for reading SSL handshake-related messages.
When we 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 we do not set this custom property or do not set it to a positive integer value, the timeout value defaults to zero (0), a timeout period is not added, and the listener thread can hang.
Information Value Data type Integer Default Zero (0) Units Milliseconds
com.ibm.ws.orb.transport.useMultiHome
Specifies whether the server ORB binds to all network interfaces in the system. If we specify true, the ORB binds to all network interfaces available to it. If we specify false, the ORB only binds to the network interface that is specified for the com.ibm.CORBA.LocalHost system property.
Information Value WAS default true JDK default true
javax.rmi.CORBA.UtilClass
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 WAS default com.ibm.ws.orb.WSUtilDelegateImpl JDK default None
Related:
Logical pool distribution Administrative console buttons Administrative console preference settings Character code set conversion support for the Java Object Request Broker service Client-side programming tips for the Object Request Broker service Object Request Broker service settings Object Request Brokers: Resources for learning Tune the application serving environment