[prev in list] [next in list] [prev in thread] [next in thread]
List: openejb-cvs
Subject: svn commit: r672566 [1/9] - in /openejb/trunk/openejb3: ./ api/
From: dblevins () apache ! org
Date: 2008-06-28 18:48:33
Message-ID: 20080628184840.289212388A0C () eris ! apache ! org
[Download RAW message or body]
Author: dblevins
Date: Sat Jun 28 11:48:28 2008
New Revision: 672566
URL: http://svn.apache.org/viewvc?rev=672566&view=rev
Log:
OPENEJB-836: Singleton Session Beans
Does it work? Yes. Is it complete? No.
Added:
openejb/trunk/openejb3/api/
openejb/trunk/openejb3/api/ejb31-api-experimental/
openejb/trunk/openejb3/api/ejb31-api-experimental/pom.xml
openejb/trunk/openejb3/api/ejb31-api-experimental/src/
openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/
openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/
openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/
openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/ejb/
openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/ejb/Singleton.java
openejb/trunk/openejb3/api/pom.xml
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/SingletonBeanInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/SingletonSessionContainerInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/
- copied from r672456, \
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonBeanManagedTxPolicy.java \
(with props) openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContainer.java \
(with props) openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContext.java \
(with props) openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonEjbHomeHandler.java \
(with props) openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonEjbObjectHandler.java \
(with props) openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java \
(with props) openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/singleton/
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/singleton/SingletonContainerTest.java
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SingletonBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/
- copied from r672456, \
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/stateless/
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/AnnotatedFieldInjectionSingletonBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicSingletonBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicSingletonBusinessLocal.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicSingletonBusinessRemote.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicSingletonHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicSingletonInterceptedBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicSingletonInterceptedLocal.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicSingletonInterceptedRemote.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicSingletonLocalHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicSingletonLocalObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicSingletonObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicSingletonPojoBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BeanTxSingletonBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BeanTxSingletonHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BeanTxSingletonObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/ContainerTxSingletonBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/ContainerTxSingletonHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/ContainerTxSingletonObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/ContextLookupSingletonBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/ContextLookupSingletonPojoBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/EncSingletonBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/EncSingletonHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/EncSingletonObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/FieldInjectionSingletonBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/RmiIiopSingletonBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/RmiIiopSingletonHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/RmiIiopSingletonObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/SetterInjectionSingletonBean.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/
- copied from r672456, \
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/stateless/
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedFieldInjectionSingletonLocalTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedFieldInjectionSingletonPojoHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedFieldInjectionSingletonPojoLocalHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedFieldInjectionSingletonTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedSetterInjectionSingletonLocalTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedSetterInjectionSingletonPojoHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedSetterInjectionSingletonPojoLocalHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedSetterInjectionSingletonTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/BMTSingletonAllowedOperationsTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/BasicSingletonLocalTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/BasicSingletonTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonAllowedOperationsTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonAnnotatedFieldInjectionTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonBeanTxTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonContainerTxTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonContextLookupTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonDefaultInterceptorTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonEjbHomeTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonEjbMetaDataTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonEjbObjectTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonFieldInjectionTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonHandleTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonHomeHandleTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonInterceptorTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonJndiEncTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonJndiTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonLocalBusinessIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonLocalIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonLocalTestSuite.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoContextLookupTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoEjbHomeTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoEjbLocalHomeTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoEjbLocalObjectTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoEjbMetaDataTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoEjbObjectTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoHandleTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoHomeHandleTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoLocalHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoLocalJndiTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoRemoteIntrfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonPojoRemoteJndiTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonRemoteBusinessIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonRemoteIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonRmiIiopTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonSetterInjectionTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/SingletonTestSuite.java
openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/SingletonEJBHomeHandler.java
openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/SingletonEJBObjectHandler.java
Removed:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/StatelessBeanManagedTxPolicy.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/StatelessContainer.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/StatelessContext.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/StatelessEjbHomeHandler.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/StatelessEjbObjectHandler.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/StatelessInstanceManager.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/AnnotatedFieldInjectionStatelessBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicStatelessBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicStatelessBusinessLocal.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicStatelessBusinessRemote.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicStatelessHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicStatelessInterceptedBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicStatelessInterceptedLocal.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicStatelessInterceptedRemote.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicStatelessLocalHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicStatelessLocalObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicStatelessObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BasicStatelessPojoBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BeanTxStatelessBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BeanTxStatelessHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/BeanTxStatelessObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/ContainerTxStatelessBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/ContainerTxStatelessHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/ContainerTxStatelessObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/ContextLookupStatelessBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/ContextLookupStatelessPojoBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/EncStatelessBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/EncStatelessHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/EncStatelessObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/FieldInjectionStatelessBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/RmiIiopStatelessBean.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/RmiIiopStatelessHome.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/RmiIiopStatelessObject.java
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/singleton/SetterInjectionStatelessBean.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedFieldInjectionStatelessLocalTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedFieldInjectionStatelessPojoHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedFieldInjectionStatelessPojoLocalHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedFieldInjectionStatelessTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedSetterInjectionStatelessLocalTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedSetterInjectionStatelessPojoHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedSetterInjectionStatelessPojoLocalHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/AnnotatedSetterInjectionStatelessTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/BMTStatelessAllowedOperationsTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/BasicStatelessLocalTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/BasicStatelessTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessAllowedOperationsTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessAnnotatedFieldInjectionTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessBeanTxTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessContainerTxTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessContextLookupTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessDefaultInterceptorTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessEjbHomeTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessEjbMetaDataTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessEjbObjectTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessFieldInjectionTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessHandleTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessHomeHandleTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessInterceptorTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessJndiEncTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessJndiTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessLocalBusinessIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessLocalIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessLocalTestSuite.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoContextLookupTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoEjbHomeTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoEjbLocalHomeTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoEjbLocalObjectTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoEjbMetaDataTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoEjbObjectTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoHandleTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoHomeHandleTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoLocalHomeIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoLocalJndiTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoRemoteIntrfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessPojoRemoteJndiTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessRemoteBusinessIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessRemoteIntfcTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessRmiIiopTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessSetterInjectionTests.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessTestClient.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/StatelessTestSuite.java
Modified:
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/webapp/viewejb.jsp
openejb/trunk/openejb3/container/openejb-core/pom.xml
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/BeanTypes.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WsDeployer.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckPersistenceRefs.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmMetaData.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/EjbWsContext.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/Instance.java
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/iTest.java
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionType.java
openejb/trunk/openejb3/itests/openejb-itests-app/pom.xml
openejb/trunk/openejb3/itests/openejb-itests-beans/pom.xml
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/ejb-jar.xml
openejb/trunk/openejb3/itests/openejb-itests-beans/src/main/resources/META-INF/openejb-jar.xml
openejb/trunk/openejb3/itests/openejb-itests-client/pom.xml
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/ClientTestSuite.java
openejb/trunk/openejb3/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/singleton/MiscEjbTests.java
openejb/trunk/openejb3/pom.xml
openejb/trunk/openejb3/server/openejb-client/pom.xml
openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBHomeHandler.java
openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java
openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBMetaDataImpl.java
openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/JNDIContext.java
openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatefulEJBHomeHandler.java
openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/StatelessEJBHomeHandler.java
openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/RemoteiTest.java
openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/HttpEjbServerTest.java
openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/clienttools/ViewEjbBean.java
openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/main/DeploymentListBean.java
openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
Added: openejb/trunk/openejb3/api/ejb31-api-experimental/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/api/ejb31-api-experimental/pom.xml?rev=672566&view=auto
==============================================================================
--- openejb/trunk/openejb3/api/ejb31-api-experimental/pom.xml (added)
+++ openejb/trunk/openejb3/api/ejb31-api-experimental/pom.xml Sat Jun 28 11:48:28 \
2008 @@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 \
http://maven.apache.org/maven-v4_0_0.xsd"> + <parent>
+ <artifactId>api</artifactId>
+ <groupId>org.apache.openejb</groupId>
+ <version>3.1-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>ejb31-api-experimental</artifactId>
+ <packaging>jar</packaging>
+ <name>OpenEJB :: APIs :: EJB 3.1 Experimental</name>
+
+</project>
Added: openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/ejb/Singleton.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/ejb/Singleton.java?rev=672566&view=auto
==============================================================================
--- openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/ejb/Singleton.java \
(added)
+++ openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/ejb/Singleton.java \
Sat Jun 28 11:48:28 2008 @@ -0,0 +1,11 @@
+package javax.ejb;
+
+@java.lang.annotation.Target(value = {java.lang.annotation.ElementType.TYPE})
+@java.lang.annotation.Retention(value = \
java.lang.annotation.RetentionPolicy.RUNTIME) +public @interface Singleton {
+ java.lang.String name() default "";
+
+ java.lang.String mappedName() default "";
+
+ java.lang.String description() default "";
+}
Added: openejb/trunk/openejb3/api/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/api/pom.xml?rev=672566&view=auto
==============================================================================
--- openejb/trunk/openejb3/api/pom.xml (added)
+++ openejb/trunk/openejb3/api/pom.xml Sat Jun 28 11:48:28 2008
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 \
http://maven.apache.org/maven-v4_0_0.xsd"> + <parent>
+ <artifactId>openejb</artifactId>
+ <groupId>org.apache.openejb</groupId>
+ <version>3.1-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>api</artifactId>
+ <packaging>pom</packaging>
+ <name>OpenEJB :: APIs</name>
+
+ <modules>
+ <module>ejb31-api-experimental</module>
+ </modules>
+</project>
Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/opene \
jb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml \
(original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml \
Sat Jun 28 11:48:28 2008 @@ -122,6 +122,21 @@
<!--
# ==========================================================
+ # Default Singleton SessinBean Container
+ # ==========================================================
+ -->
+ <ServiceProvider
+ id="Default Singleton Container"
+ service="Container"
+ types="SINGLETON"
+ constructor="id, transactionManager, securityService"
+ class-name="org.apache.openejb.core.singleton.SingletonContainer">
+
+ </ServiceProvider>
+
+
+ <!--
+ # ==========================================================
# Default Stateful SessinBean Container
# ==========================================================
-->
Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/webapp/viewejb.jsp
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/opene \
jb-tomcat-webapp/src/main/webapp/viewejb.jsp?rev=672566&r1=672565&r2=672566&view=diff \
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/webapp/viewejb.jsp \
(original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/webapp/viewejb.jsp \
Sat Jun 28 11:48:28 2008 @@ -172,6 +172,9 @@
case STATELESS:
type = "Stateless SessionBean";
break;
+ case SINGLETON:
+ type = "Singleton SessionBean";
+ break;
default:
type = "Unkown Bean Type";
break;
Modified: openejb/trunk/openejb3/container/openejb-core/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/pom.xml?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/pom.xml (original)
+++ openejb/trunk/openejb3/container/openejb-core/pom.xml Sat Jun 28 11:48:28 2008
@@ -212,6 +212,11 @@
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
+ <artifactId>ejb31-api-experimental</artifactId>
+ <version>${version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
<artifactId>openejb-loader</artifactId>
<version>${version}</version>
</dependency>
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/BeanType.java?rev=672566&r1=672565&r2=672566&view=diff \
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/BeanType.java \
Sat Jun 28 11:48:28 2008 @@ -20,14 +20,14 @@
* @version $Rev$ $Date$
*/
public enum BeanType {
- STATEFUL, STATELESS, BMP_ENTITY, CMP_ENTITY, MESSAGE_DRIVEN;
+ STATEFUL, STATELESS, SINGLETON, BMP_ENTITY, CMP_ENTITY, MESSAGE_DRIVEN;
public boolean isEntity(){
return this == CMP_ENTITY || this == BMP_ENTITY;
}
public boolean isSession(){
- return this == STATEFUL || this == STATELESS;
+ return this == STATEFUL || this == STATELESS || this == SINGLETON;
}
public boolean isMessageDriven() {
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java \
Sat Jun 28 11:48:28 2008 @@ -215,6 +215,9 @@
case STATELESS:
entry += "STATELESS ";
break;
+ case SINGLETON:
+ entry += "SINGLETON ";
+ break;
case MESSAGE_DRIVEN:
entry += "MESSAGE ";
break;
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java \
Sat Jun 28 11:48:28 2008 @@ -60,6 +60,8 @@
ejbType = BeanType.STATEFUL;
} else if (bean.type == EnterpriseBeanInfo.STATELESS) {
ejbType = BeanType.STATELESS;
+ } else if (bean.type == EnterpriseBeanInfo.SINGLETON) {
+ ejbType = BeanType.SINGLETON;
} else if (bean.type == EnterpriseBeanInfo.MESSAGE) {
ejbType = BeanType.MESSAGE_DRIVEN;
} else if (bean.type == EnterpriseBeanInfo.ENTITY) {
@@ -99,7 +101,7 @@
}
Class serviceEndpoint = null;
- if (BeanType.STATELESS == ejbType){
+ if (BeanType.STATELESS == ejbType || BeanType.SINGLETON == ejbType ){
if(bean.serviceEndpoint != null){
serviceEndpoint = loadClass(bean.serviceEndpoint, \
"classNotFound.sei"); }
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/assembler/classic/EnterpriseBeanInfo.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanInfo.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanInfo.java \
Sat Jun 28 11:48:28 2008 @@ -29,6 +29,8 @@
public static final int MESSAGE = 3;
+ public static final int SINGLETON = 4;
+
public int type;
public String codebase;
Added: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/SingletonBeanInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/assembler/classic/SingletonBeanInfo.java?rev=672566&view=auto
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/SingletonBeanInfo.java \
(added)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/SingletonBeanInfo.java \
Sat Jun 28 11:48:28 2008 @@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.openejb.assembler.classic;
+
+public class SingletonBeanInfo extends EnterpriseBeanInfo {
+ public SingletonBeanInfo() {
+ type = SINGLETON;
+ }
+}
Added: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/SingletonSessionContainerInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/assembler/classic/SingletonSessionContainerInfo.java?rev=672566&view=auto
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/SingletonSessionContainerInfo.java \
(added)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/SingletonSessionContainerInfo.java \
Sat Jun 28 11:48:28 2008 @@ -0,0 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.openejb.assembler.classic;
+
+public class SingletonSessionContainerInfo extends ContainerInfo {
+}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/config/AnnotationDeployer.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java \
Sat Jun 28 11:48:28 2008 @@ -76,6 +76,7 @@
import org.apache.openejb.jee.TransactionType;
import org.apache.openejb.jee.WebApp;
import org.apache.openejb.jee.WebserviceDescription;
+import org.apache.openejb.jee.SingletonBean;
import static org.apache.openejb.util.Join.join;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
@@ -112,6 +113,7 @@
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
+import javax.ejb.Singleton;
import javax.interceptor.ExcludeClassInterceptors;
import javax.interceptor.ExcludeDefaultInterceptors;
import javax.interceptor.Interceptors;
@@ -329,6 +331,26 @@
/* 19.2: ejb-name: Default is the unqualified name of the bean class */
EjbJar ejbJar = ejbModule.getEjbJar();
+ for (Class<?> beanClass : finder.findAnnotatedClasses(Singleton.class)) \
{ + Singleton singleton = beanClass.getAnnotation(Singleton.class);
+ String ejbName = getEjbName(singleton, beanClass);
+
+ if (!isValidAnnotationUsage(Singleton.class, beanClass, ejbName, \
ejbModule)) continue; +
+ EnterpriseBean enterpriseBean = ejbJar.getEnterpriseBean(ejbName);
+ if (enterpriseBean == null) {
+ enterpriseBean = new SingletonBean(ejbName, \
beanClass.getName()); + ejbJar.addEnterpriseBean(enterpriseBean);
+ }
+ if (enterpriseBean.getEjbClass() == null) {
+ enterpriseBean.setEjbClass(beanClass.getName());
+ }
+ if (enterpriseBean instanceof SessionBean) {
+ SessionBean sessionBean = (SessionBean) enterpriseBean;
+ sessionBean.setSessionType(SessionType.SINGLETON);
+ }
+ }
+
for (Class<?> beanClass : finder.findAnnotatedClasses(Stateless.class)) \
{
Stateless stateless = beanClass.getAnnotation(Stateless.class);
String ejbName = getEjbName(stateless, beanClass);
@@ -418,6 +440,11 @@
return ejbName;
}
+ private String getEjbName(Singleton singleton, Class<?> beanClass) {
+ String ejbName = singleton.name().length() == 0 ? \
beanClass.getSimpleName() : singleton.name(); + return ejbName;
+ }
+
private boolean isValidAnnotationUsage(Class annotationClass, Class<?> \
beanClass, String ejbName, EjbModule ejbModule) {
List<Class<? extends Annotation>> annotations = new \
ArrayList(asList(Stateless.class, Stateful.class, MessageDriven.class)); \
annotations.remove(annotationClass);
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/config/AutoConfig.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java \
Sat Jun 28 11:48:28 2008 @@ -843,6 +843,8 @@
} else if (enterpriseBean instanceof org.apache.openejb.jee.SessionBean) {
if (((org.apache.openejb.jee.SessionBean) \
enterpriseBean).getSessionType() == SessionType.STATEFUL) { return \
BeanTypes.STATEFUL; + } else if (((org.apache.openejb.jee.SessionBean) \
enterpriseBean).getSessionType() == SessionType.SINGLETON) { + return \
BeanTypes.SINGLETON; } else {
return BeanTypes.STATELESS;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/BeanTypes.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/config/BeanTypes.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/BeanTypes.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/BeanTypes.java \
Sat Jun 28 11:48:28 2008 @@ -25,5 +25,6 @@
String CMP_ENTITY = "CMP_ENTITY";
String STATEFUL = "STATEFUL";
String STATELESS = "STATELESS";
+ String SINGLETON = "SINGLETON";
String MESSAGE = "MESSAGE";
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/config/ConfigurationFactory.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java \
Sat Jun 28 11:48:28 2008 @@ -59,6 +59,7 @@
import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
import org.apache.openejb.assembler.classic.TransactionServiceInfo;
import org.apache.openejb.assembler.classic.WebAppInfo;
+import org.apache.openejb.assembler.classic.SingletonSessionContainerInfo;
import static org.apache.openejb.config.ServiceUtils.implies;
import org.apache.openejb.config.sys.AbstractService;
import org.apache.openejb.config.sys.ConnectionManager;
@@ -604,6 +605,7 @@
defaultProviders.put(MdbContainerInfo.class, new DefaultService("MESSAGE", \
Container.class));
defaultProviders.put(StatefulSessionContainerInfo.class, new \
DefaultService("STATEFUL", Container.class));
defaultProviders.put(StatelessSessionContainerInfo.class, new \
DefaultService("STATELESS", Container.class)); + \
defaultProviders.put(SingletonSessionContainerInfo.class, new \
DefaultService("SINGLETON", Container.class));
defaultProviders.put(CmpEntityContainerInfo.class, new \
DefaultService("CMP_ENTITY", Container.class));
defaultProviders.put(BmpEntityContainerInfo.class, new \
DefaultService("BMP_ENTITY", Container.class));
defaultProviders.put(SecurityServiceInfo.class, new \
DefaultService("SecurityService", SecurityService.class)); @@ -823,6 +825,7 @@
static Map<String, Class<? extends ContainerInfo>> containerTypes = new \
HashMap<String, Class<? extends ContainerInfo>>();
static {
+ containerTypes.put(BeanTypes.SINGLETON, \
SingletonSessionContainerInfo.class);
containerTypes.put(BeanTypes.STATELESS, \
StatelessSessionContainerInfo.class);
containerTypes.put(BeanTypes.STATEFUL, StatefulSessionContainerInfo.class);
containerTypes.put(BeanTypes.BMP_ENTITY, BmpEntityContainerInfo.class);
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/config/EjbJarInfoBuilder.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java \
Sat Jun 28 11:48:28 2008 @@ -39,6 +39,7 @@
import org.apache.openejb.assembler.classic.StatelessBeanInfo;
import org.apache.openejb.assembler.classic.ApplicationExceptionInfo;
import org.apache.openejb.assembler.classic.JndiNameInfo;
+import org.apache.openejb.assembler.classic.SingletonBeanInfo;
import org.apache.openejb.jee.ActivationConfig;
import org.apache.openejb.jee.ActivationConfigProperty;
import org.apache.openejb.jee.CallbackMethod;
@@ -450,6 +451,8 @@
stateful.removeMethods.add(remove);
}
+ } else if (s.getSessionType() == SessionType.SINGLETON) {
+ bean = new SingletonBeanInfo();
} else {
bean = new StatelessBeanInfo();
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WsDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/config/WsDeployer.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WsDeployer.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WsDeployer.java \
Sat Jun 28 11:48:28 2008 @@ -238,7 +238,7 @@
// skip if this is not a webservices endpoint
if (!(enterpriseBean instanceof SessionBean)) continue;
SessionBean sessionBean = (SessionBean) enterpriseBean;
- if (sessionBean.getSessionType() != SessionType.STATELESS) continue;
+ if (sessionBean.getSessionType() == SessionType.STATEFUL) continue;
if (sessionBean.getServiceEndpoint() == null) continue;
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckPersistenceRefs.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/config/rules/CheckPersistenceRefs.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckPersistenceRefs.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckPersistenceRefs.java \
Sat Jun 28 11:48:28 2008 @@ -62,6 +62,7 @@
switch(sessionBean.getSessionType()){
case STATEFUL: return "Stateful";
case STATELESS: return "Stateless";
+ case SINGLETON: return "Singleton";
default: throw new IllegalArgumentException("Uknown SessionBean type \
"+bean.getClass()); }
} else if (bean instanceof MessageDrivenBean) return "MessageDriven";
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/core/BaseSessionContext.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java \
Sat Jun 28 11:48:28 2008 @@ -41,6 +41,7 @@
import org.apache.openejb.core.ivm.IntraVmProxy;
import org.apache.openejb.core.stateless.StatelessEjbObjectHandler;
import org.apache.openejb.core.stateful.StatefulEjbObjectHandler;
+import org.apache.openejb.core.singleton.SingletonEjbObjectHandler;
import org.apache.openejb.spi.SecurityService;
import org.apache.openejb.util.proxy.ProxyManager;
@@ -132,6 +133,10 @@
handler = new StatelessEjbObjectHandler(di, \
threadContext.getPrimaryKey(), interfaceType, new ArrayList<Class>()); break;
}
+ case SINGLETON: {
+ handler = new SingletonEjbObjectHandler(di, \
threadContext.getPrimaryKey(), interfaceType, new ArrayList<Class>()); + \
break; + }
default: throw new IllegalStateException("Bean is not a session \
bean: "+di.getComponentType()); }
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/core/CoreDeploymentInfo.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java \
Sat Jun 28 11:48:28 2008 @@ -60,6 +60,7 @@
import org.apache.openejb.core.interceptor.InterceptorData;
import org.apache.openejb.core.mdb.MessageDrivenBeanManagedTxPolicy;
import org.apache.openejb.core.timer.EjbTimerService;
+import org.apache.openejb.core.singleton.SingletonBeanManagedTxPolicy;
import org.apache.openejb.util.Index;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
@@ -384,6 +385,8 @@
policy = new StatefulBeanManagedTxPolicy((TransactionContainer) \
container); } else if (componentType == BeanType.STATELESS) {
policy = new StatelessBeanManagedTxPolicy((TransactionContainer) \
container); + } else if (componentType == BeanType.SINGLETON) {
+ policy = new SingletonBeanManagedTxPolicy((TransactionContainer) \
container); } else if (componentType == BeanType.MESSAGE_DRIVEN) {
policy = new \
MessageDrivenBeanManagedTxPolicy((TransactionContainer) container); }
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java \
Sat Jun 28 11:48:28 2008 @@ -34,6 +34,7 @@
import org.apache.openejb.InterfaceType;
import org.apache.openejb.ProxyInfo;
import org.apache.openejb.core.ServerFederation;
+import org.apache.openejb.core.singleton.SingletonEjbHomeHandler;
import org.apache.openejb.core.entity.EntityEjbHomeHandler;
import org.apache.openejb.core.stateless.StatelessEjbHomeHandler;
import org.apache.openejb.core.stateful.StatefulEjbHomeHandler;
@@ -87,6 +88,8 @@
return new StatefulEjbHomeHandler(deploymentInfo, interfaceType, \
interfaces); case STATELESS:
return new StatelessEjbHomeHandler(deploymentInfo, interfaceType, \
interfaces); + case SINGLETON:
+ return new SingletonEjbHomeHandler(deploymentInfo, interfaceType, \
interfaces); case CMP_ENTITY:
case BMP_ENTITY:
return new EntityEjbHomeHandler(deploymentInfo, interfaceType, \
interfaces);
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmMetaData.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/core/ivm/IntraVmMetaData.java?rev=672566&r1=672565&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmMetaData.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmMetaData.java \
Sat Jun 28 11:48:28 2008 @@ -79,6 +79,14 @@
return type == BeanType.STATELESS;
}
+ public boolean isSingletonSession() {
+ return type == BeanType.SINGLETON;
+ }
+
+ public boolean isStatefulSession() {
+ return type == BeanType.STATEFUL;
+ }
+
public void setEJBHome(EJBHome home) {
homeStub = home;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/EjbWsContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/core/singleton/EjbWsContext.java?rev=672566&r1=672456&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/EjbWsContext.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/EjbWsContext.java \
Sat Jun 28 11:48:28 2008 @@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.openejb.core.stateless;
+package org.apache.openejb.core.singleton;
import java.security.Principal;
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/Instance.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/core/singleton/Instance.java?rev=672566&r1=672456&r2=672566&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/Instance.java \
(original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/Instance.java \
Sat Jun 28 11:48:28 2008 @@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.openejb.core.stateless;
+package org.apache.openejb.core.singleton;
import java.util.List;
import java.util.Collections;
Added: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonBeanManagedTxPolicy.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/core/singleton/SingletonBeanManagedTxPolicy.java?rev=672566&view=auto
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonBeanManagedTxPolicy.java \
(added)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonBeanManagedTxPolicy.java \
Sat Jun 28 11:48:28 2008 @@ -0,0 +1,106 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.openejb.core.singleton;
+
+import org.apache.openejb.ApplicationException;
+import org.apache.openejb.ContainerType;
+import org.apache.openejb.SystemException;
+import org.apache.openejb.core.transaction.TransactionContainer;
+import org.apache.openejb.core.transaction.TransactionContext;
+import org.apache.openejb.core.transaction.TransactionPolicy;
+
+import javax.transaction.Status;
+import java.rmi.RemoteException;
+
+public class SingletonBeanManagedTxPolicy extends TransactionPolicy {
+
+ public SingletonBeanManagedTxPolicy(TransactionContainer container) {
+ super(Type.BeanManaged, container);
+ if (container.getContainerType() != ContainerType.STATELESS) {
+ throw new IllegalArgumentException();
+ }
+ }
+
+ public String policyToString() {
+ return "TX_BeanManaged: ";
+ }
+
+ public void beforeInvoke(Object instance, TransactionContext context) throws \
SystemException, ApplicationException { + context.callContext.set(Type.class, \
getPolicyType()); +
+ context.clientTx = suspendTransaction(context);
+ }
+
+ public void afterInvoke(Object instance, TransactionContext context) throws \
ApplicationException, SystemException { + try {
+ /*
+ * The Container must detect the case in which a transaction was started, \
but + * not completed, in the business method, and handle it as follows:
+ */
+ context.currentTx = context.getTransactionManager().getTransaction();
+
+ if (context.currentTx == null) return;
+
+ if (context.currentTx.getStatus() != Status.STATUS_ROLLEDBACK && \
context.currentTx.getStatus() != Status.STATUS_COMMITTED) { + String \
message = "The stateless session bean started a transaction but did not complete \
it."; +
+ /* [1] Log this as an application error ********/
+ logger.error(message);
+
+ /* [2] Roll back the started transaction *******/
+ try {
+ rollbackTransaction(context, context.currentTx);
+ } catch (Throwable t) {
+
+ }
+
+ /* [3] Throw the RemoteException to the client */
+ throwAppExceptionToServer(new RemoteException(message));
+ }
+
+ } catch (javax.transaction.SystemException e) {
+ throw new SystemException(e);
+ } finally {
+ resumeTransaction(context, context.clientTx);
+ }
+ }
+
+ public void handleApplicationException(Throwable appException, boolean rollback, \
TransactionContext context) throws ApplicationException, SystemException { + \
if (rollback && context.currentTx != null) markTxRollbackOnly(context.currentTx); +
+ throw new ApplicationException(appException);
+ }
+
+ public void handleSystemException(Throwable sysException, Object instance, \
TransactionContext context) throws ApplicationException, SystemException { + \
try { + context.currentTx = \
context.getTransactionManager().getTransaction(); + } catch \
(javax.transaction.SystemException e) { + context.currentTx = null;
+ }
+
+ logSystemException(sysException, context);
+
+ if (context.currentTx != null) markTxRollbackOnly(context.currentTx);
+
+ discardBeanInstance(instance, context.callContext);
+
+ throwExceptionToServer(sysException);
+
+ }
+
+}
+
Propchange: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonBeanManagedTxPolicy.java
------------------------------------------------------------------------------
svn:keywords = Date Rev Author Id Revision HeadURL
Added: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/core/singleton/SingletonContainer.java?rev=672566&view=auto
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContainer.java \
(added)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContainer.java \
Sat Jun 28 11:48:28 2008 @@ -0,0 +1,293 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.openejb.core.singleton;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.ejb.EJBAccessException;
+import javax.ejb.EJBHome;
+import javax.ejb.EJBLocalHome;
+import javax.ejb.EJBLocalObject;
+import javax.ejb.EJBObject;
+import javax.interceptor.AroundInvoke;
+import javax.transaction.TransactionManager;
+
+import org.apache.openejb.ContainerType;
+import org.apache.openejb.DeploymentInfo;
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.ProxyInfo;
+import org.apache.openejb.InterfaceType;
+import org.apache.openejb.core.CoreDeploymentInfo;
+import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.core.ExceptionType;
+import org.apache.openejb.core.interceptor.InterceptorData;
+import org.apache.openejb.core.interceptor.InterceptorStack;
+import org.apache.openejb.core.timer.EjbTimerService;
+import org.apache.openejb.core.transaction.TransactionContainer;
+import org.apache.openejb.core.transaction.TransactionContext;
+import org.apache.openejb.core.transaction.TransactionPolicy;
+import org.apache.openejb.spi.SecurityService;
+import org.apache.xbean.finder.ClassFinder;
+
+/**
+ * @org.apache.xbean.XBean element="statelessContainer"
+ */
+public class SingletonContainer implements org.apache.openejb.RpcContainer, \
TransactionContainer { +
+ private SingletonInstanceManager instanceManager;
+
+ private HashMap<String,DeploymentInfo> deploymentRegistry = new \
HashMap<String,DeploymentInfo>(); +
+ private Object containerID = null;
+ private TransactionManager transactionManager;
+ private SecurityService securityService;
+
+ public SingletonContainer(Object id, TransactionManager transactionManager, \
SecurityService securityService) throws OpenEJBException { + this.containerID \
= id; + this.transactionManager = transactionManager;
+ this.securityService = securityService;
+
+ instanceManager = new SingletonInstanceManager(transactionManager, \
securityService); +
+ for (DeploymentInfo deploymentInfo : deploymentRegistry.values()) {
+ org.apache.openejb.core.CoreDeploymentInfo di = \
(org.apache.openejb.core.CoreDeploymentInfo) deploymentInfo; + \
di.setContainer(this); + }
+ }
+
+ public synchronized DeploymentInfo [] deployments() {
+ return deploymentRegistry.values().toArray(new \
DeploymentInfo[deploymentRegistry.size()]); + }
+
+ public synchronized DeploymentInfo getDeploymentInfo(Object deploymentID) {
+ String id = (String) deploymentID;
+ return deploymentRegistry.get(id);
+ }
+
+ public ContainerType getContainerType() {
+ return ContainerType.STATELESS;
+ }
+
+ public Object getContainerID() {
+ return containerID;
+ }
+
+ public void deploy(DeploymentInfo info) throws OpenEJBException {
+ CoreDeploymentInfo deploymentInfo = (CoreDeploymentInfo) info;
+ instanceManager.deploy(deploymentInfo);
+ String id = (String) deploymentInfo.getDeploymentID();
+ synchronized (this) {
+ deploymentRegistry.put(id, deploymentInfo);
+ deploymentInfo.setContainer(this);
+ }
+
+ EjbTimerService timerService = deploymentInfo.getEjbTimerService();
+ if (timerService != null) {
+ timerService.start();
+ }
+ }
+
+ public void undeploy(DeploymentInfo info) {
+ undeploy((CoreDeploymentInfo)info);
+ }
+
+ private void undeploy(CoreDeploymentInfo deploymentInfo) {
+ instanceManager.undeploy(deploymentInfo);
+ EjbTimerService timerService = deploymentInfo.getEjbTimerService();
+ if (timerService != null) {
+ timerService.stop();
+ }
+
+ synchronized (this) {
+ String id = (String) deploymentInfo.getDeploymentID();
+ deploymentInfo.setContainer(null);
+ deploymentInfo.setContainerData(null);
+ deploymentRegistry.remove(id);
+ }
+ }
+
+ /**
+ * @deprecated use invoke signature without 'securityIdentity' argument.
+ */
+ public Object invoke(Object deployID, Method callMethod, Object[] args, Object \
primKey, Object securityIdentity) throws OpenEJBException { + return \
invoke(deployID, callMethod.getDeclaringClass(), callMethod, args, primKey); + }
+
+ public Object invoke(Object deployID, Class callInterface, Method callMethod, \
Object [] args, Object primKey) throws OpenEJBException { + CoreDeploymentInfo \
deployInfo = (CoreDeploymentInfo) this.getDeploymentInfo(deployID); + if \
(deployInfo == null) throw new OpenEJBException("Deployment does not exist in this \
container. Deployment(id='"+deployID+"'), Container(id='"+containerID+"')"); +
+ ThreadContext callContext = new ThreadContext(deployInfo, primKey);
+ ThreadContext oldCallContext = ThreadContext.enter(callContext);
+ try {
+ boolean authorized = getSecurityService().isCallerAuthorized(callMethod, \
deployInfo.getInterfaceType(callInterface)); + if (!authorized)
+ throw new org.apache.openejb.ApplicationException(new \
EJBAccessException("Unauthorized Access by Principal Denied")); +
+ Class declaringClass = callMethod.getDeclaringClass();
+ if (EJBHome.class.isAssignableFrom(declaringClass) || \
EJBLocalHome.class.isAssignableFrom(declaringClass)) { + if \
(callMethod.getName().startsWith("create")) { + return \
createEJBObject(deployInfo, callMethod); + } else
+ return null;// EJBHome.remove( ) and other EJBHome methods are \
not process by the container + } else if (EJBObject.class == \
declaringClass || EJBLocalObject.class == declaringClass) { + return \
null;// EJBObject.remove( ) and other EJBObject methods are not process by the \
container + }
+
+ Object bean = instanceManager.getInstance(callContext);
+
+ callContext.setCurrentOperation(Operation.BUSINESS);
+ callContext.setCurrentAllowedStates(SingletonContext.getStates());
+
+ Method runMethod = deployInfo.getMatchingBeanMethod(callMethod);
+
+ callContext.set(Method.class, runMethod);
+ callContext.setInvokedInterface(callInterface);
+ Object retValue = _invoke(callInterface, callMethod, runMethod, args, \
bean, callContext); + instanceManager.poolInstance(callContext, bean);
+
+ return retValue;
+
+ } finally {
+ ThreadContext.exit(oldCallContext);
+ }
+ }
+
+ private SecurityService getSecurityService() {
+ return securityService;
+ }
+
+ public SingletonInstanceManager getInstanceManager() {
+ return instanceManager;
+ }
+
+ /**
+ * @deprecated use type-safe {@link #_invoke(Class, java.lang.reflect.Method, \
java.lang.reflect.Method, Object[], Instance, org.apache.openejb.core.ThreadContext)} \
+ */ + protected Object _invoke(Class callInterface, Method callMethod, Method \
runMethod, Object[] args, Object object, ThreadContext callContext) + \
throws OpenEJBException { + return _invoke(callInterface, callMethod, \
runMethod, args, (Instance) object, callContext); + }
+
+ protected Object _invoke(Class callInterface, Method callMethod, Method \
runMethod, Object[] args, Instance instance, ThreadContext callContext) + \
throws OpenEJBException { +
+ CoreDeploymentInfo deploymentInfo = callContext.getDeploymentInfo();
+ TransactionPolicy txPolicy = \
deploymentInfo.getTransactionPolicy(callMethod); + TransactionContext \
txContext = new TransactionContext(callContext, getTransactionManager()); + \
txContext.callContext = callContext; +
+ txPolicy.beforeInvoke(instance, txContext);
+
+ Object returnValue = null;
+ try {
+ InterfaceType type = deploymentInfo.getInterfaceType(callInterface);
+ if (type == InterfaceType.SERVICE_ENDPOINT){
+ callContext.setCurrentOperation(Operation.BUSINESS_WS);
+ returnValue = invokeWebService(args, deploymentInfo, runMethod, \
instance, returnValue); + } else {
+ List<InterceptorData> interceptors = \
deploymentInfo.getMethodInterceptors(runMethod); + InterceptorStack \
interceptorStack = new InterceptorStack(instance.bean, runMethod, Operation.BUSINESS, \
interceptors, instance.interceptors); + returnValue = \
interceptorStack.invoke(args); + }
+ } catch (Throwable re) {// handle reflection exception
+ ExceptionType type = deploymentInfo.getExceptionType(re);
+ if (type == ExceptionType.SYSTEM) {
+ /* System Exception ****************************/
+
+ /**
+ * The bean instance is not put into the pool via \
instanceManager.poolInstance + * and therefore the instance will be \
garbage collected and destroyed. + * For this reason the \
discardInstance method of the StatelessInstanceManager + * does \
nothing. + */
+
+ txPolicy.handleSystemException(re, instance, txContext);
+ } else {
+ /* Application Exception ***********************/
+
+ txPolicy.handleApplicationException(re, type == \
ExceptionType.APPLICATION_ROLLBACK, txContext); + }
+ } finally {
+ instanceManager.poolInstance(callContext, instance);
+
+ txPolicy.afterInvoke(instance, txContext);
+ }
+
+ return returnValue;
+ }
+
+ private Object invokeWebService(Object[] args, CoreDeploymentInfo \
deploymentInfo, Method runMethod, Instance instance, Object returnValue) throws \
Exception { + if (args.length != 2){
+ throw new IllegalArgumentException("WebService calls must follow format \
{messageContext, interceptor}."); + }
+
+ Object messageContext = args[0];
+
+ // This object will be used as an interceptor in the stack and will be \
responsible + // for unmarshalling the soap message parts into an argument \
list that will be + // used for the actual method invocation.
+ //
+ // We just need to make it an interceptor in the OpenEJB sense and tack it \
on the end + // of our stack.
+ Object interceptor = args[1];
+
+
+ // Add the webservice interceptor to the list of interceptor instances
+ Map<String, Object> interceptors = new HashMap<String, \
Object>(instance.interceptors); + {
+ interceptors.put(interceptor.getClass().getName(), interceptor);
+ }
+
+ // Create an InterceptorData for the webservice interceptor to the list of \
interceptorDatas for this method + List<InterceptorData> interceptorDatas = \
new ArrayList<InterceptorData>(deploymentInfo.getMethodInterceptors(runMethod)); + \
{ + InterceptorData providerData = new \
InterceptorData(interceptor.getClass()); + ClassFinder finder = new \
ClassFinder(interceptor.getClass()); + \
providerData.getAroundInvoke().addAll(finder.findAnnotatedMethods(AroundInvoke.class));
+ interceptorDatas.add(providerData);
+ }
+
+ InterceptorStack interceptorStack = new InterceptorStack(instance.bean, \
runMethod, Operation.BUSINESS_WS, interceptorDatas, interceptors); + Object[] \
params = new Object[runMethod.getParameterTypes().length]; + if \
(messageContext instanceof javax.xml.rpc.handler.MessageContext) { + \
ThreadContext.getThreadContext().set(javax.xml.rpc.handler.MessageContext.class, \
(javax.xml.rpc.handler.MessageContext) messageContext); + returnValue = \
interceptorStack.invoke((javax.xml.rpc.handler.MessageContext) messageContext, \
params); + } else if (messageContext instanceof \
javax.xml.ws.handler.MessageContext) { + \
ThreadContext.getThreadContext().set(javax.xml.ws.handler.MessageContext.class, \
(javax.xml.ws.handler.MessageContext) messageContext); + returnValue = \
interceptorStack.invoke((javax.xml.ws.handler.MessageContext) messageContext, \
params); + }
+ return returnValue;
+ }
+
+ private TransactionManager getTransactionManager() {
+ return transactionManager;
+ }
+
+ protected ProxyInfo createEJBObject(org.apache.openejb.core.CoreDeploymentInfo \
deploymentInfo, Method callMethod) { + return new ProxyInfo(deploymentInfo, \
null); + }
+
+ public void discardInstance(Object instance, ThreadContext context) {
+// instanceManager.discardInstance(context, instance);
+ }
+}
Propchange: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContainer.java
------------------------------------------------------------------------------
svn:keywords = Date Rev Author Id Revision HeadURL
Added: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/core/singleton/SingletonContext.java?rev=672566&view=auto \
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContext.java \
(added)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContext.java \
Sat Jun 28 11:48:28 2008 @@ -0,0 +1,75 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.openejb.core.singleton;
+
+import javax.transaction.TransactionManager;
+import javax.transaction.UserTransaction;
+
+import org.apache.openejb.core.BaseSessionContext;
+import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.spi.SecurityService;
+
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SingletonContext extends BaseSessionContext {
+
+ protected final static State[] states = new State[Operation.values().length];
+
+ public static State[] getStates() {
+ return states;
+ }
+
+ public SingletonContext(TransactionManager transactionManager, SecurityService \
securityService) { + super(transactionManager, securityService);
+ }
+
+ public SingletonContext(TransactionManager transactionManager, SecurityService \
securityService, UserTransaction userTransaction) { + \
super(transactionManager, securityService, userTransaction); + }
+
+ protected State getState() {
+ Operation operation = \
ThreadContext.getThreadContext().getCurrentOperation(); + State state = \
states[operation.ordinal()]; +
+ if (state == null) throw new IllegalArgumentException("Invalid operation " + \
operation + " for this context"); +
+ return state;
+ }
+
+ /**
+ * Business method from web service endpoint
+ */
+ private static class BusinessWsStatelessState extends SessionState {
+ public Class getInvokedBusinessInterface() {
+ throw new IllegalStateException();
+ }
+ }
+
+ static {
+ states[Operation.INJECTION.ordinal()] = new InjectionSessionState();
+ states[Operation.CREATE.ordinal()] = new LifecycleSessionState();
+ states[Operation.BUSINESS.ordinal()] = new BusinessSessionState();
+ states[Operation.BUSINESS_WS.ordinal()] = new BusinessWsStatelessState();
+ states[Operation.TIMEOUT.ordinal()] = new TimeoutSessionState();
+ states[Operation.POST_CONSTRUCT.ordinal()] = new \
PostConstructSessionState(); + states[Operation.PRE_DESTROY.ordinal()] = new \
LifecycleSessionState(); + }
+
+}
Propchange: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContext.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContext.java
------------------------------------------------------------------------------
svn:keywords = Date Rev Author Id Revision HeadURL
Propchange: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContext.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic