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) {