+

Search Tips   |   Advanced Search

EJB container system properties

In addition to the specific EJB container settings that are accessible from the administrative console, we can set EJB system properties as JVM custom properties.

Use the JVM custom 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.

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.

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.

The embeddable container and servers configured for development mode perform the additional validation 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 set to true, these exceptions are treated like system runtime exceptions, and causes an EJBException to be issued on the client side.

If 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.


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.

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 administrative console.

The property is specified in minutes, the only valid unit. The default 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 administrative 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.

Setting the property to true overrides the following behaviors:


com.ibm.websphere.ejbcontainer.EE6Compatibility

Specifies a server-wide setting that indicates the EJB container provides default behaviors that are consistent with the Java Enterprise Edition (Java EE) 6.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 administrative 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 6.0 behaviors, this system property might be set to revert the EJB container back to the Java EE 6.0 default behaviors.

Set the property to true prevents the @Local and @Remote annotations from being ignored even if they are specified with an empty value on the bean class and other business interfaces are specified. When the property is not specified and these annotations are specified on the bean class, the annotations cause the interfaces on the implements clause to be considered as local or remote business interfaces, unless:

  1. The <business-local>, <business-remote>, or <local-bean> interfaces are specified in the ejb-jar.xml file.

  2. The @LocalBean annotation is specified on the bean class.

  3. The @Local or @Remote annotations with an empty value are specified on the interface classes on the implements clause.

When the property is specified, a single interface on the implements clause will still be considered as a local or remote business interface even if one of these designations has been used. Instead of setting the property, we can remove the @Local or @Remote annotation with an empty value and use one of the other options instead.


com.ibm.websphere.ejbcontainer.excludeRootExceptionOnRollback

By default, the EJB container will set the root cause of the exception that occurs during transaction rollback. If set to 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

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:

beantype=[H]min,[H]max[,timeout][:beantype=[H]min,[H]max...]

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. The optional timeout element is the wait time for the next available bean instance to become available when a hard limit is specified for the maximum pool size. Do not specify the brackets shown in the previous prototype; they denote the optional timeout value or 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:

*=30,100

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.

SMApp#PerfModule#TunerBean=54,
   :SMApp#SMModule#TypeBean=100,200

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. The default wait time is 300 seconds. After either the wait time expires or the transaction timeout is reached, the EJB container aborts the method call on the bean and returns either a javax.ejb.EJBException or a javax.transaction.TransactionRolledbackException.The wait time may also be configured by including the optional timeout value after the maximum configured hard limit and is specified in seconds.

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:

SMApp#SMModule#TypeBean=100,H200
To indicate that the EJB container preloads the pool with a minimum of 100 EJB instances when the application is started, then enter:
SMApp#SMModule#TypeBean=H100,200
To indicate that no more than 150 EJB instances are created, and that additional requests must wait for an instance for only 30 seconds before timing out, then enter:
SMApp#SMModule#TypeBean=50,H150,30

The hard limit indicator is only available to EJB v2.0 or higher stateless session beans.


Related:

  • EJB containers
  • Java EE application resource declarations
  • Change applications to WebSphere "version specific" setRollbackOnly behavior
  • Manage EJB containers
  • EJB container settings
  • Java virtual machine custom properties