You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by db...@apache.org on 2008/09/24 23:43:04 UTC

svn commit: r698750 - in /geronimo/server/trunk/plugins/openejb: geronimo-openejb/src/main/java/org/apache/geronimo/openejb/ openejb-clustering-wadi/src/main/plan/ openejb/src/main/plan/

Author: dblevins
Date: Wed Sep 24 14:43:04 2008
New Revision: 698750

URL: http://svn.apache.org/viewvc?rev=698750&view=rev
Log:
Improved integration so	that the properties of each container are gbean	attributes.

Added:
    geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/BmpContainerGBean.java
    geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/CmpContainerGBean.java
    geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GenericContainerGBean.java
    geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/SingletonContainerGBean.java
    geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/StatefulContainerGBean.java
    geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/StatelessContainerGBean.java
Modified:
    geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbContainer.java
    geronimo/server/trunk/plugins/openejb/openejb-clustering-wadi/src/main/plan/plan.xml
    geronimo/server/trunk/plugins/openejb/openejb/src/main/plan/plan.xml

Added: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/BmpContainerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/BmpContainerGBean.java?rev=698750&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/BmpContainerGBean.java (added)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/BmpContainerGBean.java Wed Sep 24 14:43:04 2008
@@ -0,0 +1,51 @@
+/**
+ * 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.geronimo.openejb;
+
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamSpecial;
+import org.apache.geronimo.gbean.annotation.ParamReference;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.openejb.assembler.classic.BmpEntityContainerInfo;
+
+import java.util.Properties;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@GBean
+public class BmpContainerGBean extends EjbContainer {
+
+    private final int poolSize;
+
+    public BmpContainerGBean(
+            @ParamSpecial(type = SpecialAttributeType.abstractName) AbstractName abstractName,
+            @ParamReference(name = "OpenEjbSystem") OpenEjbSystem openEjbSystem,
+            @ParamAttribute(name = "provider") String provider,
+            @ParamAttribute(name = "accessTimeout") int accessTimeout,
+            @ParamAttribute(name = "properties") Properties properties) {
+        super(abstractName, BmpEntityContainerInfo.class, openEjbSystem, provider, "BMP_ENTITY", properties);
+        set("AccessTimeout", Integer.toString(accessTimeout));
+        this.poolSize = accessTimeout;
+    }
+
+    public int getPoolSize() {
+        return poolSize;
+    }
+}

Added: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/CmpContainerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/CmpContainerGBean.java?rev=698750&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/CmpContainerGBean.java (added)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/CmpContainerGBean.java Wed Sep 24 14:43:04 2008
@@ -0,0 +1,43 @@
+/**
+ * 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.geronimo.openejb;
+
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamSpecial;
+import org.apache.geronimo.gbean.annotation.ParamReference;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.openejb.assembler.classic.CmpEntityContainerInfo;
+
+import java.util.Properties;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@GBean
+public class CmpContainerGBean extends EjbContainer {
+
+    public CmpContainerGBean(
+            @ParamSpecial(type = SpecialAttributeType.abstractName) AbstractName abstractName,
+            @ParamReference(name = "OpenEjbSystem") OpenEjbSystem openEjbSystem,
+            @ParamAttribute(name = "provider") String provider,
+            @ParamAttribute(name = "properties") Properties properties) {
+        super(abstractName, CmpEntityContainerInfo.class, openEjbSystem, provider, "CMP_ENTITY", properties);
+    }
+
+}

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbContainer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbContainer.java?rev=698750&r1=698749&r2=698750&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbContainer.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbContainer.java Wed Sep 24 14:43:04 2008
@@ -16,10 +16,7 @@
  */
 package org.apache.geronimo.openejb;
 
-import java.util.Properties;
-
-import org.apache.geronimo.gbean.GBeanInfo;
-import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.AbstractName;
 import org.apache.geronimo.gbean.GBeanLifecycle;
 import org.apache.openejb.assembler.classic.ContainerInfo;
 import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
@@ -28,73 +25,56 @@
 import org.apache.openejb.assembler.classic.CmpEntityContainerInfo;
 import org.apache.openejb.assembler.classic.MdbContainerInfo;
 
+import java.util.Properties;
+
 /**
  * @version $Rev$ $Date$
  */
 public class EjbContainer implements GBeanLifecycle {
-    private OpenEjbSystem openEjbSystem;
-    private String id;
-    private Properties properties;
-    private String provider;
-    private String type;
-    private Class<? extends ContainerInfo> infoType;
+    private final OpenEjbSystem openEjbSystem;
+    private final String id;
+    private final Properties properties = new Properties();
+    private final String provider;
+    private final String type;
+    private final Class<? extends ContainerInfo> infoType;
 
-    public OpenEjbSystem getOpenEjbSystem() {
-        return openEjbSystem;
+    public EjbContainer(AbstractName abstractName, Class<? extends ContainerInfo> infoType, OpenEjbSystem openEjbSystem, String provider, String type, Properties properties) {
+        this.id = (String) abstractName.getName().get("name");
+        this.infoType = infoType;
+        this.openEjbSystem = openEjbSystem;
+        this.provider = provider;
+        this.type = type;
+        if (properties != null){
+            this.properties.putAll(properties);
+        }
     }
 
-    public void setOpenEjbSystem(OpenEjbSystem openEjbSystem) {
-        this.openEjbSystem = openEjbSystem;
+    protected Object set(String key, String value) {
+        return properties.setProperty(key, value);
     }
 
     public String getId() {
         return id;
     }
 
-    public void setId(String id) {
-        this.id = id;
+    public OpenEjbSystem getOpenEjbSystem() {
+        return openEjbSystem;
     }
 
     public Properties getProperties() {
         return properties;
     }
 
-    public void setProperties(Properties properties) {
-        this.properties = properties;
-    }
-
     public String getProvider() {
         return provider;
     }
 
-    public void setProvider(String provider) {
-        this.provider = provider;
-    }
-
     public String getType() {
         return type;
     }
 
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public static Class<? extends ContainerInfo> getInfoType(String type) {
-        if ("STATELESS".equalsIgnoreCase(type)) return StatelessSessionContainerInfo.class;
-        if ("STATEFUL".equalsIgnoreCase(type)) return StatefulSessionContainerInfo.class;
-        if ("BMP_ENTITY".equalsIgnoreCase(type)) return BmpEntityContainerInfo.class;
-        if ("CMP_ENTITY".equalsIgnoreCase(type)) return CmpEntityContainerInfo.class;
-        if ("CMP2_ENTITY".equalsIgnoreCase(type)) return CmpEntityContainerInfo.class;
-        if ("MESSAGE".equalsIgnoreCase(type)) return MdbContainerInfo.class;
-        else return ContainerInfo.class;
-    }
-
     public Class<? extends ContainerInfo> getInfoType() {
-        return infoType == null? getInfoType(type): infoType;
-    }
-
-    public void setInfoType(Class<? extends ContainerInfo> infoType) {
-        this.infoType = infoType;
+        return infoType;
     }
 
     public void doStart() throws Exception {
@@ -107,20 +87,14 @@
     public void doFail() {
     }
 
-    public static final GBeanInfo GBEAN_INFO;
-
-    static {
-        GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(EjbContainer.class);
-        infoBuilder.addReference("OpenEjbSystem", OpenEjbSystem.class);
-        infoBuilder.addAttribute("id", String.class, true);
-        infoBuilder.addAttribute("properties", Properties.class, true);
-        infoBuilder.addAttribute("provider", String.class, true);
-        infoBuilder.addAttribute("type", String.class, true);
-        infoBuilder.addAttribute("infoType", Class.class, true);
-        GBEAN_INFO = infoBuilder.getBeanInfo();
-    }
-
-    public static GBeanInfo getGBeanInfo() {
-        return GBEAN_INFO;
+    public static Class<? extends ContainerInfo> getInfoType(String type) {
+        if ("STATELESS".equalsIgnoreCase(type)) return StatelessSessionContainerInfo.class;
+        if ("STATEFUL".equalsIgnoreCase(type)) return StatefulSessionContainerInfo.class;
+        if ("BMP_ENTITY".equalsIgnoreCase(type)) return BmpEntityContainerInfo.class;
+        if ("CMP_ENTITY".equalsIgnoreCase(type)) return CmpEntityContainerInfo.class;
+        if ("CMP2_ENTITY".equalsIgnoreCase(type)) return CmpEntityContainerInfo.class;
+        if ("MESSAGE".equalsIgnoreCase(type)) return MdbContainerInfo.class;
+        else return ContainerInfo.class;
     }
+    
 }

Added: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GenericContainerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GenericContainerGBean.java?rev=698750&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GenericContainerGBean.java (added)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GenericContainerGBean.java Wed Sep 24 14:43:04 2008
@@ -0,0 +1,51 @@
+/**
+ * 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.geronimo.openejb;
+
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.ParamReference;
+import org.apache.geronimo.gbean.annotation.ParamSpecial;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.openejb.assembler.classic.BmpEntityContainerInfo;
+import org.apache.openejb.assembler.classic.CmpEntityContainerInfo;
+import org.apache.openejb.assembler.classic.ContainerInfo;
+import org.apache.openejb.assembler.classic.MdbContainerInfo;
+import org.apache.openejb.assembler.classic.StatefulSessionContainerInfo;
+import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
+
+import java.util.Properties;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@GBean
+public class GenericContainerGBean extends EjbContainer {
+
+    public GenericContainerGBean(
+            @ParamSpecial(type = SpecialAttributeType.abstractName) AbstractName abstractName,
+            @ParamReference(name = "OpenEjbSystem") OpenEjbSystem openEjbSystem,
+            @ParamAttribute(name = "provider") String provider,
+            @ParamAttribute(name = "type") String type,
+            @ParamAttribute(name = "properties") Properties properties) {
+        super(abstractName, getInfoType(type), openEjbSystem, provider, type, new Properties());
+        getProperties().putAll(properties);
+    }
+
+
+}

Added: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/SingletonContainerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/SingletonContainerGBean.java?rev=698750&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/SingletonContainerGBean.java (added)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/SingletonContainerGBean.java Wed Sep 24 14:43:04 2008
@@ -0,0 +1,51 @@
+/**
+ * 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.geronimo.openejb;
+
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamSpecial;
+import org.apache.geronimo.gbean.annotation.ParamReference;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.openejb.assembler.classic.SingletonSessionContainerInfo;
+
+import java.util.Properties;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@GBean
+public class SingletonContainerGBean extends EjbContainer {
+
+    private final long accessTimeout;
+
+    public SingletonContainerGBean(
+            @ParamSpecial(type = SpecialAttributeType.abstractName) AbstractName abstractName,
+            @ParamReference(name = "OpenEjbSystem") OpenEjbSystem openEjbSystem,
+            @ParamAttribute(name = "provider") String provider,
+            @ParamAttribute(name = "accessTimeout") long accessTimeout,
+            @ParamAttribute(name = "properties") Properties properties) {
+        super(abstractName, SingletonSessionContainerInfo.class, openEjbSystem, provider, "SINGLETON", properties);
+        set("AccessTimeout", Long.toString(accessTimeout));
+        this.accessTimeout = accessTimeout;
+    }
+
+    public long getAccessTimeout() {
+        return accessTimeout;
+    }
+}

Added: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/StatefulContainerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/StatefulContainerGBean.java?rev=698750&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/StatefulContainerGBean.java (added)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/StatefulContainerGBean.java Wed Sep 24 14:43:04 2008
@@ -0,0 +1,81 @@
+/**
+ * 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.geronimo.openejb;
+
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamSpecial;
+import org.apache.geronimo.gbean.annotation.ParamReference;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.openejb.assembler.classic.StatefulSessionContainerInfo;
+
+import java.util.Properties;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@GBean
+public class StatefulContainerGBean extends EjbContainer {
+
+    /**
+     * Maximum number of values that should be in the LRU
+     */
+    private final int capacity;
+
+    /**
+     * When the LRU is exceeded, this is the is the number of beans stored.
+     * This helps to avoid passivating a bean at a time.
+     */
+    private final int bulkPassivate;
+
+    /**
+     * A bean may be destroyed if it isn't used in this length of time (in
+     * milliseconds).
+     */
+    private final long timeout;
+
+
+    public StatefulContainerGBean(
+            @ParamSpecial(type = SpecialAttributeType.abstractName) AbstractName abstractName,
+            @ParamReference(name = "OpenEjbSystem") OpenEjbSystem openEjbSystem,
+            @ParamAttribute(name = "provider") String provider,
+            @ParamAttribute(name = "bulkPassivate") int bulkPassivate,
+            @ParamAttribute(name = "capacity") int capacity,
+            @ParamAttribute(name = "timeout") long timeout,
+            @ParamAttribute(name = "properties") Properties properties) {
+        super(abstractName, StatefulSessionContainerInfo.class, openEjbSystem, provider, "STATEFUL", properties);
+        set("bulkPassivate", Integer.toString(bulkPassivate));
+        set("capacity", Integer.toString(capacity));
+        set("timeout", Long.toString(timeout));
+        this.bulkPassivate = bulkPassivate;
+        this.capacity = capacity;
+        this.timeout = timeout;
+    }
+
+    public int getBulkPassivate() {
+        return bulkPassivate;
+    }
+
+    public int getCapacity() {
+        return capacity;
+    }
+
+    public long getTimeout() {
+        return timeout;
+    }
+}

Added: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/StatelessContainerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/StatelessContainerGBean.java?rev=698750&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/StatelessContainerGBean.java (added)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/StatelessContainerGBean.java Wed Sep 24 14:43:04 2008
@@ -0,0 +1,94 @@
+/**
+ * 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.geronimo.openejb;
+
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamSpecial;
+import org.apache.geronimo.gbean.annotation.ParamReference;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
+
+import java.util.Properties;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@GBean
+public class StatelessContainerGBean extends EjbContainer {
+
+    /**
+     * Specifies the time to wait between invocations. This
+     * value is measured in milliseconds. A value of 5 would
+     * result in a time-out of 5 milliseconds between invocations.
+     * A value of zero would mean no timeout.
+     */
+    private final int timeout;
+
+    /**
+     * Specifies the size of the bean pools for this
+     * stateless SessionBean container.
+     */
+
+    private final int poolSize;
+
+    /**
+     * StrictPooling tells the container what to do when the pool
+     * reaches it's maximum size and there are incoming requests
+     * that need instances.
+     * <p/>
+     * With strict pooling, requests will have to wait for instances
+     * to become available. The pool size will never grow beyond the
+     * the set PoolSize value.
+     * <p/>
+     * Without strict pooling, the container will create temporary
+     * instances to meet demand. The instances will last for just one
+     * method invocation and then are removed.
+     */
+    private final boolean strictPooling;
+
+
+    public StatelessContainerGBean(
+            @ParamSpecial(type = SpecialAttributeType.abstractName) AbstractName abstractName,
+            @ParamReference(name = "OpenEjbSystem") OpenEjbSystem openEjbSystem,
+            @ParamAttribute(name = "provider") String provider,
+            @ParamAttribute(name = "poolSize") int poolSize,
+            @ParamAttribute(name = "strictPooling") boolean strictPooling,
+            @ParamAttribute(name = "timeout") int timeout,
+            @ParamAttribute(name = "properties") Properties properties) {
+        super(abstractName, StatelessSessionContainerInfo.class, openEjbSystem, provider, "STATELESS", properties);
+        set("poolSize", Integer.toString(poolSize));
+        set("strictPooling", Boolean.toString(strictPooling));
+        set("timeout", Integer.toString(timeout));
+        this.poolSize = poolSize;
+        this.strictPooling = strictPooling;
+        this.timeout = timeout;
+    }
+
+    public int getPoolSize() {
+        return poolSize;
+    }
+
+    public boolean isStrictPooling() {
+        return strictPooling;
+    }
+
+    public int getTimeout() {
+        return timeout;
+    }
+}

Modified: geronimo/server/trunk/plugins/openejb/openejb-clustering-wadi/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/openejb-clustering-wadi/src/main/plan/plan.xml?rev=698750&r1=698749&r2=698750&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/openejb-clustering-wadi/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/openejb/openejb-clustering-wadi/src/main/plan/plan.xml Wed Sep 24 14:43:04 2008
@@ -20,10 +20,8 @@
 
 <module xmlns="http://geronimo.apache.org/xml/ns/deployment-${geronimoSchemaVersion}">
 
-    <gbean name="DefaultClusteredStatefulContainer" class="org.apache.geronimo.openejb.EjbContainer">
-        <attribute name="id">org.apache.geronimo.openejb.cluster:Default Clustered Stateful Container</attribute>
-        <attribute name="type">STATEFUL</attribute>
-        <attribute name="properties">PoolSize=1000</attribute>
+    <gbean name="DefaultClusteredStatefulContainer" class="org.apache.geronimo.openejb.StatefulContainerGBean">
+        <attribute name="provider">org.apache.geronimo.openejb.cluster:Default Clustered Stateful Container</attribute>
         <reference name="OpenEjbSystem">
             <name>OpenEjbSystem</name>
         </reference>

Modified: geronimo/server/trunk/plugins/openejb/openejb/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/openejb/src/main/plan/plan.xml?rev=698750&r1=698749&r2=698750&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/openejb/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/openejb/openejb/src/main/plan/plan.xml Wed Sep 24 14:43:04 2008
@@ -34,31 +34,35 @@
         </dependency>
     </gbean>
 
-    <gbean name="DefaultStatelessContainer" class="org.apache.geronimo.openejb.EjbContainer">
-        <attribute name="id">Default Stateless Container</attribute>
-        <attribute name="type">STATELESS</attribute>
+    <gbean name="DefaultStatelessContainer" class="org.apache.geronimo.openejb.StatelessContainerGBean">
+        <attribute name="timeout">0</attribute>
+        <attribute name="poolSize">10</attribute>
+        <attribute name="strictPooling">true</attribute>
         <reference name="OpenEjbSystem">
             <name>OpenEjbSystem</name>
         </reference>
     </gbean>
-    <gbean name="DefaultStatefulContainer" class="org.apache.geronimo.openejb.EjbContainer">
-        <attribute name="id">Default Stateful Container</attribute>
-        <attribute name="type">STATEFUL</attribute>
-        <attribute name="properties">PoolSize=1000</attribute>
+    <gbean name="DefaultStatefulContainer" class="org.apache.geronimo.openejb.StatefulContainerGBean">
+        <attribute name="timeout">20</attribute>
+        <attribute name="capacity">1000</attribute>
+        <attribute name="bulkPassivate">100</attribute>
         <reference name="OpenEjbSystem">
             <name>OpenEjbSystem</name>
         </reference>
     </gbean>
-    <gbean name="DefaultBMPContainer" class="org.apache.geronimo.openejb.EjbContainer">
-        <attribute name="id">Default BMP Container</attribute>
-        <attribute name="type">BMP_ENTITY</attribute>
+    <gbean name="DefaultSingletonContainer" class="org.apache.geronimo.openejb.SingletonContainerGBean">
+        <attribute name="accessTimeout">30</attribute>
         <reference name="OpenEjbSystem">
             <name>OpenEjbSystem</name>
         </reference>
     </gbean>
-    <gbean name="DefaultCMPContainer" class="org.apache.geronimo.openejb.EjbContainer">
-        <attribute name="id">Default CMP Container</attribute>
-        <attribute name="type">CMP_ENTITY</attribute>
+    <gbean name="DefaultBMPContainer" class="org.apache.geronimo.openejb.BmpContainerGBean">
+        <attribute name="poolSize">10</attribute>
+        <reference name="OpenEjbSystem">
+            <name>OpenEjbSystem</name>
+        </reference>
+    </gbean>
+    <gbean name="DefaultCMPContainer" class="org.apache.geronimo.openejb.CmpContainerGBean">
         <reference name="OpenEjbSystem">
             <name>OpenEjbSystem</name>
         </reference>