You can indicating that a particular EJB type should not synchronize
its state to persistent storage prior to each findBy invocation by using environment
variables or a marker interface.
About this task
There are two options available for indicating that a particular
EJB type should not synchronize its state to persistent storage prior to each
findBy invocation:
- Set an EJB environment variable within the bean's deployment descriptor
- Have the bean implementation class implement a marker interface. This
second technique is especially useful if you have a number of bean implementations
that all extend a single root class; in this case you can have the root class
implement the marker interface, causing all beans that extend this class to
inherit the behavior as well.
Procedure
- To use the EJB environment variable technique, edit the
EJB deployment descriptor using any standard Java 2, Enterprise Edition (J2EE)
development tool. Use the following steps as a guide. (For information on
your tool options, consult the Assembly tools
article.)
- Start the tool.
- Select the EJB deployment descriptor of the bean you want to
work with.
- Create an EJB environment variable with the name com/ibm/websphere/ejbcontainer/DisableFlushBeforeFind.
- Set the type of this variable to java.lang.Boolean.
- Set the value to True to prevent the pre-find synchronization,
or False to enable the default behavior.
- Save your changes.
- To use a marker interface, code your bean implementation
class to implement the com.ibm.websphere.ejbcontainer.DisableFlushBeforeFind interface.
The bean implementation class need not directly implement the interface;
any parent class can implement the interface. See the com.ibm.websphere.ejbcontainer package
in the Reference > Developer > API documentation section
of the information center.
Ensuring data integrity for queries
performed during a transaction
If you choose to disable the automatic
pre-find synchronization for certain bean types, it is very important that
your application use other means to ensure that queries performed during the
transaction are not performed on data that may no longer be valid. You can
use the flushCache method on the com.ibm.websphere.ejbcontainer.EJBContextExtension
class (an extension of javax.ejb.EJBContext) to perform a manual synchronization
to persistent storage at application-defined times. For more information on
EJBContextExtension and its related classes SessionContextExtension, EntityContextExtension
and MessageDrivenContextExtension, see the com.ibm.websphere.ejbcontainer package
in the Reference > Developer > API documentation section
of the information center.