org.springframework.ejb.support.AbstractStatefulSessionBean Maven / Gradle / Ivy
/*
* Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.ejb.support;
import org.springframework.beans.BeansException;
import org.springframework.beans.FatalBeanException;
/**
* Convenient superclass for stateful session beans.
* SFSBs should extend this class, leaving them to implement the
* ejbActivate()
and ejbPassivate()
lifecycle
* methods to comply with the requirements of the EJB specification.
*
* Note: Subclasses should invoke the loadBeanFactory()
* method in their custom ejbCreate()
and ejbActivate()
* methods, and should invoke the unloadBeanFactory()
method in
* their ejbPassivate
method.
*
*
Note: The default BeanFactoryLocator used by this class's superclass
* (ContextJndiBeanFactoryLocator) is not serializable. Therefore,
* when using the default BeanFactoryLocator, or another variant which is
* not serializable, subclasses must call setBeanFactoryLocator(null)
* in ejbPassivate()
, with a corresponding call to
* setBeanFactoryLocator(xxx)
in ejbActivate()
* unless relying on the default locator.
*
* @author Rod Johnson
* @author Colin Sampaleanu
* @see org.springframework.context.access.ContextJndiBeanFactoryLocator
*/
public abstract class AbstractStatefulSessionBean extends AbstractSessionBean {
/**
* Load a Spring BeanFactory namespace. Exposed for subclasses
* to load a BeanFactory in their ejbCreate()
methods.
* Those callers would normally want to catch BeansException and
* rethrow it as {@link javax.ejb.CreateException}. Unless the
* BeanFactory is known to be serializable, this method must also
* be called from ejbActivate()
, to reload a context
* removed via a call to unloadBeanFactory()
from
* the ejbPassivate()
implementation.
*/
protected void loadBeanFactory() throws BeansException {
super.loadBeanFactory();
}
/**
* Unload the Spring BeanFactory instance. The default ejbRemove
* method invokes this method, but subclasses which override
* ejbRemove
must invoke this method themselves.
*
Unless the BeanFactory is known to be serializable, this method
* must also be called from ejbPassivate()
, with a corresponding
* call to loadBeanFactory()
from ejbActivate()
.
*/
protected void unloadBeanFactory() throws FatalBeanException {
super.unloadBeanFactory();
}
}