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 2010/03/01 02:11:03 UTC

svn commit: r917339 - /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java

Author: dblevins
Date: Mon Mar  1 01:11:03 2010
New Revision: 917339

URL: http://svn.apache.org/viewvc?rev=917339&view=rev
Log:
Set Timeout (aka. AccessTimeout) on a per bean level 

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java?rev=917339&r1=917338&r2=917339&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java Mon Mar  1 01:11:03 2010
@@ -102,11 +102,9 @@
         CoreDeploymentInfo deploymentInfo = callContext.getDeploymentInfo();
         Data data = (Data) deploymentInfo.getContainerData();
 
-        final Pool<Instance> pool = data.getPool();
-
         Instance instance = null;
         try {
-            final Pool.Entry<Instance> entry = pool.pop(timeout.getTime(), timeout.getUnit());
+            final Pool.Entry<Instance> entry = data.poolPop();
 
             if (entry != null){
                 instance = entry.get();
@@ -349,7 +347,11 @@
         boolean strict = options.get("StrictPooling", this.strictPooling);
         int min = options.get("PoolMin", poolMin);
 
-        Data data = new Data(max, strict, min);
+        String timeString = options.get("Timeout", this.timeout.toString());
+        timeString = options.get("AccessTimeout", timeString);
+        Duration accessTimeout = new Duration(timeString);
+
+        Data data = new Data(max, strict, min, accessTimeout);
         deploymentInfo.setContainerData(data);      
     }
 
@@ -363,11 +365,21 @@
 
     private static final class Data {
         private final Pool<Instance> pool;
+        private Duration accessTimeout;
 
-        public Data(int poolLimit, boolean strictPooling, int min) {
+        public Data(int poolLimit, boolean strictPooling, int min, Duration accessTimeout) {
+            this.accessTimeout = accessTimeout;
             pool = new Pool<Instance>(poolLimit, min, strictPooling);
         }
 
+        public Duration getAccessTimeout() {
+            return accessTimeout;
+        }
+
+        public Pool.Entry<Instance> poolPop() throws InterruptedException, TimeoutException {
+            return pool.pop(accessTimeout.getTime(), accessTimeout.getUnit());
+        }
+
         public Pool<Instance> getPool() {
             return pool;
         }