public abstract class

AbstractEnterpriseBean

extends Object
implements EnterpriseBean
java.lang.Object
   ↳ org.springframework.ejb.support.AbstractEnterpriseBean
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

Base class for Spring-based EJB 2.x beans. Not intended for direct subclassing: Extend AbstractStatelessSessionBean, AbstractStatefulSessionBean or AbstractMessageDrivenBean instead.

Provides a standard way of loading a Spring BeanFactory. Subclasses act as a facade, with the business logic deferred to beans in the BeanFactory. Default is to use a ContextJndiBeanFactoryLocator, which will initialize an XML ApplicationContext from the class path (based on a JNDI name specified). For a different locator strategy, setBeanFactoryLocator may be called (before your EJB's ejbCreate method is invoked, e.g. in setSessionContext). For use of a shared ApplicationContext between multiple EJBs, where the container class loader setup supports this visibility, you may instead use a ContextSingletonBeanFactoryLocator. Alternatively, setBeanFactoryLocator(BeanFactoryLocator) may be called with a custom implementation of the BeanFactoryLocator interface.

Note that we cannot use final for our implementation of EJB lifecycle methods, as this would violate the EJB specification.

Summary

Constants
String BEAN_FACTORY_PATH_ENVIRONMENT_KEY
Public Constructors
AbstractEnterpriseBean()
Public Methods
void ejbRemove()
EJB lifecycle method, implemented to invoke onEjbRemove() and unload the BeanFactory afterwards.
void setBeanFactoryLocator(BeanFactoryLocator beanFactoryLocator)
Set the BeanFactoryLocator to use for this EJB.
void setBeanFactoryLocatorKey(String factoryKey)
Set the bean factory locator key.
Protected Methods
BeanFactory getBeanFactory()
May be called after ejbCreate().
void onEjbRemove()
Subclasses must implement this method to do any initialization they would otherwise have done in an ejbRemove() method.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final String BEAN_FACTORY_PATH_ENVIRONMENT_KEY

Constant Value: "java:comp/env/ejb/BeanFactoryPath"

Public Constructors

public AbstractEnterpriseBean ()

Public Methods

public void ejbRemove ()

EJB lifecycle method, implemented to invoke onEjbRemove() and unload the BeanFactory afterwards.

Don't override it (although it can't be made final): code your shutdown in onEjbRemove().

public void setBeanFactoryLocator (BeanFactoryLocator beanFactoryLocator)

Set the BeanFactoryLocator to use for this EJB. Default is a ContextJndiBeanFactoryLocator.

Can be invoked before loadBeanFactory, for example in constructor or setSessionContext if you want to override the default locator.

Note that the BeanFactory is automatically loaded by the ejbCreate implementations of AbstractStatelessSessionBean and AbstractMessageDriverBean but needs to be explicitly loaded in custom AbstractStatefulSessionBean ejbCreate methods.

public void setBeanFactoryLocatorKey (String factoryKey)

Set the bean factory locator key.

In case of the default BeanFactoryLocator implementation, ContextJndiBeanFactoryLocator, this is the JNDI path. The default value of this property is "java:comp/env/ejb/BeanFactoryPath".

Can be invoked before #loadBeanFactory, for example in the constructor or setSessionContext if you want to override the default locator key.

Protected Methods

protected BeanFactory getBeanFactory ()

May be called after ejbCreate().

Returns
  • the bean factory

protected void onEjbRemove ()

Subclasses must implement this method to do any initialization they would otherwise have done in an ejbRemove() method. The BeanFactory will be unloaded afterwards.

This implementation is empty, to be overridden in subclasses. The same restrictions apply to the work of this method as to an ejbRemove() method.