KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > ejb > support > AbstractStatelessSessionBean


1 /*
2  * Copyright 2002-2007 the original author or authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.springframework.ejb.support;
18
19 import javax.ejb.CreateException JavaDoc;
20 import javax.ejb.EJBException JavaDoc;
21
22 import org.apache.commons.logging.Log;
23 import org.apache.commons.logging.LogFactory;
24
25 /**
26  * Convenient superclass for stateless session beans (SLSBs), minimizing
27  * the work involved in implementing an SLSB and preventing common errors.
28  * <b>Note that SLSBs are the most useful kind of EJB.</b>
29  *
30  * <p>As the ejbActivate() and ejbPassivate() methods cannot be invoked
31  * on SLSBs, these methods are implemented to throw an exception and should
32  * not be overriden by subclasses. (Unfortunately the EJB specification
33  * forbids enforcing this by making EJB lifecycle methods final.)
34  *
35  * <p>There should be no need to override the <code>setSessionContext()</code>
36  * or <code>ejbCreate()</code> lifecycle methods.
37  *
38  * <p>Subclasses are left to implement the <code>onEjbCreate()</code> method
39  * to do whatever initialization they wish to do after their BeanFactory has
40  * already been loaded, and is available from the <code>getBeanFactory()</code>
41  * method.
42  *
43  * <p>This class provides the no-arg <code>ejbCreate()</code> method required
44  * by the EJB specification, but not the SessionBean interface, eliminating
45  * a common cause of EJB deployment failure.
46  *
47  * @author Rod Johnson
48  */

49 public abstract class AbstractStatelessSessionBean extends AbstractSessionBean {
50
51     /** Logger available to subclasses */
52     protected final Log logger = LogFactory.getLog(getClass());
53
54
55     /**
56      * This implementation loads the BeanFactory. A BeansException thrown by
57      * loadBeanFactory will simply get propagated, as it is a runtime exception.
58      * <p>Don't override it (although it can't be made final): code your own
59      * initialization in onEjbCreate(), which is called when the BeanFactory
60      * is available.
61      * <p>Unfortunately we can't load the BeanFactory in setSessionContext(),
62      * as resource manager access isn't permitted there - but the BeanFactory
63      * may require it.
64      */

65     public void ejbCreate() throws CreateException JavaDoc {
66         loadBeanFactory();
67         onEjbCreate();
68     }
69
70     /**
71      * Subclasses must implement this method to do any initialization
72      * they would otherwise have done in an <code>ejbCreate()</code> method.
73      * In contrast to <code>ejbCreate</code>, the BeanFactory will have been loaded here.
74      * <p>The same restrictions apply to the work of this method as
75      * to an <code>ejbCreate()</code> method.
76      * @throws CreateException
77      */

78     protected abstract void onEjbCreate() throws CreateException JavaDoc;
79
80
81     /**
82      * @see javax.ejb.SessionBean#ejbActivate(). This method always throws an exception, as
83      * it should not be invoked by the EJB container.
84      */

85     public void ejbActivate() throws EJBException JavaDoc {
86         throw new IllegalStateException JavaDoc("ejbActivate must not be invoked on a stateless session bean");
87     }
88
89     /**
90      * @see javax.ejb.SessionBean#ejbPassivate(). This method always throws an exception, as
91      * it should not be invoked by the EJB container.
92      */

93     public void ejbPassivate() throws EJBException JavaDoc {
94         throw new IllegalStateException JavaDoc("ejbPassivate must not be invoked on a stateless session bean");
95     }
96
97 }
98
Popular Tags