You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2009/11/22 02:03:59 UTC
svn commit: r883025 - in /openejb/trunk/openejb3:
api/ejb31-api-experimental/src/main/java/javax/annotation/
assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/
assembly/openejb-tomcat/openejb-tomcat-web...
Author: dblevins
Date: Sun Nov 22 01:03:58 2009
New Revision: 883025
URL: http://svn.apache.org/viewvc?rev=883025&view=rev
Log:
More progress on OPENEJB-1113: @ManagedBean Container
Adds @ManagedBean annotation
Allows ManagedBeans to be declared in ejb-jar.xml as a <session> with <session-type>Managed</session-type>
Updated service-jar.xml to declare a "MANAGED" container type
Generally pushed the ManagedBean concept through the deployment system
Added:
openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/annotation/
openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/annotation/ManagedBean.java (with props)
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ManagedBeanInfo.java
- copied, changed from r880936, openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/StatefulBeanInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ManagedContainerInfo.java (contents, props changed)
- copied, changed from r880936, openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/StatefulSessionContainerInfo.java
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ManagedBean.java
- copied, changed from r880936, openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/StatefulBean.java
openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/ManagedContainer.java
- copied, changed from r880936, openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/StatefulContainer.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/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/managed/ManagedContainer.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-jee/src/main/java/org/apache/openejb/jee/SessionType.java
openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/OpenEJB.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/src/main/java/javax/annotation/ManagedBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/annotation/ManagedBean.java?rev=883025&view=auto
==============================================================================
--- openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/annotation/ManagedBean.java (added)
+++ openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/annotation/ManagedBean.java Sun Nov 22 01:03:58 2009
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+//
+// This source code implements specifications defined by the Java
+// Community Process. In order to remain compliant with the specification
+// DO NOT add / change / or delete method signatures!
+//
+package javax.annotation;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public @interface ManagedBean {
+ java.lang.String value() default "";
+}
Propchange: openejb/trunk/openejb3/api/ejb31-api-experimental/src/main/java/javax/annotation/ManagedBean.java
------------------------------------------------------------------------------
svn:eol-style = native
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/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -188,6 +188,20 @@
BulkPassivate 100
</ServiceProvider>
+
+ <!--
+ # ==========================================================
+ # Default Managed SessionBean Container
+ # ==========================================================
+ -->
+ <ServiceProvider
+ id="Default Managed Container"
+ service="Container"
+ types="MANAGED"
+ constructor="id, securityService"
+ class-name="org.apache.openejb.core.managed.ManagedContainer">
+
+ </ServiceProvider>
<!--
# ==========================================================
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/openejb-tomcat-webapp/src/main/webapp/viewejb.jsp?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -154,6 +154,9 @@
case SINGLETON:
type = "Singleton SessionBean";
break;
+ case MANAGED:
+ type = "Managed SessionBean";
+ break;
default:
type = "Unkown Bean Type";
break;
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=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -187,6 +187,9 @@
case STATEFUL:
entry += "STATEFUL ";
break;
+ case MANAGED:
+ entry += "MANAGED ";
+ break;
case STATELESS:
entry += "STATELESS ";
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/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -62,6 +62,8 @@
ejbType = BeanType.STATELESS;
} else if (bean.type == EnterpriseBeanInfo.SINGLETON) {
ejbType = BeanType.SINGLETON;
+ } else if (bean.type == EnterpriseBeanInfo.MANAGED) {
+ ejbType = BeanType.MANAGED;
} else if (bean.type == EnterpriseBeanInfo.MESSAGE) {
ejbType = BeanType.MESSAGE_DRIVEN;
} else if (bean.type == EnterpriseBeanInfo.ENTITY) {
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/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanInfo.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -31,6 +31,8 @@
public static final int SINGLETON = 4;
+ public static final int MANAGED = 5;
+
public int type;
public String codebase;
Copied: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ManagedBeanInfo.java (from r880936, openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/StatefulBeanInfo.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ManagedBeanInfo.java?p2=openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ManagedBeanInfo.java&p1=openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/StatefulBeanInfo.java&r1=880936&r2=883025&rev=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/StatefulBeanInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ManagedBeanInfo.java Sun Nov 22 01:03:58 2009
@@ -19,16 +19,15 @@
import java.util.List;
import java.util.ArrayList;
-public class StatefulBeanInfo extends EnterpriseBeanInfo {
+public class ManagedBeanInfo extends EnterpriseBeanInfo {
- public StatefulBeanInfo() {
- type = STATEFUL;
+ public ManagedBeanInfo() {
+ type = MANAGED;
}
public final List<CallbackInfo> postActivate = new ArrayList<CallbackInfo>();
public final List<CallbackInfo> prePassivate = new ArrayList<CallbackInfo>();
- public final List<InitMethodInfo> initMethods = new ArrayList<InitMethodInfo>();
public final List<RemoveMethodInfo> removeMethods = new ArrayList<RemoveMethodInfo>();
-}
+}
\ No newline at end of file
Copied: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ManagedContainerInfo.java (from r880936, openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/StatefulSessionContainerInfo.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ManagedContainerInfo.java?p2=openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ManagedContainerInfo.java&p1=openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/StatefulSessionContainerInfo.java&r1=880936&r2=883025&rev=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/StatefulSessionContainerInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ManagedContainerInfo.java Sun Nov 22 01:03:58 2009
@@ -16,5 +16,5 @@
*/
package org.apache.openejb.assembler.classic;
-public class StatefulSessionContainerInfo extends ContainerInfo {
-}
+public class ManagedContainerInfo extends ContainerInfo {
+}
\ No newline at end of file
Propchange: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ManagedContainerInfo.java
------------------------------------------------------------------------------
svn:keywords = Date Rev Author Id Revision HeadURL
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/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -95,6 +95,7 @@
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import javax.annotation.Resources;
+import javax.annotation.ManagedBean;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.DenyAll;
import javax.annotation.security.PermitAll;
@@ -504,6 +505,29 @@
}
}
+ for (Class<?> beanClass : finder.findAnnotatedClasses(ManagedBean.class)) {
+ ManagedBean managed = beanClass.getAnnotation(ManagedBean.class);
+ String ejbName = getEjbName(managed, beanClass);
+
+ // TODO: this is actually against the spec, but the requirement is rather silly
+ // (allowing @Stateful and @ManagedBean on the same class)
+ // If the TCK doesn't complain we should discourage it
+ if (!isValidEjbAnnotationUsage(ManagedBean.class, beanClass, ejbName, ejbModule)) continue;
+
+ EnterpriseBean enterpriseBean = ejbJar.getEnterpriseBean(ejbName);
+ if (enterpriseBean == null) {
+ enterpriseBean = new org.apache.openejb.jee.ManagedBean(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.MANAGED);
+ }
+ }
+
List<Class> classes = finder.findAnnotatedClasses(MessageDriven.class);
for (Class<?> beanClass : classes) {
MessageDriven mdb = beanClass.getAnnotation(MessageDriven.class);
@@ -573,6 +597,11 @@
return ejbName;
}
+ private String getEjbName(ManagedBean managed, Class<?> beanClass) {
+ String ejbName = managed.value().length() == 0 ? beanClass.getSimpleName() : managed.value();
+ return ejbName;
+ }
+
private boolean isValidEjbAnnotationUsage(Class annotationClass, Class<?> beanClass, String ejbName, EjbModule ejbModule) {
List<Class<? extends Annotation>> annotations = new ArrayList(asList(Singleton.class, 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/main/java/org/apache/openejb/config/AutoConfig.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -863,6 +863,8 @@
return BeanTypes.STATEFUL;
} else if (((org.apache.openejb.jee.SessionBean) enterpriseBean).getSessionType() == SessionType.SINGLETON) {
return BeanTypes.SINGLETON;
+ } else if (((org.apache.openejb.jee.SessionBean) enterpriseBean).getSessionType() == SessionType.MANAGED) {
+ return BeanTypes.MANAGED;
} 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/main/java/org/apache/openejb/config/BeanTypes.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -26,5 +26,6 @@
String STATEFUL = "STATEFUL";
String STATELESS = "STATELESS";
String SINGLETON = "SINGLETON";
+ String MANAGED = "MANAGED";
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/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -62,6 +62,7 @@
import org.apache.openejb.assembler.classic.TransactionServiceInfo;
import org.apache.openejb.assembler.classic.WebAppInfo;
import org.apache.openejb.assembler.classic.SingletonSessionContainerInfo;
+import org.apache.openejb.assembler.classic.ManagedContainerInfo;
import static org.apache.openejb.config.ServiceUtils.implies;
import org.apache.openejb.config.sys.AbstractService;
import org.apache.openejb.config.sys.ConnectionManager;
@@ -620,6 +621,7 @@
static {
defaultProviders.put(MdbContainerInfo.class, new DefaultService("MESSAGE", Container.class));
+ defaultProviders.put(ManagedContainerInfo.class, new DefaultService("MANAGED", 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));
@@ -890,6 +892,7 @@
static {
containerTypes.put(BeanTypes.SINGLETON, SingletonSessionContainerInfo.class);
+ containerTypes.put(BeanTypes.MANAGED, ManagedContainerInfo.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/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -43,6 +43,7 @@
import org.apache.openejb.assembler.classic.MethodConcurrencyInfo;
import org.apache.openejb.assembler.classic.MethodScheduleInfo;
import org.apache.openejb.assembler.classic.ScheduleInfo;
+import org.apache.openejb.assembler.classic.ManagedBeanInfo;
import org.apache.openejb.jee.ActivationConfig;
import org.apache.openejb.jee.ActivationConfigProperty;
import org.apache.openejb.jee.CallbackMethod;
@@ -500,6 +501,20 @@
stateful.removeMethods.add(remove);
}
+ } else if (s.getSessionType() == SessionType.MANAGED) {
+ bean = new ManagedBeanInfo();
+ ManagedBeanInfo managed = ((ManagedBeanInfo) bean);
+
+ copyCallbacks(s.getPostActivate(), managed.postActivate);
+ copyCallbacks(s.getPrePassivate(), managed.prePassivate);
+
+ for (RemoveMethod removeMethod : s.getRemoveMethod()) {
+ RemoveMethodInfo remove = new RemoveMethodInfo();
+ remove.beanMethod = toInfo(removeMethod.getBeanMethod());
+ remove.retainIfException = removeMethod.getRetainIfException();
+ managed.removeMethods.add(remove);
+ }
+
} else if (s.getSessionType() == SessionType.SINGLETON) {
bean = new SingletonBeanInfo();
ConcurrencyType type = s.getConcurrencyType();
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/main/java/org/apache/openejb/config/WsDeployer.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -248,6 +248,7 @@
if (!(enterpriseBean instanceof SessionBean)) continue;
SessionBean sessionBean = (SessionBean) enterpriseBean;
if (sessionBean.getSessionType() == SessionType.STATEFUL) continue;
+ if (sessionBean.getSessionType() == SessionType.MANAGED) 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/main/java/org/apache/openejb/config/rules/CheckPersistenceRefs.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -63,6 +63,7 @@
case STATEFUL: return "Stateful";
case STATELESS: return "Stateless";
case SINGLETON: return "Singleton";
+ case MANAGED: return "Managed";
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/main/java/org/apache/openejb/core/BaseSessionContext.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -34,6 +34,7 @@
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.core.managed.ManagedObjectHandler;
import org.apache.openejb.spi.SecurityService;
import org.apache.openejb.util.proxy.ProxyManager;
@@ -126,6 +127,10 @@
handler = new SingletonEjbObjectHandler(di, threadContext.getPrimaryKey(), interfaceType, new ArrayList<Class>());
break;
}
+ case MANAGED: {
+ handler = new ManagedObjectHandler(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/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -769,7 +769,7 @@
try {
// map the remove methods
- if (componentType == BeanType.STATEFUL ) {
+ if (componentType == BeanType.STATEFUL || componentType == BeanType.MANAGED) {
Method beanMethod = null;
if (javax.ejb.SessionBean.class.isAssignableFrom(beanClass)) {
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/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -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.managed.ManagedHomeHandler;
import org.apache.openejb.core.singleton.SingletonEjbHomeHandler;
import org.apache.openejb.core.entity.EntityEjbHomeHandler;
import org.apache.openejb.core.stateless.StatelessEjbHomeHandler;
@@ -90,6 +91,8 @@
return new StatelessEjbHomeHandler(deploymentInfo, interfaceType, interfaces);
case SINGLETON:
return new SingletonEjbHomeHandler(deploymentInfo, interfaceType, interfaces);
+ case MANAGED:
+ return new ManagedHomeHandler(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/main/java/org/apache/openejb/core/ivm/IntraVmMetaData.java?rev=883025&r1=883024&r2=883025&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 Sun Nov 22 01:03:58 2009
@@ -83,6 +83,10 @@
return type == BeanType.SINGLETON;
}
+ public boolean isManagedSession() {
+ return type == BeanType.MANAGED;
+ }
+
public boolean isStatefulSession() {
return type == BeanType.STATEFUL;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/managed/ManagedContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/managed/ManagedContainer.java?rev=883025&r1=883024&r2=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/managed/ManagedContainer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/managed/ManagedContainer.java Sun Nov 22 01:03:58 2009
@@ -77,6 +77,7 @@
import org.apache.openejb.util.Index;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.Duration;
import org.apache.xbean.recipe.ConstructionException;
public class ManagedContainer implements RpcContainer {
@@ -96,8 +97,8 @@
protected final Cache<Object, Instance> cache;
private final ConcurrentHashMap<Object, Instance> checkedOutInstances = new ConcurrentHashMap<Object, Instance>();
- public ManagedContainer(Object id, SecurityService securityService, Cache<Object, Instance> cache) {
- this.cache = new SimpleCache<Object, Instance>();
+ public ManagedContainer(Object id, SecurityService securityService) throws SystemException {
+ this.cache = new SimpleCache<Object, Instance>(null, new SimplePassivater(), 1000, 50, new Duration("1 hour"));
this.containerID = id;
this.securityService = securityService;
cache.setListener(new StatefulCacheListener());
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml?rev=883025&r1=883024&r2=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml Sun Nov 22 01:03:58 2009
@@ -181,6 +181,20 @@
BulkPassivate 100
</ServiceProvider>
+
+ <!--
+ # ==========================================================
+ # Default Managed SessionBean Container
+ # ==========================================================
+ -->
+ <ServiceProvider
+ id="Default Managed Container"
+ service="Container"
+ types="MANAGED"
+ constructor="id, securityService"
+ class-name="org.apache.openejb.core.managed.ManagedContainer">
+
+ </ServiceProvider>
<!--
# ==========================================================
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml?rev=883025&r1=883024&r2=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml Sun Nov 22 01:03:58 2009
@@ -187,6 +187,20 @@
<!--
# ==========================================================
+ # Default Managed SessionBean Container
+ # ==========================================================
+ -->
+ <ServiceProvider
+ id="Default Managed Container"
+ service="Container"
+ types="MANAGED"
+ constructor="id, securityService"
+ class-name="org.apache.openejb.core.managed.ManagedContainer">
+
+ </ServiceProvider>
+
+ <!--
+ # ==========================================================
# Default Message Driven Container
# ==========================================================
-->
Copied: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ManagedBean.java (from r880936, openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/StatefulBean.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ManagedBean.java?p2=openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ManagedBean.java&p1=openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/StatefulBean.java&r1=880936&r2=883025&rev=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/StatefulBean.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ManagedBean.java Sun Nov 22 01:03:58 2009
@@ -20,24 +20,24 @@
/**
* @version $Revision$ $Date$
*/
-public class StatefulBean extends SessionBean {
+public class ManagedBean extends SessionBean {
- public StatefulBean(String ejbName, String ejbClass) {
- super(ejbName, ejbClass, SessionType.STATEFUL);
+ public ManagedBean(String ejbName, String ejbClass) {
+ super(ejbName, ejbClass, SessionType.MANAGED);
}
- public StatefulBean(Class<?> ejbClass) {
+ public ManagedBean(Class<?> ejbClass) {
this(ejbClass.getSimpleName(), ejbClass.getName());
}
- public StatefulBean(String name, Class<?> ejbClass) {
+ public ManagedBean(String name, Class<?> ejbClass) {
this(name, ejbClass.getName());
}
- public StatefulBean() {
+ public ManagedBean() {
this(null, (String) null);
}
public void setSessionType(SessionType value) {
}
-}
+}
\ No newline at end of file
Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionType.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionType.java?rev=883025&r1=883024&r2=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionType.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/SessionType.java Sun Nov 22 01:03:58 2009
@@ -23,7 +23,8 @@
public enum SessionType {
@XmlEnumValue("Stateful") STATEFUL("Stateful"),
@XmlEnumValue("Stateless") STATELESS("Stateless"),
- @XmlEnumValue("Singleton") SINGLETON("Singleton");
+ @XmlEnumValue("Singleton") SINGLETON("Singleton"),
+ @XmlEnumValue("Managed") MANAGED("Managed");
private final String name;
Copied: openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/ManagedContainer.java (from r880936, openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/StatefulContainer.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/ManagedContainer.java?p2=openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/ManagedContainer.java&p1=openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/StatefulContainer.java&r1=880936&r2=883025&rev=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/StatefulContainer.java (original)
+++ openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/ManagedContainer.java Sun Nov 22 01:03:58 2009
@@ -22,62 +22,13 @@
import org.apache.openejb.config.BeanTypes;
@Exported
-public class StatefulContainer extends AbstractContainerProvider {
- private String passivator;
- private Integer timeOut;
- private Integer poolSize;
- private Integer bulkPassivate;
-
- public String getPassivator() {
- return passivator;
- }
-
- public void setPassivator(String passivator) {
- this.passivator = passivator;
- }
-
- public Integer getTimeOut() {
- return timeOut;
- }
-
- public void setTimeOut(Integer timeOut) {
- this.timeOut = timeOut;
- }
-
- public Integer getPoolSize() {
- return poolSize;
- }
-
- public void setPoolSize(Integer poolSize) {
- this.poolSize = poolSize;
- }
-
- public Integer getBulkPassivate() {
- return bulkPassivate;
- }
-
- public void setBulkPassivate(Integer bulkPassivate) {
- this.bulkPassivate = bulkPassivate;
- }
+public class ManagedContainer extends AbstractContainerProvider {
protected String getContainerType() {
- return BeanTypes.STATEFUL;
+ return BeanTypes.MANAGED;
}
protected Properties getProperties() {
- Properties properties = new Properties();
- if (passivator != null) {
- properties.put("Passivator", passivator);
- }
- if (timeOut != null) {
- properties.put("TimeOut", timeOut);
- }
- if (poolSize != null) {
- properties.put("PoolSize", poolSize);
- }
- if (bulkPassivate != null) {
- properties.put("BulkPassivate", bulkPassivate);
- }
- return properties;
+ return new Properties();
}
}
\ No newline at end of file
Modified: openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/OpenEJB.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/OpenEJB.java?rev=883025&r1=883024&r2=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/OpenEJB.java (original)
+++ openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/OpenEJB.java Sun Nov 22 01:03:58 2009
@@ -400,6 +400,9 @@
case SINGLETON:
entry += "SINGLETON ";
break;
+ case MANAGED:
+ entry += "MANAGED ";
+ break;
case MESSAGE_DRIVEN:
entry += "MESSAGE ";
break;
Modified: openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/clienttools/ViewEjbBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/clienttools/ViewEjbBean.java?rev=883025&r1=883024&r2=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/clienttools/ViewEjbBean.java (original)
+++ openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/clienttools/ViewEjbBean.java Sun Nov 22 01:03:58 2009
@@ -127,6 +127,9 @@
case SINGLETON:
type = "Singleton SessionBean";
break;
+ case MANAGED:
+ type = "Managed SessionBean";
+ break;
default :
type = "Unkown Bean Type";
break;
Modified: openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/main/DeploymentListBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/main/DeploymentListBean.java?rev=883025&r1=883024&r2=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/main/DeploymentListBean.java (original)
+++ openejb/trunk/openejb3/server/openejb-webadmin/src/main/java/org/apache/openejb/webadmin/main/DeploymentListBean.java Sun Nov 22 01:03:58 2009
@@ -157,6 +157,9 @@
case SINGLETON:
type = "Singleton SessionBean";
break;
+ case MANAGED:
+ type = "Managed SessionBean";
+ break;
default :
type = "Unkown Bean Type";
break;
Modified: openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java?rev=883025&r1=883024&r2=883025&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java (original)
+++ openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java Sun Nov 22 01:03:58 2009
@@ -425,6 +425,10 @@
return "StatefulBean";
} else if (type == EnterpriseBeanInfo.STATELESS) {
return "StatelessBean";
+ } else if (type == EnterpriseBeanInfo.SINGLETON) {
+ return "SingletonBean";
+ } else if (type == EnterpriseBeanInfo.MANAGED) {
+ return "ManagedBean";
} else if (type == EnterpriseBeanInfo.MESSAGE) {
return "MessageDrivenBean";
} else if (type == EnterpriseBeanInfo.ENTITY) {