|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.ejb.support.AbstractEnterpriseBean
public abstract class AbstractEnterpriseBean
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(org.springframework.beans.factory.access.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.
ContextJndiBeanFactoryLocator
,
ContextSingletonBeanFactoryLocator
Nested Class Summary | |
---|---|
private static class |
AbstractEnterpriseBean.BeanFactoryReferenceReleaseListener
Implementation of WeakReferenceMonitor's ReleaseListener callback interface. |
Field Summary | |
---|---|
static java.lang.String |
BEAN_FACTORY_PATH_ENVIRONMENT_KEY
|
private BeanFactoryLocator |
beanFactoryLocator
Helper strategy that knows how to locate a Spring BeanFactory (or ApplicationContext). |
private java.lang.String |
beanFactoryLocatorKey
factoryKey to be used with BeanFactoryLocator |
private BeanFactoryReference |
beanFactoryReference
Spring BeanFactory that provides the namespace for this EJB |
Constructor Summary | |
---|---|
AbstractEnterpriseBean()
|
Method Summary | |
---|---|
void |
ejbRemove()
EJB lifecycle method, implemented to invoke onEjbRemove()
and unload the BeanFactory afterwards. |
protected BeanFactory |
getBeanFactory()
May be called after ejbCreate() . |
(package private) void |
loadBeanFactory()
Load a Spring BeanFactory namespace. |
protected void |
onEjbRemove()
Subclasses must implement this method to do any initialization they would otherwise have done in an ejbRemove() method. |
void |
setBeanFactoryLocator(BeanFactoryLocator beanFactoryLocator)
Set the BeanFactoryLocator to use for this EJB. |
void |
setBeanFactoryLocatorKey(java.lang.String factoryKey)
Set the bean factory locator key. |
(package private) void |
unloadBeanFactory()
Unload the Spring BeanFactory instance. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String BEAN_FACTORY_PATH_ENVIRONMENT_KEY
private BeanFactoryLocator beanFactoryLocator
private java.lang.String beanFactoryLocatorKey
private BeanFactoryReference beanFactoryReference
Constructor Detail |
---|
public AbstractEnterpriseBean()
Method Detail |
---|
public void setBeanFactoryLocator(BeanFactoryLocator beanFactoryLocator)
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.
AbstractStatelessSessionBean.ejbCreate()
,
AbstractMessageDrivenBean.ejbCreate()
,
AbstractStatefulSessionBean.loadBeanFactory()
,
ContextJndiBeanFactoryLocator
public void setBeanFactoryLocatorKey(java.lang.String factoryKey)
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.
BEAN_FACTORY_PATH_ENVIRONMENT_KEY
void loadBeanFactory() throws BeansException
Package-visible as it shouldn't be called directly by user-created subclasses.
BeansException
AbstractStatelessSessionBean.ejbCreate()
void unloadBeanFactory() throws FatalBeanException
ejbRemove()
method invokes this method, but subclasses which override ejbRemove()
must invoke this method themselves.
Package-visible as it shouldn't be called directly by user-created subclasses.
FatalBeanException
protected BeanFactory getBeanFactory()
ejbCreate()
.
public void ejbRemove()
onEjbRemove()
and unload the BeanFactory afterwards.
Don't override it (although it can't be made final): code your shutdown
in onEjbRemove()
.
protected void onEjbRemove()
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.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |