+

Search Tips   |   Advanced Search

EJB container system properties

In addition to the settings that are accessible from the console, we can set EJB system properties using command-line scripting.

We can use the properties page to define the following EJB container system properties:


com.ibm.websphere.ejbcontainer.allowEarlyInsert

This property is applicable to container managed persistence (CMP) 1.1 beans only. By default, the EJB container creates the entity bean representation in the database only after the method, ejbPostCreate(...), is called.

Supported configurations: CMP beans are not supported in EJB 3.x modules.

Some applications might rely on method, ejbCreate(...), to have created the entity bean in the database. For such a requirement, setting the JVM property, com.ibm.websphere.ejbcontainer.allowEarlyInsert, to true overrides the default behavior.


com.ibm.websphere.ejbcontainer.checkEJBApplicationConfiguration

Specifies a server-wide setting that indicates the container should complete additional application configuration validation to ensure the application is consistent with the Java EE specification.

Supported configurations: We can also specify this property as an application custom property.

This property is intended for use during development of an application to assist in identifying improper configurations, which might result in unexpected behavior. For example, applying the javax.ejb.Asynchronous annotation to an interface is not supported by the specification and is typically ignored. When this property is enabled, an error is logged, and an exception occurs when the bean is processed. This failure is useful during development to understand why the methods are not working asynchronously.

Additional configuration validation is completed and might result in multiple configuration warnings and errors being logged when this property is enabled. Typically, this additional validation is for scenarios that incur extra overhead to run, which is unnecessary for stable applications on a production server. For minor deviations from the specification, only warnings are logged. For more significant issues, an error is logged, and the application cannot run until the error is corrected.

When the com.ibm.websphere.ejbcontainer.checkEJBApplicationConfiguration property is enabled, some of the issues that were reported as warnings are displayed as errors, which prevents the application from starting.gotcha

Supported configurations: The embeddable container and servers configured for development mode perform the additional validation that is associated with this property; however, all identified issues are reported as warnings, rather than errors, unless this property is specifically enabled.


com.ibm.websphere.ejbcontainer.declaredUncheckedAreSystemExceptions

Enable you to indicate whether exceptions that are declared on the throws clause of an EJB method should are treated as application exceptions or as system runtime exceptions. When true, these exceptions are treated like system runtime exceptions, and causes an EJBException to be issued on the client side.

If this property is not specified, or if this property is set to false, exceptions that are declared on the throws clause of an EJB method are treated as application exceptions.

The default value for this property is false.

transition: In Version 7, the default value for this property is true.


com.ibm.websphere.ejbcontainer.defaultSessionAccessTimeout

Enable you to specify the default session concurrency access timeout value for all session beans on a server. The value is specified in milliseconds.

Specify a Long data type value to disable or enable session concurrency:

If this property is set, the specified session bean concurrency access timeout is used server wide instead of the default value of -1 (wait forever). This applies to both stateful and singleton session beans. At the individual session bean level, the timeout can be overridden using the @AccessTimeout annotation on the bean class or method or using the access-timeout deployment descriptor element.


com.ibm.websphere.ejbcontainer.defaultStatefulSessionTimeout

Specifies a server-wide timeout for stateful session beans, which indicates how long a stateful session bean is retained by the server.

Supported configurations: The property applies only to EJB 3.1 modules and later.

This is a system property that we can add directly to the server.xml file or as a generic JVM argument using the console.

The property is specified in minutes, the only valid unit. The default value is 10 minutes. A value of zero specifies that the server uses the default value of 10 minutes. A negative value is not valid. Any zero or greater value is valid. If a non-valid value is specified, a warning is issued to SystemOut, and the default value is used.

The stateful session bean timeout duration can be specified on a per-bean basis using annotations or xml. If a timeout duration is explicitly specified for a particular bean, this takes precedence over any server-wide timeout setting.

If no bean-specific timeout duration exists for a particular bean, then the server-wide timeout setting is applied to that bean.

If no bean-specific timeout duration exists for a particular bean, and no server-wide timeout setting exists, then the default timeout setting is applied to that bean.


com.ibm.websphere.ejbcontainer.EE5Compatibility

Specifies a server-wide setting that indicates the EJB container provides default behaviors that are consistent with the Java Enterprise Edition (Java EE) 5.0 specification.

This is a system property that we can add directly to the server.xml file or as a generic JVM argument using the console.

The Java EE specification includes improvements to the EJB programming model that have resulted in minor changes to some default behaviors. In general, these changes provide more intuitive or more reliable behavior. However, if an application has been written to rely on one or more of the Java EE 5.0 behaviors, this system property might be set to revert the EJB container back to the Java EE 5.0 default behaviors.

Set the property to true overrides the following behaviors:


com.ibm.websphere.ejbcontainer.excludeRootExceptionOnRollback

By default, the EJB container will set the root cause of the exception that occurs during transaction rollback. If true, the EJB container will not set the root cause. This is useful if the application does not expect to find a cause, or if the application logs exceptions and is now logging significantly more data.


com.ibm.websphere.ejbcontainer.extendSetRollbackOnlyBehaviorToInstanceFor

Allow the user to specify application names in which they want to have the EJBs in their EJB 3.x modules demonstrate the pre-EJB 3.0 setRollbackOnly behavior.

The pre-EJB 3.0 setRollbackOnly behavior is described in Change applications to WebSphere version specific setRollbackOnly behavior.


com.ibm.websphere.ejbcontainer.limitSetRollbackOnlyBehaviorToInstanceFor

Allow the user to specify application names in which they want to have the EJBs in their EJB 3.x modules demonstrate the EJB 3.x setRollbackOnly behavior.

The EJB 3.x setRollbackOnly behavior is described in Change applications to WebSphere version specific setRollbackOnly behavior.


com.ibm.websphere.ejbcontainer.poolSize

Specifies the size of the pool for the specified bean type. This property applies to stateless, message-driven, and entity beans. If we do not specify a default value, the container default value, 50 and 500, are used.

Set the pool size for a given entity bean as:

The beantype element is the Java EE name of the bean, formed by concatenating the application name, the # character, the module name, the # character, and the name of the bean, that is, the string assigned to the <ejb-name> field in the deployment descriptor of the bean. The min and max elements are the minimum and maximum pool sizes for that bean type. Do not specify the square brackets shown in the previous prototype; they denote optional additional bean types that we can specify after the first bean type. Each bean type specification is delimited by a colon (:).

Use an asterisk (*) as the value of beantype to indicate that all bean types are to use those values unless overridden by an exact bean-type specification somewhere else in the string; for example:

To specify a default value, omit either the min or max value but retain the comma (,) between the two values; for example:

The following example displayed on multiple lines for publication purposes.

We can specify the bean types in any order within the string.

We can designate the maximum configured EJB pool size as a hard limit by inserting the character, H, directly in front of the max value. Without the H character, the maximum value indicates how many EJB instances can be pooled and does not limit the number of EJB instances that can be created or in use. Inserting the H character before the max value indicates a hard limit, and the EJB container blocks creation of more instances when that limit is reached. Further threads must wait until an instance becomes available or until the transaction times out.

We can designate the minimum configured EJB pool size as a hard limit by inserting the character, H, directly in front of the min value. Without the H character, the minimum value indicates how many EJB instances are maintained in the pool when the EJB type is not actively in use, but does not preload the pool when the application is started. Typically, the minimum pool size is not reached until the minimum number of EJB instances has been accessed concurrently by the application. Inserting the H character before the min value indicates a hard limit, and the EJB container preloads the pool with the minimum number of EJB instances when the application is started.

For example, to indicate that no more than 200 EJB instances are created, and that additional requests must wait for an instance and might time out while waiting, then enter:

To indicate that the EJB container preloads the pool with a minimum of 100 EJB instances when the application is started, then enter:

Supported configurations: The hard limit indicator is only available to EJB Version 2.0 or higher stateless session beans.


Related concepts

  • EJB containers
  • Java EE application resource declarations


    Related tasks

  • Change applications to WebSphere version specific setRollbackOnly behavior
  • Manage EJB containers


    Related information:

  • EJB container settings