EJB Performance Tuning

Cache EJB resources: Use setSessionContext() or ejbCreate() to cache bean resources. This is again an example of using bean lifecycle methods to perform application actions only once where possible. Remember to release acquired resources in the ejbRemove() method.

Use the Appropriate Stubs

The stub classes needed by EJB applications are generated dynamically at runtime when an EJB client needs them. This means that it is not necessary to generate the stubs or retrieve the client JAR file when deploying an application with remote EJB components. When deploying an application, it is no longer necessary to specify the --retrieve option, which can speed up deployment.

If you have a legacy rich-client application that directly uses the CosNaming service (not a recommended configuration), then you must generate the stubs for your application explicitly using RMIC. For more information, see Sun GlassFish Enterprise Server 2.1 Troubleshooting Guidefor more details.

Remove Unneeded Stateful Session Beans

Removing unneeded stateful session beans avoids passivating them, which requires disk operations.

Cache and Pool Tuning Tips

Follow these tips when using the EJB cache and pools to improve performance:

Explicitly call remove(): Allow stateful session EJB components to be removed from the container cache by explicitly calling of the remove() method in the client.

Tune the entity EJB component’s pool size: Entity Beans use both the EJB pool and cache settings. Tune the entity EJB component’s pool size to minimize the creation and destruction of beans. Populating the pool with a non-zero steady size before hand is useful for getting better response for initial requests.

Cache bean-specific resources: Use the setEntityContext() method to cache bean specific resources and release them using the unSetEntityContext() method.

Load related data efficiently for container-managed relationships (CMRs). For more information, see “Pre-fetching Container Managed Relationship (CMR) Beans” on page 44

Identify read-only beans: Configure read-only entity beans for read only operations. For more information, see “Read-Only Entity Beans” on page 43

Using Local and Remote Interfaces

This section describes some considerations when EJB components are used by local and remote clients.

36

Sun GlassFish Enterprise Server 2.1 Performance Tuning Guide • January 2009

Page 36
Image 36
Sun Microsystems 820434310 manual Using Local and Remote Interfaces, Use the Appropriate Stubs, Cache and Pool Tuning Tips