Object Request Broker service settings
Configure the Java Object Request Broker (ORB) service.
To view this administrative console page:
- For an application server, click...
Servers > Server Types > WebSphere application servers > server > Container services > ORB service.
- For a deployment manager, click...
System administration > Deployment manager > ORB service.
Several settings are available for controlling internal Object Request Broker (ORB) processing. Use these settings to improve application performance in the case of applications that contain enterprise beans. We can make changes to these settings for the default server or any application server configured in the administrative domain.
Request timeout
Number of seconds to wait before timing out on a request message.
If we use command-line scripting, the full name of this system property is com.ibm.CORBA.RequestTimeout.
Information Value Data type int Units Seconds Default 180 Range 0 - largest integer recognized by Java
Request retries count
Number of times that the ORB attempts to send a request if a server fails. Retrying sometimes enables recovery from transient network failures. This field is ignored for z/OS .
If we use command-line scripting, the full name of this system property is com.ibm.CORBA.requestRetriesCount.
Information Value Data type int Default 1 Range 1 to 10
Request retries delay
Number of milliseconds between request retries. This field is ignored for z/OS.
If we use command-line scripting, the full name of this system property is com.ibm.CORBA.requestRetriesDelay.
Information Value Data type int Units Milliseconds Default 0 Range 0 to 60,000
Connection cache maximum
Maximum number of entries that can occupy the ORB connection cache before the ORB starts to remove inactive connections from the cache. This field is ignored for z/OS.
It is possible that the number of active connections in the cache will temporarily exceed this threshold value. If necessary, the ORB will continue to add connections as long as resources are available.
For use in command-line scripting, the full name of this system property is com.ibm.CORBA.MaxOpenConnections.
Information Value Data type Integer Units Connections Default 240 Range 10 - largest integer recognized by Java
Connection cache minimum
Minimum number of entries in the ORB connection cache. This field is ignored for z/OS.
The ORB will not remove inactive connections when the number of entries is below this value.
For use in command-line scripting, the full name of this system property is com.ibm.CORBA.MinOpenConnections.
Information Value Data type Integer Units Connections Default 100 Range Any integer that is at least 5 less than the value specified for the Connection cache maximum property.
ORB tracing
Enables the tracing of ORB General Inter-ORB Protocol (GIOP) messages.
This setting affects two system properties: com.ibm.CORBA.Debug and com.ibm.CORBA.CommTrace. If we set these properties through command-line scripting, we must set both properties to true to enable the tracing of GIOP messages.
Information Value Data type Boolean Default Not enabled (false)
Locate request timeout
Number of seconds to wait before timing out on a LocateRequest message. This field is ignored for z/OS.
If we use command-line scripting, the full name of this system property is com.ibm.CORBA.LocateRequestTimeout.
Information Value Data type int Units Seconds Default 180 Range 0 to 300
Force tunneling
Controls how the client ORB attempts to use HTTP tunneling. This field is ignored for z/OS.
If we use command-line scripting, the full name of this system property is com.ibm.CORBA.ForceTunnel.
Information Value Data type String Default NEVER Range Valid values are ALWAYS, NEVER, or WHENREQUIRED. Considering the following information when choosing the valid value:
- ALWAYS
- Use HTTP tunneling immediately, without trying TCP connections first.
- NEVER
- Disable HTTP tunneling. If a TCP connection fails, a CORBA system exception (COMM_FAILURE) occurs.
- WHENREQUIRED
- Use HTTP tunneling if TCP connections fail.
Tunnel agent URL
The web address of the servlet to use in support of HTTP tunneling. This field is ignored on the z/OS platform.
This web address must be a proper format:
http://w3.mycorp.com:81/servlet/com.ibm.CORBA.services.IIOPTunnelServlet
For applets: http://applethost:port/servlet/com.ibm.CORBA.services.IIOPTunnelServlet.
This field is required if HTTP tunneling is set. If we use command-line scripting, the full name of this system property is com.ibm.CORBA.TunnelAgentURL.
Pass by reference
Specifies how the ORB passes parameters. If enabled, the ORB passes parameters by reference instead of by value, to avoid making an object copy. If we do not enable the pass by reference option, a copy of the parameter passes rather than the parameter object itself. This can be expensive because the ORB must first make a copy of each parameter object.
Use this option only when the EJB client and the EJB are on the same classloader. This requirement means that the EJB client and the EJB must be deployed in the same EAR file.
If the EJB client and server are installed in the same instance or the product, and the client and server use remote interfaces, enabling the pass by reference option can improve performance up to 50%. The pass by reference option helps performance only where non-primitive object types are passed as parameters. Therefore, int and floats are always copied, regardless of the call model.
Enable this property with caution because unexpected behavior can occur. If an object reference is modified by the callee, the caller's object is modified as well, since they are the same object.
If we use command-line scripting, the full name of this system property is com.ibm.CORBA.iiop.noLocalCopies.
Information Value Data type Boolean Default Not enabled (false) The use of this option for enterprise beans with remote interfaces violates EJB Specification, v2.0 (see section 5.4). Object references passed to EJB methods or to EJB home methods are not copied and can be subject to corruption.
Consider the following example:
Iterator iterator = collection.iterator(); yPrimaryKey pk = new MyPrimaryKey(); while (iterator.hasNext()) { pk.id = (String) iterator.next(); MyEJB myEJB = myEJBHome.findByPrimaryKey(pk); }In this example, a reference to the same MyPrimaryKey object passes into the product with a different ID value each time. Running this code with pass by reference enabled causes a problem within the application server because multiple enterprise beans are referencing the same yPrimaryKey object. To avoid this problem, set the com.ibm.websphere.ejbcontainer.allowPrimaryKeyMutation system property to true when the pass by reference option is enabled. Setting the pass by reference option to true causes the EJB container to make a local copy of the PrimaryKey object. As a result, however, a small portion of the performance advantage of setting the pass by reference option is lost.
As a general rule, any application code that passes an object reference as a parameter to an enterprise bean method or to an EJB home method must be scrutinized to determine if passing that object reference results in loss of data integrity or in other problems.
After examining your code, we can enable the pass by reference option by setting the com.ibm.CORBA.iiop.noLocalCopies system property to true. We can also enable the pass by reference option in the administrative console. Click Servers > Server Types > WebSphere application servers > server > Container services > ORB service and select Pass by reference.
Manage Object Request Brokers Thread pool settings Object Request Broker communications trace Object Request Brokers: Resources for learning Object Request Broker tuning guidelines