You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ke...@apache.org on 2006/09/11 22:20:00 UTC
svn commit: r442323 - in /geronimo/server/trunk: ./
assemblies/geronimo-boilerplate-minimal/ configs/client/
configs/j2ee-system/ configs/openejb/ configs/openejb/src/plan/
configs/rmi-naming/
modules/geronimo-connector/src/main/java/org/apache/geronim...
Author: kevan
Date: Mon Sep 11 13:19:59 2006
New Revision: 442323
URL: http://svn.apache.org/viewvc?view=rev&rev=442323
Log:
GERONIMO-2354 Replace concurrent with backport-concurrent-util package
Modified:
geronimo/server/trunk/assemblies/geronimo-boilerplate-minimal/pom.xml
geronimo/server/trunk/configs/client/pom.xml
geronimo/server/trunk/configs/j2ee-system/pom.xml
geronimo/server/trunk/configs/openejb/pom.xml
geronimo/server/trunk/configs/openejb/src/plan/plan.xml
geronimo/server/trunk/configs/rmi-naming/pom.xml
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/AbstractSinglePoolConnectionInterceptor.java
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/MultiPoolConnectionInterceptor.java
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/GeronimoWorkManager.java
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/GeronimoWorkManagerGBean.java
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/WorkerContext.java
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/NullWorkExecutorPool.java
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/ScheduleWorkExecutor.java
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/StartWorkExecutor.java
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/SyncWorkExecutor.java
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutor.java
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutorPool.java
geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutorPoolImpl.java
geronimo/server/trunk/modules/geronimo-connector/src/test/java/org/apache/geronimo/connector/work/PooledWorkManagerTest.java
geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/GeronimoExecutor.java
geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/ThreadPool.java
geronimo/server/trunk/modules/geronimo-security/pom.xml
geronimo/server/trunk/modules/geronimo-security/src/main/java/org/apache/geronimo/security/jaas/server/JaasLoginService.java
geronimo/server/trunk/modules/geronimo-system/pom.xml
geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/rmi/RMIClassLoaderSpiImpl.java
geronimo/server/trunk/modules/geronimo-timer/pom.xml
geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/ExecutorFeedingTimerTask.java
geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/ThreadPooledTimer.java
geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/JDBCStoreThreadPooledNonTransactionalTimer.java
geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/JDBCStoreThreadPooledTransactionalTimer.java
geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMStoreThreadPooledNonTransactionalTimer.java
geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMStoreThreadPooledTransactionalTimer.java
geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMWorkerPersistence.java
geronimo/server/trunk/modules/geronimo-timer/src/test/java/org/apache/geronimo/timer/AbstractThreadPooledTimerTest.java
geronimo/server/trunk/pom.xml
Modified: geronimo/server/trunk/assemblies/geronimo-boilerplate-minimal/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/assemblies/geronimo-boilerplate-minimal/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/assemblies/geronimo-boilerplate-minimal/pom.xml (original)
+++ geronimo/server/trunk/assemblies/geronimo-boilerplate-minimal/pom.xml Mon Sep 11 13:19:59 2006
@@ -124,10 +124,6 @@
<artifactId>backport-util-concurrent</artifactId>
</artifactItem>
<artifactItem>
- <groupId>concurrent</groupId>
- <artifactId>concurrent</artifactId>
- </artifactItem>
- <artifactItem>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
</artifactItem>
Modified: geronimo/server/trunk/configs/client/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/client/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/configs/client/pom.xml (original)
+++ geronimo/server/trunk/configs/client/pom.xml Mon Sep 11 13:19:59 2006
@@ -196,6 +196,14 @@
concurrent, jdom -->
<dependency>
+ <groupId>backport-util-concurrent</groupId>
+ <artifactId>backport-util-concurrent</artifactId>
+ </dependency>
+
+ <!--
+ NOTE: Used by dependencies... :-(
+ -->
+ <dependency>
<groupId>concurrent</groupId>
<artifactId>concurrent</artifactId>
</dependency>
Modified: geronimo/server/trunk/configs/j2ee-system/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/j2ee-system/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/configs/j2ee-system/pom.xml (original)
+++ geronimo/server/trunk/configs/j2ee-system/pom.xml Mon Sep 11 13:19:59 2006
@@ -135,10 +135,6 @@
<artifactId>backport-util-concurrent</artifactId>
</element>
<element>
- <groupId>concurrent</groupId>
- <artifactId>concurrent</artifactId>
- </element>
- <element>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<classpathPrefix>../lib/endorsed</classpathPrefix>
Modified: geronimo/server/trunk/configs/openejb/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/openejb/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/configs/openejb/pom.xml (original)
+++ geronimo/server/trunk/configs/openejb/pom.xml Mon Sep 11 13:19:59 2006
@@ -33,21 +33,21 @@
<packaging>car</packaging>
<dependencies>
-
+
<dependency>
<groupId>org.apache.geronimo.configs</groupId>
<artifactId>j2ee-server</artifactId>
<version>${pom.version}</version>
<type>car</type>
</dependency>
-
+
<dependency>
<groupId>org.apache.geronimo.configs</groupId>
<artifactId>axis</artifactId>
<version>${pom.version}</version>
<type>car</type>
</dependency>
-
+
<dependency>
<groupId>org.apache.geronimo.configs</groupId>
<artifactId>system-database</artifactId>
@@ -60,6 +60,11 @@
<artifactId>openejb-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>concurrent</groupId>
+ <artifactId>concurrent</artifactId>
+ </dependency>
+
</dependencies>
</project>
Modified: geronimo/server/trunk/configs/openejb/src/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/openejb/src/plan/plan.xml?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/configs/openejb/src/plan/plan.xml (original)
+++ geronimo/server/trunk/configs/openejb/src/plan/plan.xml Mon Sep 11 13:19:59 2006
@@ -100,7 +100,13 @@
</reference>
<attribute name="doAsCurrentCaller">true</attribute>
</gbean>
-
+
+ <gbean name="DefaultThreadPoolExecutorAdapter" class="org.openejb.util.BackportExecutorAdapter">
+ <reference name="TargetExecutor">
+ <name>DefaultThreadPool</name>
+ </reference>
+ </gbean>
+
<gbean name="EJBNetworkService" class="org.activeio.xnet.StandardServiceStackGBean">
<attribute name="name">EJB</attribute>
<attribute name="port">${PlanOpenEJBPort}</attribute>
@@ -109,7 +115,7 @@
<attribute name="logOnSuccess">HOST,NAME,THREADID,USERID</attribute>
<attribute name="logOnFailure">HOST,NAME</attribute>
<reference name="Executor">
- <name>DefaultThreadPool</name>
+ <name>DefaultThreadPoolExecutorAdapter</name>
</reference>
<reference name="Server">
<name>EJBServer</name>
Modified: geronimo/server/trunk/configs/rmi-naming/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/rmi-naming/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/configs/rmi-naming/pom.xml (original)
+++ geronimo/server/trunk/configs/rmi-naming/pom.xml Mon Sep 11 13:19:59 2006
@@ -184,6 +184,11 @@
<artifactId>activeio</artifactId>
</dependency>
+ <dependency>
+ <groupId>concurrent</groupId>
+ <artifactId>concurrent</artifactId>
+ </dependency>
+
</dependencies>
</project>
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/AbstractSinglePoolConnectionInterceptor.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/AbstractSinglePoolConnectionInterceptor.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/AbstractSinglePoolConnectionInterceptor.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/AbstractSinglePoolConnectionInterceptor.java Mon Sep 11 13:19:59 2006
@@ -20,16 +20,18 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Timer;
+
import javax.resource.spi.ManagedConnectionFactory;
import javax.resource.spi.ConnectionRequestInfo;
import javax.resource.ResourceException;
import javax.security.auth.Subject;
-import EDU.oswego.cs.dl.util.concurrent.FIFOSemaphore;
-import EDU.oswego.cs.dl.util.concurrent.ReadWriteLock;
-import EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import edu.emory.mathcs.backport.java.util.concurrent.locks.ReadWriteLock;
+import edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantReadWriteLock;
+import edu.emory.mathcs.backport.java.util.concurrent.Semaphore;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
/**
* @version $Rev$ $Date$
@@ -37,8 +39,8 @@
public abstract class AbstractSinglePoolConnectionInterceptor implements ConnectionInterceptor, PoolingAttributes {
protected static Log log = LogFactory.getLog(SinglePoolConnectionInterceptor.class.getName());
protected final ConnectionInterceptor next;
- private final ReadWriteLock resizeLock = new WriterPreferenceReadWriteLock();
- protected FIFOSemaphore permits;
+ private final ReadWriteLock resizeLock = new ReentrantReadWriteLock();
+ protected Semaphore permits;
protected int blockingTimeoutMilliseconds;
protected int connectionCount = 0;
private long idleTimeoutMilliseconds;
@@ -59,7 +61,7 @@
this.minSize = minSize;
this.blockingTimeoutMilliseconds = blockingTimeoutMilliseconds;
setIdleTimeoutMinutes(idleTimeoutMinutes);
- permits = new FIFOSemaphore(maxSize);
+ permits = new Semaphore(maxSize, true);
}
public void getConnection(ConnectionInfo connectionInfo) throws ResourceException {
@@ -67,9 +69,9 @@
return;
}
try {
- resizeLock.readLock().acquire();
+ resizeLock.readLock().lock();
try {
- if (permits.attempt(blockingTimeoutMilliseconds)) {
+ if (permits.tryAcquire(blockingTimeoutMilliseconds, TimeUnit.MILLISECONDS)) {
internalGetConnection(connectionInfo);
} else {
throw new ResourceException("No ManagedConnections available "
@@ -79,7 +81,7 @@
}
} finally {
- resizeLock.readLock().release();
+ resizeLock.readLock().unlock();
}
} catch (InterruptedException ie) {
@@ -100,16 +102,12 @@
try {
connectionInfo.getManagedConnectionInfo().getManagedConnection().destroy();
} catch (ResourceException re) {
+ // empty
}
return;
}
- try {
- resizeLock.readLock().acquire();
- } catch (InterruptedException e) {
- //TODO figure out something better to do here!!!
- throw new RuntimeException("Interrupted before returning connection! Pool is now in an invalid state!");
- }
+ resizeLock.readLock().lock();
try {
ManagedConnectionInfo mci = connectionInfo.getManagedConnectionInfo();
if (connectionReturnAction == ConnectionReturnAction.RETURN_HANDLE && mci.hasConnectionHandles()) {
@@ -122,7 +120,7 @@
permits.release();
}
} finally {
- resizeLock.readLock().release();
+ resizeLock.readLock().unlock();
}
}
@@ -150,12 +148,12 @@
throw new IllegalArgumentException("Max size must be positive, not " + newMaxSize);
}
if (newMaxSize != getPartitionMaxSize()) {
- resizeLock.writeLock().acquire();
+ resizeLock.writeLock().lock();
try {
- ResizeInfo resizeInfo = new ResizeInfo(this.minSize, (int)permits.permits(), connectionCount, newMaxSize);
+ ResizeInfo resizeInfo = new ResizeInfo(this.minSize, permits.availablePermits(), connectionCount, newMaxSize);
this.shrinkLater = resizeInfo.getShrinkLater();
- permits = new FIFOSemaphore(newMaxSize);
+ permits = new Semaphore(newMaxSize, true);
//pre-acquire permits for the existing checked out connections that will not be closed when they are returned.
for (int i = 0; i < resizeInfo.getTransferCheckedOut(); i++) {
permits.acquire();
@@ -164,7 +162,7 @@
transferConnections(newMaxSize, resizeInfo.getShrinkNow());
this.minSize = resizeInfo.getNewMinSize();
} finally {
- resizeLock.writeLock().release();
+ resizeLock.writeLock().unlock();
}
}
}
@@ -288,11 +286,8 @@
AbstractSinglePoolConnectionInterceptor interceptor = parent;
if (interceptor == null)
return;
- try {
- interceptor.resizeLock.readLock().acquire();
- } catch (InterruptedException e) {
- return;
- }
+
+ interceptor.resizeLock.readLock().lock();
try {
long threshold = System.currentTimeMillis() - interceptor.idleTimeoutMilliseconds;
ArrayList killList = new ArrayList(interceptor.getPartitionMaxSize());
@@ -304,7 +299,7 @@
}
interceptor.permits.release(killList.size());
} finally {
- interceptor.resizeLock.readLock().release();
+ interceptor.resizeLock.readLock().unlock();
}
}
@@ -324,11 +319,7 @@
}
public void run() {
- try {
- resizeLock.readLock().acquire();
- } catch (InterruptedException e) {
- return;
- }
+ resizeLock.readLock().lock();
try {
while (connectionCount < minSize) {
ManagedConnectionInfo mci = new ManagedConnectionInfo(managedConnectionFactory, cri);
@@ -339,15 +330,14 @@
} catch (ResourceException e) {
return;
}
- boolean added = false;
- added = addToPool(mci);
+ boolean added = addToPool(mci);
if (!added) {
internalReturn(ci, ConnectionReturnAction.DESTROY);
return;
}
}
} finally {
- resizeLock.readLock().release();
+ resizeLock.readLock().unlock();
}
}
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/MultiPoolConnectionInterceptor.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/MultiPoolConnectionInterceptor.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/MultiPoolConnectionInterceptor.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/MultiPoolConnectionInterceptor.java Mon Sep 11 13:19:59 2006
@@ -17,8 +17,6 @@
package org.apache.geronimo.connector.outbound;
-//import EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap;
-
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/GeronimoWorkManager.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/GeronimoWorkManager.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/GeronimoWorkManager.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/GeronimoWorkManager.java Mon Sep 11 13:19:59 2006
@@ -24,7 +24,8 @@
import javax.resource.spi.work.WorkListener;
import javax.resource.spi.work.WorkManager;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+
import org.apache.geronimo.connector.work.pool.ScheduleWorkExecutor;
import org.apache.geronimo.connector.work.pool.StartWorkExecutor;
import org.apache.geronimo.connector.work.pool.SyncWorkExecutor;
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/GeronimoWorkManagerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/GeronimoWorkManagerGBean.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/GeronimoWorkManagerGBean.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/GeronimoWorkManagerGBean.java Mon Sep 11 13:19:59 2006
@@ -22,7 +22,8 @@
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.transaction.manager.XAWork;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
/**
*
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/WorkerContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/WorkerContext.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/WorkerContext.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/WorkerContext.java Mon Sep 11 13:19:59 2006
@@ -30,11 +30,12 @@
import javax.transaction.InvalidTransactionException;
import javax.transaction.SystemException;
-import EDU.oswego.cs.dl.util.concurrent.Latch;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.apache.geronimo.transaction.manager.ImportedTransactionActiveException;
import org.apache.geronimo.transaction.manager.XAWork;
+import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
/**
* Work wrapper providing an execution context to a Work instance.
@@ -111,12 +112,12 @@
/**
* A latch, which is released when the work is started.
*/
- private Latch startLatch = new Latch();
+ private CountDownLatch startLatch = new CountDownLatch(1);
/**
* A latch, which is released when the work is completed.
*/
- private Latch endLatch = new Latch();
+ private CountDownLatch endLatch = new CountDownLatch(1);
/**
* Create a WorkWrapper.
@@ -142,10 +143,10 @@
* Work processing events (work accepted, work rejected, work started,
*/
public WorkerContext(Work aWork,
- long aStartTimeout,
- ExecutionContext execContext,
- XAWork xaWork,
- WorkListener workListener) {
+ long aStartTimeout,
+ ExecutionContext execContext,
+ XAWork xaWork,
+ WorkListener workListener) {
adaptee = aWork;
startTimeOut = aStartTimeout;
executionContext = execContext;
@@ -273,15 +274,15 @@
if (isTimedOut()) {
// In case of a time out, one releases the start and end latches
// to prevent a dead-lock.
- startLatch.release();
- endLatch.release();
+ startLatch.countDown();
+ endLatch.countDown();
return;
}
// Implementation note: the work listener is notified prior to release
// the start lock. This behavior is intentional and seems to be the
// more conservative.
workListener.workStarted(new WorkEvent(this, WorkEvent.WORK_STARTED, adaptee, null));
- startLatch.release();
+ startLatch.countDown();
//Implementation note: we assume this is being called without an interesting TransactionContext,
//and ignore/replace whatever is associated with the current thread.
try {
@@ -314,7 +315,7 @@
workListener.workCompleted(new WorkEvent(this, WorkEvent.WORK_REJECTED, adaptee,
workException));
} finally {
- endLatch.release();
+ endLatch.countDown();
}
}
@@ -325,7 +326,7 @@
* @return Latch that a caller can acquire to wait for the start of a
* work execution.
*/
- public synchronized Latch provideStartLatch() {
+ public synchronized CountDownLatch provideStartLatch() {
return startLatch;
}
@@ -336,7 +337,7 @@
* @return Latch that a caller can acquire to wait for the end of a
* work execution.
*/
- public synchronized Latch provideEndLatch() {
+ public synchronized CountDownLatch provideEndLatch() {
return endLatch;
}
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/NullWorkExecutorPool.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/NullWorkExecutorPool.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/NullWorkExecutorPool.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/NullWorkExecutorPool.java Mon Sep 11 13:19:59 2006
@@ -51,7 +51,7 @@
return this;
}
- public void execute(Runnable command) throws InterruptedException {
+ public void execute(Runnable command) {
throw new IllegalStateException("Stopped");
}
}
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/ScheduleWorkExecutor.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/ScheduleWorkExecutor.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/ScheduleWorkExecutor.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/ScheduleWorkExecutor.java Mon Sep 11 13:19:59 2006
@@ -19,8 +19,9 @@
import javax.resource.spi.work.WorkException;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
import org.apache.geronimo.connector.work.WorkerContext;
+
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
/**
*
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/StartWorkExecutor.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/StartWorkExecutor.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/StartWorkExecutor.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/StartWorkExecutor.java Mon Sep 11 13:19:59 2006
@@ -18,10 +18,11 @@
package org.apache.geronimo.connector.work.pool;
import javax.resource.spi.work.WorkException;
-import EDU.oswego.cs.dl.util.concurrent.Latch;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+
import org.apache.geronimo.connector.work.WorkerContext;
-import org.apache.geronimo.pool.GeronimoExecutor;
+
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
/**
*
@@ -33,8 +34,8 @@
public void doExecute(WorkerContext work, Executor executor)
throws WorkException, InterruptedException {
- Latch latch = work.provideStartLatch();
+ CountDownLatch latch = work.provideStartLatch();
executor.execute(new NamedRunnable("A J2EE Connector", work));
- latch.acquire();
+ latch.await();
}
}
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/SyncWorkExecutor.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/SyncWorkExecutor.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/SyncWorkExecutor.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/SyncWorkExecutor.java Mon Sep 11 13:19:59 2006
@@ -18,10 +18,11 @@
package org.apache.geronimo.connector.work.pool;
import javax.resource.spi.work.WorkException;
-import EDU.oswego.cs.dl.util.concurrent.Latch;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+
import org.apache.geronimo.connector.work.WorkerContext;
-import org.apache.geronimo.pool.GeronimoExecutor;
+
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
/**
*
@@ -33,9 +34,9 @@
public void doExecute(WorkerContext work, Executor executor)
throws WorkException, InterruptedException {
- Latch latch = work.provideEndLatch();
+ CountDownLatch latch = work.provideEndLatch();
executor.execute(new NamedRunnable("A J2EE Connector", work));
- latch.acquire();
+ latch.await();
}
}
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutor.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutor.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutor.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutor.java Mon Sep 11 13:19:59 2006
@@ -2,7 +2,8 @@
import javax.resource.spi.work.WorkException;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+
import org.apache.geronimo.connector.work.WorkerContext;
/**
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutorPool.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutorPool.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutorPool.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutorPool.java Mon Sep 11 13:19:59 2006
@@ -17,10 +17,7 @@
package org.apache.geronimo.connector.work.pool;
-import javax.resource.spi.work.WorkException;
-
-import org.apache.geronimo.connector.work.WorkerContext;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
/**
* Defines the operations that a pool in charge of the execution of Work
Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutorPoolImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutorPoolImpl.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutorPoolImpl.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/work/pool/WorkExecutorPoolImpl.java Mon Sep 11 13:19:59 2006
@@ -17,13 +17,9 @@
package org.apache.geronimo.connector.work.pool;
-import javax.resource.spi.work.WorkCompletedException;
-import javax.resource.spi.work.WorkException;
-
-import EDU.oswego.cs.dl.util.concurrent.Channel;
-import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
-import EDU.oswego.cs.dl.util.concurrent.LinkedQueue;
-import org.apache.geronimo.connector.work.WorkerContext;
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
+import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
/**
* Based class for WorkExecutorPool. Sub-classes define the synchronization
@@ -37,7 +33,7 @@
/**
* A timed out pooled executor.
*/
- private PooledExecutor pooledExecutor;
+ private ThreadPoolExecutor pooledExecutor;
/**
* Creates a pool with the specified minimum and maximum sizes. The Channel
@@ -47,35 +43,20 @@
* @param maxSize Maximum size of the work executor pool.
*/
public WorkExecutorPoolImpl(int maxSize) {
- pooledExecutor = new PooledExecutor(new LinkedQueue(), maxSize);
- pooledExecutor.setMinimumPoolSize(maxSize);
- pooledExecutor.waitWhenBlocked();
- }
+ pooledExecutor = new ThreadPoolExecutor(1, maxSize, 1, TimeUnit.MINUTES, new LinkedBlockingQueue());
+ /*
- /**
- * Creates a pool with the specified minimum and maximum sizes and using the
- * specified Channel to enqueue the submitted Work instances.
- *
- * @param channel Queue to be used as the queueing facility of this pool.
- * @param maxSize Maximum size of the work executor pool.
- */
- public WorkExecutorPoolImpl(
- Channel channel,
- int maxSize) {
- pooledExecutor = new PooledExecutor(channel, maxSize);
- pooledExecutor.setMinimumPoolSize(maxSize);
+ FIXME: How to do this with concurrent.util ?
pooledExecutor.waitWhenBlocked();
+ */
}
-
+
/**
* Execute the specified Work.
*
* @param work Work to be executed.
- *
- * @exception InterruptedException Indicates that the Work execution has been
- * unsuccessful.
*/
- public void execute(Runnable work) throws InterruptedException {
+ public void execute(Runnable work) {
pooledExecutor.execute(work);
}
@@ -111,7 +92,7 @@
*/
public WorkExecutorPool stop() {
int maxSize = getMaximumPoolSize();
- pooledExecutor.shutdownAfterProcessingCurrentlyQueuedTasks();
+ pooledExecutor.shutdown();
return new NullWorkExecutorPool(maxSize);
}
Modified: geronimo/server/trunk/modules/geronimo-connector/src/test/java/org/apache/geronimo/connector/work/PooledWorkManagerTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector/src/test/java/org/apache/geronimo/connector/work/PooledWorkManagerTest.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector/src/test/java/org/apache/geronimo/connector/work/PooledWorkManagerTest.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector/src/test/java/org/apache/geronimo/connector/work/PooledWorkManagerTest.java Mon Sep 11 13:19:59 2006
@@ -42,9 +42,11 @@
protected void setUp() throws Exception {
super.setUp();
+
XAWork xaWork = new GeronimoTransactionManager();
ThreadPool pool = new ThreadPool(1, "Connector Test", 30000, ThreadPool.class.getClassLoader(), "foo:test=bar");
pool.setWaitWhenBlocked(true);
+
workManager = new GeronimoWorkManager(pool, pool, pool, xaWork);
workManager.doStart();
}
Modified: geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/GeronimoExecutor.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/GeronimoExecutor.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/GeronimoExecutor.java (original)
+++ geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/GeronimoExecutor.java Mon Sep 11 13:19:59 2006
@@ -16,7 +16,7 @@
*/
package org.apache.geronimo.pool;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
/**
* A Geronimo-specific extension that contributes a little extra manageability
Modified: geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/ThreadPool.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/ThreadPool.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/ThreadPool.java (original)
+++ geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/ThreadPool.java Mon Sep 11 13:19:59 2006
@@ -21,16 +21,24 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.j2ee.statistics.BoundedRangeStatistic;
import javax.management.j2ee.statistics.CountStatistic;
import javax.management.j2ee.statistics.Stats;
-import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
-import EDU.oswego.cs.dl.util.concurrent.ThreadFactory;
+
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
+import edu.emory.mathcs.backport.java.util.concurrent.RejectedExecutionHandler;
+import edu.emory.mathcs.backport.java.util.concurrent.RejectedExecutionException;
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadFactory;
+import edu.emory.mathcs.backport.java.util.concurrent.SynchronousQueue;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
+
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanLifecycle;
+
import org.apache.geronimo.management.J2EEManagedObject;
import org.apache.geronimo.management.StatisticsProvider;
import org.apache.geronimo.management.geronimo.stats.ThreadPoolStats;
@@ -42,23 +50,26 @@
* @version $Rev$ $Date$
*/
public class ThreadPool implements GeronimoExecutor, GBeanLifecycle, J2EEManagedObject, StatisticsProvider {
- private PooledExecutor executor;
+ private ThreadPoolExecutor executor;
private ClassLoader classLoader;
private ObjectName objectName;
private boolean waitWhenBlocked;
-
+
// Statistics-related fields follow
private boolean statsActive = true;
private PoolStatsImpl stats = new PoolStatsImpl();
private Map clients = new HashMap();
-
public ThreadPool(int poolSize, String poolName, long keepAliveTime, ClassLoader classLoader, String objectName) {
- PooledExecutor p = new PooledExecutor(poolSize);
- p.abortWhenBlocked();
- p.setKeepAliveTime(keepAliveTime);
- p.setMinimumPoolSize(poolSize);
+ ThreadPoolExecutor p = new ThreadPoolExecutor(
+ poolSize, // core size
+ poolSize, // max size
+ keepAliveTime, TimeUnit.MILLISECONDS,
+ new SynchronousQueue());
+
+ p.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
p.setThreadFactory(new ThreadPoolThreadFactory(poolName, classLoader));
+
try {
this.objectName = ObjectName.getInstance(objectName);
} catch (MalformedObjectNameException e) {
@@ -158,11 +169,11 @@
return executor.getMaximumPoolSize();
}
- public void execute(Runnable command) throws InterruptedException {
+ public void execute(Runnable command) {
execute("Unknown", command);
}
- public void execute(final String consumerName, final Runnable runnable) throws InterruptedException {
+ public void execute(final String consumerName, final Runnable runnable) {
Runnable command;
if (statsActive) {
command = new Runnable() {
@@ -179,7 +190,7 @@
command = runnable;
}
- PooledExecutor p;
+ ThreadPoolExecutor p;
synchronized (this) {
p = executor;
}
@@ -207,13 +218,26 @@
clients.put(consumerName, new Integer(test.intValue() - 1));
}
}
-
+
+ private static class WaitWhenBlockedPolicy
+ implements RejectedExecutionHandler
+ {
+ public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) throws RejectedExecutionException {
+ try {
+ executor.getQueue().put(r);
+ }
+ catch (InterruptedException e) {
+ throw new RejectedExecutionException(e);
+ }
+ }
+ }
+
public void setWaitWhenBlocked(boolean wait) {
waitWhenBlocked = wait;
if(wait) {
- executor.waitWhenBlocked();
+ executor.setRejectedExecutionHandler(new WaitWhenBlockedPolicy());
} else {
- executor.abortWhenBlocked();
+ executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
}
}
@@ -225,7 +249,7 @@
}
public void doStop() throws Exception {
- PooledExecutor p;
+ ThreadPoolExecutor p;
synchronized (this) {
p = executor;
executor = null;
Modified: geronimo/server/trunk/modules/geronimo-security/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-security/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-security/pom.xml (original)
+++ geronimo/server/trunk/modules/geronimo-security/pom.xml Mon Sep 11 13:19:59 2006
@@ -73,6 +73,15 @@
<artifactId>activeio</artifactId>
</dependency>
+ <!--
+ Required by activeio:activeio
+ -->
+ <dependency>
+ <groupId>concurrent</groupId>
+ <artifactId>concurrent</artifactId>
+ <scope>test</scope>
+ </dependency>
+
<dependency>
<groupId>regexp</groupId>
<artifactId>regexp</artifactId>
Modified: geronimo/server/trunk/modules/geronimo-security/src/main/java/org/apache/geronimo/security/jaas/server/JaasLoginService.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-security/src/main/java/org/apache/geronimo/security/jaas/server/JaasLoginService.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-security/src/main/java/org/apache/geronimo/security/jaas/server/JaasLoginService.java (original)
+++ geronimo/server/trunk/modules/geronimo-security/src/main/java/org/apache/geronimo/security/jaas/server/JaasLoginService.java Mon Sep 11 13:19:59 2006
@@ -14,10 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.geronimo.security.jaas.server;
-import EDU.oswego.cs.dl.util.concurrent.ClockDaemon;
-import EDU.oswego.cs.dl.util.concurrent.ThreadFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.common.GeronimoSecurityException;
@@ -34,6 +33,7 @@
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
+
import javax.security.auth.Subject;
import javax.security.auth.callback.Callback;
import javax.security.auth.login.LoginException;
@@ -41,6 +41,7 @@
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.Principal;
+
import java.util.Collection;
import java.util.HashMap;
import java.util.Hashtable;
@@ -49,7 +50,8 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-
+import java.util.Timer;
+import java.util.TimerTask;
/**
* The single point of contact for Geronimo JAAS realms. Instead of attempting
@@ -63,10 +65,9 @@
public static final Log log = LogFactory.getLog(JaasLoginService.class);
private final static int DEFAULT_EXPIRED_LOGIN_SCAN_INTERVAL = 300000; // 5 mins
private final static int DEFAULT_MAX_LOGIN_DURATION = 1000 * 3600 * 24; // 1 day
- private final static ClockDaemon clockDaemon;
+ private final static Timer clockDaemon = new Timer(/* Name requires JDK 1.5 "LoginService login modules monitor", */ true);
private static long nextLoginModuleId = System.currentTimeMillis();
private Collection realms;
- private Object expiredLoginScanIdentifier;
private final String objectName;
private final SecretKey key;
private final String algorithm;
@@ -74,7 +75,7 @@
private final Map activeLogins = new Hashtable();
private int expiredLoginScanIntervalMillis = DEFAULT_EXPIRED_LOGIN_SCAN_INTERVAL;
private int maxLoginDurationMillis = DEFAULT_MAX_LOGIN_DURATION;
-
+ private ExpirationMonitor expirationMonitor;
public JaasLoginService(String algorithm, String password, ClassLoader classLoader, String objectName) {
this.classLoader = classLoader;
@@ -137,11 +138,18 @@
}
public void doStart() throws Exception {
- expiredLoginScanIdentifier = clockDaemon.executePeriodically(expiredLoginScanIntervalMillis, new ExpirationMonitor(), true);
+ expirationMonitor = new ExpirationMonitor();
+
+ clockDaemon.scheduleAtFixedRate(
+ expirationMonitor, expiredLoginScanIntervalMillis, expiredLoginScanIntervalMillis);
}
public void doStop() throws Exception {
- ClockDaemon.cancel(expiredLoginScanIdentifier);
+ if (expirationMonitor != null) {
+ expirationMonitor.cancel();
+ expirationMonitor = null;
+ }
+
//todo: shut down all logins
}
@@ -389,20 +397,7 @@
return null;
}
-
- // This stuff takes care of whacking old logins
- static {
- clockDaemon = new ClockDaemon();
- clockDaemon.setThreadFactory(new ThreadFactory() {
- public Thread newThread(Runnable r) {
- Thread t = new Thread(r, "LoginService login modules monitor");
- t.setDaemon(true);
- return t;
- }
- });
- }
-
- private class ExpirationMonitor implements Runnable { //todo: different timeouts per realm?
+ private class ExpirationMonitor extends TimerTask { //todo: different timeouts per realm?
public void run() {
long now = System.currentTimeMillis();
Modified: geronimo/server/trunk/modules/geronimo-system/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-system/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-system/pom.xml (original)
+++ geronimo/server/trunk/modules/geronimo-system/pom.xml Mon Sep 11 13:19:59 2006
@@ -52,8 +52,8 @@
</dependency>
<dependency>
- <groupId>concurrent</groupId>
- <artifactId>concurrent</artifactId>
+ <groupId>backport-util-concurrent</groupId>
+ <artifactId>backport-util-concurrent</artifactId>
</dependency>
<!--
Modified: geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/rmi/RMIClassLoaderSpiImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/rmi/RMIClassLoaderSpiImpl.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/rmi/RMIClassLoaderSpiImpl.java (original)
+++ geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/rmi/RMIClassLoaderSpiImpl.java Mon Sep 11 13:19:59 2006
@@ -26,7 +26,8 @@
import java.rmi.server.RMIClassLoader;
import java.rmi.server.RMIClassLoaderSpi;
-import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
+
+import edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap;
/**
* An implementation of {@link RMIClassLoaderSpi} which provides normilzation
@@ -40,7 +41,7 @@
private RMIClassLoaderSpi delegate = RMIClassLoader.getDefaultProviderInstance();
//TODO: Not sure of the best initial size. Starting with 100 which should be reasonable.
- private ConcurrentReaderHashMap cachedCodebases = new ConcurrentReaderHashMap(100, 0.75F);
+ private ConcurrentHashMap cachedCodebases = new ConcurrentHashMap(100, 0.75F);
public Class loadClass(String codebase, String name, ClassLoader defaultLoader)
Modified: geronimo/server/trunk/modules/geronimo-timer/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-timer/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-timer/pom.xml (original)
+++ geronimo/server/trunk/modules/geronimo-timer/pom.xml Mon Sep 11 13:19:59 2006
@@ -38,7 +38,10 @@
https://issues.apache.org/jira/browse/GERONIMO-2183
-->
+ <!--
+ TEMP: Testing concurrent changes...
<maven.test.skip>true</maven.test.skip>
+ -->
</properties>
<dependencies>
@@ -87,10 +90,10 @@
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
</dependency>
-
+
<dependency>
- <groupId>concurrent</groupId>
- <artifactId>concurrent</artifactId>
+ <groupId>backport-util-concurrent</groupId>
+ <artifactId>backport-util-concurrent</artifactId>
</dependency>
</dependencies>
Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/ExecutorFeedingTimerTask.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/ExecutorFeedingTimerTask.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/ExecutorFeedingTimerTask.java (original)
+++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/ExecutorFeedingTimerTask.java Mon Sep 11 13:19:59 2006
@@ -47,11 +47,7 @@
}
public void run() {
- try {
- threadPooledTimer.getExecutor().execute(workInfo.getExecutorTask());
- } catch (InterruptedException e) {
- log.warn("Exception running task", e);
- }
+ threadPooledTimer.getExecutor().execute(workInfo.getExecutorTask());
}
public boolean cancel() {
Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/ThreadPooledTimer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/ThreadPooledTimer.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/ThreadPooledTimer.java (original)
+++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/ThreadPooledTimer.java Mon Sep 11 13:19:59 2006
@@ -33,7 +33,8 @@
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.gbean.GBeanLifecycle;
Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/JDBCStoreThreadPooledNonTransactionalTimer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/JDBCStoreThreadPooledNonTransactionalTimer.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/JDBCStoreThreadPooledNonTransactionalTimer.java (original)
+++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/JDBCStoreThreadPooledNonTransactionalTimer.java Mon Sep 11 13:19:59 2006
@@ -21,7 +21,8 @@
import javax.sql.DataSource;
import javax.transaction.TransactionManager;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+
import org.apache.geronimo.connector.outbound.ConnectionFactorySource;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/JDBCStoreThreadPooledTransactionalTimer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/JDBCStoreThreadPooledTransactionalTimer.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/JDBCStoreThreadPooledTransactionalTimer.java (original)
+++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/JDBCStoreThreadPooledTransactionalTimer.java Mon Sep 11 13:19:59 2006
@@ -21,7 +21,8 @@
import javax.sql.DataSource;
import javax.transaction.TransactionManager;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+
import org.apache.geronimo.connector.outbound.ConnectionFactorySource;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMStoreThreadPooledNonTransactionalTimer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMStoreThreadPooledNonTransactionalTimer.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMStoreThreadPooledNonTransactionalTimer.java (original)
+++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMStoreThreadPooledNonTransactionalTimer.java Mon Sep 11 13:19:59 2006
@@ -19,7 +19,8 @@
import javax.transaction.TransactionManager;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMStoreThreadPooledTransactionalTimer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMStoreThreadPooledTransactionalTimer.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMStoreThreadPooledTransactionalTimer.java (original)
+++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMStoreThreadPooledTransactionalTimer.java Mon Sep 11 13:19:59 2006
@@ -19,7 +19,8 @@
import javax.transaction.TransactionManager;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+import edu.emory.mathcs.backport.java.util.concurrent.Executor;
+
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMWorkerPersistence.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMWorkerPersistence.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMWorkerPersistence.java (original)
+++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/VMWorkerPersistence.java Mon Sep 11 13:19:59 2006
@@ -24,7 +24,8 @@
import java.util.Collection;
import java.util.ArrayList;
-import EDU.oswego.cs.dl.util.concurrent.SynchronizedLong;
+import edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicLong;
+
import org.apache.geronimo.timer.PersistenceException;
import org.apache.geronimo.timer.Playback;
import org.apache.geronimo.timer.WorkInfo;
@@ -40,10 +41,10 @@
private final Map tasks = Collections.synchronizedMap(new LinkedHashMap());
- private final SynchronizedLong counter = new SynchronizedLong(0);
+ private final AtomicLong counter = new AtomicLong(0);
public void save(WorkInfo workInfo) throws PersistenceException {
- long id = counter.increment();
+ long id = counter.incrementAndGet();
workInfo.setId(id);
tasks.put(new Long(id), workInfo);
}
Modified: geronimo/server/trunk/modules/geronimo-timer/src/test/java/org/apache/geronimo/timer/AbstractThreadPooledTimerTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-timer/src/test/java/org/apache/geronimo/timer/AbstractThreadPooledTimerTest.java?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/modules/geronimo-timer/src/test/java/org/apache/geronimo/timer/AbstractThreadPooledTimerTest.java (original)
+++ geronimo/server/trunk/modules/geronimo-timer/src/test/java/org/apache/geronimo/timer/AbstractThreadPooledTimerTest.java Mon Sep 11 13:19:59 2006
@@ -19,8 +19,10 @@
import javax.transaction.TransactionManager;
-import EDU.oswego.cs.dl.util.concurrent.SynchronizedInt;
+import edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicInteger;
+
import junit.framework.TestCase;
+
import org.apache.geronimo.pool.ThreadPool;
import org.apache.geronimo.timer.vm.VMWorkerPersistence;
@@ -41,7 +43,7 @@
private ThreadPool threadPool;
private ThreadPooledTimer timer;
- private SynchronizedInt counter = new SynchronizedInt(0);
+ private AtomicInteger counter = new AtomicInteger(0);
protected TransactionManager transactionManager;
protected ExecutorTaskFactory executableWorkFactory;
protected UserTaskFactory userTaskFactory;
@@ -177,7 +179,7 @@
public Runnable newTask(long id) {
return new Runnable() {
public void run() {
- counter.increment();
+ counter.incrementAndGet();
}
};
Modified: geronimo/server/trunk/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
==============================================================================
--- geronimo/server/trunk/pom.xml (original)
+++ geronimo/server/trunk/pom.xml Mon Sep 11 13:19:59 2006
@@ -202,7 +202,13 @@
<dependency>
<groupId>backport-util-concurrent</groupId>
<artifactId>backport-util-concurrent</artifactId>
- <version>2.0_01_pd</version>
+ <version>2.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>concurrent</groupId>
+ <artifactId>concurrent</artifactId>
+ <version>1.3.4</version>
</dependency>
<dependency>
@@ -228,13 +234,7 @@
<artifactId>commons-logging</artifactId>
<version>1.0.4</version>
</dependency>
-
- <dependency>
- <groupId>concurrent</groupId>
- <artifactId>concurrent</artifactId>
- <version>1.3.4</version>
- </dependency>
-
+
<dependency>
<groupId>org.objectweb.howl</groupId>
<artifactId>howl</artifactId>
Re: svn commit: r442323 - in /geronimo/server/trunk: ./ assemblies/geronimo-boilerplate-minimal/ configs/client/ configs/j2ee-system/ configs/openejb/ configs/openejb/src/plan/ configs/rmi-naming/ modules/geronimo-connector/src/main/java/org/apache/geronim...
Posted by Jason Dillon <ja...@planet57.com>.
Are the openejb2 changes in?
--jason
On Sep 11, 2006, at 1:20 PM, kevan@apache.org wrote:
> Author: kevan
> Date: Mon Sep 11 13:19:59 2006
> New Revision: 442323
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=442323
> Log:
> GERONIMO-2354 Replace concurrent with backport-concurrent-util package
>
> Modified:
> geronimo/server/trunk/assemblies/geronimo-boilerplate-minimal/
> pom.xml
> geronimo/server/trunk/configs/client/pom.xml
> geronimo/server/trunk/configs/j2ee-system/pom.xml
> geronimo/server/trunk/configs/openejb/pom.xml
> geronimo/server/trunk/configs/openejb/src/plan/plan.xml
> geronimo/server/trunk/configs/rmi-naming/pom.xml
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/outbound/
> AbstractSinglePoolConnectionInterceptor.java
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/outbound/
> MultiPoolConnectionInterceptor.java
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/GeronimoWorkManager.java
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/GeronimoWorkManagerGBean.java
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/WorkerContext.java
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/NullWorkExecutorPool.java
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/ScheduleWorkExecutor.java
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/StartWorkExecutor.java
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/SyncWorkExecutor.java
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/WorkExecutor.java
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/WorkExecutorPool.java
> geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/WorkExecutorPoolImpl.java
> geronimo/server/trunk/modules/geronimo-connector/src/test/java/
> org/apache/geronimo/connector/work/PooledWorkManagerTest.java
> geronimo/server/trunk/modules/geronimo-core/src/main/java/org/
> apache/geronimo/pool/GeronimoExecutor.java
> geronimo/server/trunk/modules/geronimo-core/src/main/java/org/
> apache/geronimo/pool/ThreadPool.java
> geronimo/server/trunk/modules/geronimo-security/pom.xml
> geronimo/server/trunk/modules/geronimo-security/src/main/java/
> org/apache/geronimo/security/jaas/server/JaasLoginService.java
> geronimo/server/trunk/modules/geronimo-system/pom.xml
> geronimo/server/trunk/modules/geronimo-system/src/main/java/org/
> apache/geronimo/system/rmi/RMIClassLoaderSpiImpl.java
> geronimo/server/trunk/modules/geronimo-timer/pom.xml
> geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/ExecutorFeedingTimerTask.java
> geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/ThreadPooledTimer.java
> geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/jdbc/
> JDBCStoreThreadPooledNonTransactionalTimer.java
> geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/jdbc/
> JDBCStoreThreadPooledTransactionalTimer.java
> geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/vm/VMStoreThreadPooledNonTransactionalTimer.java
> geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/vm/VMStoreThreadPooledTransactionalTimer.java
> geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/vm/VMWorkerPersistence.java
> geronimo/server/trunk/modules/geronimo-timer/src/test/java/org/
> apache/geronimo/timer/AbstractThreadPooledTimerTest.java
> geronimo/server/trunk/pom.xml
>
> Modified: geronimo/server/trunk/assemblies/geronimo-boilerplate-
> minimal/pom.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/assemblies/
> geronimo-boilerplate-minimal/pom.xml?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/assemblies/geronimo-boilerplate-minimal/
> pom.xml (original)
> +++ geronimo/server/trunk/assemblies/geronimo-boilerplate-minimal/
> pom.xml Mon Sep 11 13:19:59 2006
> @@ -124,10 +124,6 @@
> <artifactId>backport-util-
> concurrent</artifactId>
> </artifactItem>
> <artifactItem>
> - <groupId>concurrent</groupId>
> - <artifactId>concurrent</
> artifactId>
> - </artifactItem>
> - <artifactItem>
> <groupId>cglib</groupId>
> <artifactId>cglib-nodep</
> artifactId>
> </artifactItem>
>
> Modified: geronimo/server/trunk/configs/client/pom.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/
> client/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/configs/client/pom.xml (original)
> +++ geronimo/server/trunk/configs/client/pom.xml Mon Sep 11
> 13:19:59 2006
> @@ -196,6 +196,14 @@
> concurrent, jdom -->
>
> <dependency>
> + <groupId>backport-util-concurrent</groupId>
> + <artifactId>backport-util-concurrent</artifactId>
> + </dependency>
> +
> + <!--
> + NOTE: Used by dependencies... :-(
> + -->
> + <dependency>
> <groupId>concurrent</groupId>
> <artifactId>concurrent</artifactId>
> </dependency>
>
> Modified: geronimo/server/trunk/configs/j2ee-system/pom.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/
> j2ee-system/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/configs/j2ee-system/pom.xml (original)
> +++ geronimo/server/trunk/configs/j2ee-system/pom.xml Mon Sep 11
> 13:19:59 2006
> @@ -135,10 +135,6 @@
> <artifactId>backport-util-concurrent</
> artifactId>
> </element>
> <element>
> - <groupId>concurrent</groupId>
> - <artifactId>concurrent</artifactId>
> - </element>
> - <element>
> <groupId>xerces</groupId>
> <artifactId>xercesImpl</artifactId>
> <classpathPrefix>../lib/endorsed</
> classpathPrefix>
>
> Modified: geronimo/server/trunk/configs/openejb/pom.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/
> openejb/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/configs/openejb/pom.xml (original)
> +++ geronimo/server/trunk/configs/openejb/pom.xml Mon Sep 11
> 13:19:59 2006
> @@ -33,21 +33,21 @@
> <packaging>car</packaging>
>
> <dependencies>
> -
> +
> <dependency>
> <groupId>org.apache.geronimo.configs</groupId>
> <artifactId>j2ee-server</artifactId>
> <version>${pom.version}</version>
> <type>car</type>
> </dependency>
> -
> +
> <dependency>
> <groupId>org.apache.geronimo.configs</groupId>
> <artifactId>axis</artifactId>
> <version>${pom.version}</version>
> <type>car</type>
> </dependency>
> -
> +
> <dependency>
> <groupId>org.apache.geronimo.configs</groupId>
> <artifactId>system-database</artifactId>
> @@ -60,6 +60,11 @@
> <artifactId>openejb-core</artifactId>
> </dependency>
>
> + <dependency>
> + <groupId>concurrent</groupId>
> + <artifactId>concurrent</artifactId>
> + </dependency>
> +
> </dependencies>
>
> </project>
>
> Modified: geronimo/server/trunk/configs/openejb/src/plan/plan.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/
> openejb/src/plan/plan.xml?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/configs/openejb/src/plan/plan.xml (original)
> +++ geronimo/server/trunk/configs/openejb/src/plan/plan.xml Mon Sep
> 11 13:19:59 2006
> @@ -100,7 +100,13 @@
> </reference>
> <attribute name="doAsCurrentCaller">true</attribute>
> </gbean>
> -
> +
> + <gbean name="DefaultThreadPoolExecutorAdapter"
> class="org.openejb.util.BackportExecutorAdapter">
> + <reference name="TargetExecutor">
> + <name>DefaultThreadPool</name>
> + </reference>
> + </gbean>
> +
> <gbean name="EJBNetworkService"
> class="org.activeio.xnet.StandardServiceStackGBean">
> <attribute name="name">EJB</attribute>
> <attribute name="port">${PlanOpenEJBPort}</attribute>
> @@ -109,7 +115,7 @@
> <attribute name="logOnSuccess">HOST,NAME,THREADID,USERID</
> attribute>
> <attribute name="logOnFailure">HOST,NAME</attribute>
> <reference name="Executor">
> - <name>DefaultThreadPool</name>
> + <name>DefaultThreadPoolExecutorAdapter</name>
> </reference>
> <reference name="Server">
> <name>EJBServer</name>
>
> Modified: geronimo/server/trunk/configs/rmi-naming/pom.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/rmi-
> naming/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/configs/rmi-naming/pom.xml (original)
> +++ geronimo/server/trunk/configs/rmi-naming/pom.xml Mon Sep 11
> 13:19:59 2006
> @@ -184,6 +184,11 @@
> <artifactId>activeio</artifactId>
> </dependency>
>
> + <dependency>
> + <groupId>concurrent</groupId>
> + <artifactId>concurrent</artifactId>
> + </dependency>
> +
> </dependencies>
>
> </project>
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/outbound/
> AbstractSinglePoolConnectionInterceptor.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/
> outbound/AbstractSinglePoolConnectionInterceptor.java?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/outbound/
> AbstractSinglePoolConnectionInterceptor.java (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/outbound/
> AbstractSinglePoolConnectionInterceptor.java Mon Sep 11 13:19:59 2006
> @@ -20,16 +20,18 @@
> import java.util.ArrayList;
> import java.util.Iterator;
> import java.util.Timer;
> +
> import javax.resource.spi.ManagedConnectionFactory;
> import javax.resource.spi.ConnectionRequestInfo;
> import javax.resource.ResourceException;
> import javax.security.auth.Subject;
>
> -import EDU.oswego.cs.dl.util.concurrent.FIFOSemaphore;
> -import EDU.oswego.cs.dl.util.concurrent.ReadWriteLock;
> -import
> EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock;
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> +import
> edu.emory.mathcs.backport.java.util.concurrent.locks.ReadWriteLock;
> +import
> edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantReadWrit
> eLock;
> +import edu.emory.mathcs.backport.java.util.concurrent.Semaphore;
> +import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
>
> /**
> * @version $Rev$ $Date$
> @@ -37,8 +39,8 @@
> public abstract class AbstractSinglePoolConnectionInterceptor
> implements ConnectionInterceptor, PoolingAttributes {
> protected static Log log = LogFactory.getLog
> (SinglePoolConnectionInterceptor.class.getName());
> protected final ConnectionInterceptor next;
> - private final ReadWriteLock resizeLock = new
> WriterPreferenceReadWriteLock();
> - protected FIFOSemaphore permits;
> + private final ReadWriteLock resizeLock = new
> ReentrantReadWriteLock();
> + protected Semaphore permits;
> protected int blockingTimeoutMilliseconds;
> protected int connectionCount = 0;
> private long idleTimeoutMilliseconds;
> @@ -59,7 +61,7 @@
> this.minSize = minSize;
> this.blockingTimeoutMilliseconds =
> blockingTimeoutMilliseconds;
> setIdleTimeoutMinutes(idleTimeoutMinutes);
> - permits = new FIFOSemaphore(maxSize);
> + permits = new Semaphore(maxSize, true);
> }
>
> public void getConnection(ConnectionInfo connectionInfo)
> throws ResourceException {
> @@ -67,9 +69,9 @@
> return;
> }
> try {
> - resizeLock.readLock().acquire();
> + resizeLock.readLock().lock();
> try {
> - if (permits.attempt(blockingTimeoutMilliseconds)) {
> + if (permits.tryAcquire
> (blockingTimeoutMilliseconds, TimeUnit.MILLISECONDS)) {
> internalGetConnection(connectionInfo);
> } else {
> throw new ResourceException("No
> ManagedConnections available "
> @@ -79,7 +81,7 @@
>
> }
> } finally {
> - resizeLock.readLock().release();
> + resizeLock.readLock().unlock();
> }
>
> } catch (InterruptedException ie) {
> @@ -100,16 +102,12 @@
> try {
> connectionInfo.getManagedConnectionInfo
> ().getManagedConnection().destroy();
> } catch (ResourceException re) {
> + // empty
> }
> return;
> }
>
> - try {
> - resizeLock.readLock().acquire();
> - } catch (InterruptedException e) {
> - //TODO figure out something better to do here!!!
> - throw new RuntimeException("Interrupted before
> returning connection! Pool is now in an invalid state!");
> - }
> + resizeLock.readLock().lock();
> try {
> ManagedConnectionInfo mci =
> connectionInfo.getManagedConnectionInfo();
> if (connectionReturnAction ==
> ConnectionReturnAction.RETURN_HANDLE && mci.hasConnectionHandles()) {
> @@ -122,7 +120,7 @@
> permits.release();
> }
> } finally {
> - resizeLock.readLock().release();
> + resizeLock.readLock().unlock();
> }
> }
>
> @@ -150,12 +148,12 @@
> throw new IllegalArgumentException("Max size must be
> positive, not " + newMaxSize);
> }
> if (newMaxSize != getPartitionMaxSize()) {
> - resizeLock.writeLock().acquire();
> + resizeLock.writeLock().lock();
> try {
> - ResizeInfo resizeInfo = new ResizeInfo
> (this.minSize, (int)permits.permits(), connectionCount, newMaxSize);
> + ResizeInfo resizeInfo = new ResizeInfo
> (this.minSize, permits.availablePermits(), connectionCount,
> newMaxSize);
> this.shrinkLater = resizeInfo.getShrinkLater();
>
> - permits = new FIFOSemaphore(newMaxSize);
> + permits = new Semaphore(newMaxSize, true);
> //pre-acquire permits for the existing checked out
> connections that will not be closed when they are returned.
> for (int i = 0; i <
> resizeInfo.getTransferCheckedOut(); i++) {
> permits.acquire();
> @@ -164,7 +162,7 @@
> transferConnections(newMaxSize,
> resizeInfo.getShrinkNow());
> this.minSize = resizeInfo.getNewMinSize();
> } finally {
> - resizeLock.writeLock().release();
> + resizeLock.writeLock().unlock();
> }
> }
> }
> @@ -288,11 +286,8 @@
> AbstractSinglePoolConnectionInterceptor interceptor =
> parent;
> if (interceptor == null)
> return;
> - try {
> - interceptor.resizeLock.readLock().acquire();
> - } catch (InterruptedException e) {
> - return;
> - }
> +
> + interceptor.resizeLock.readLock().lock();
> try {
> long threshold = System.currentTimeMillis() -
> interceptor.idleTimeoutMilliseconds;
> ArrayList killList = new ArrayList
> (interceptor.getPartitionMaxSize());
> @@ -304,7 +299,7 @@
> }
> interceptor.permits.release(killList.size());
> } finally {
> - interceptor.resizeLock.readLock().release();
> + interceptor.resizeLock.readLock().unlock();
> }
> }
>
> @@ -324,11 +319,7 @@
> }
>
> public void run() {
> - try {
> - resizeLock.readLock().acquire();
> - } catch (InterruptedException e) {
> - return;
> - }
> + resizeLock.readLock().lock();
> try {
> while (connectionCount < minSize) {
> ManagedConnectionInfo mci = new
> ManagedConnectionInfo(managedConnectionFactory, cri);
> @@ -339,15 +330,14 @@
> } catch (ResourceException e) {
> return;
> }
> - boolean added = false;
> - added = addToPool(mci);
> + boolean added = addToPool(mci);
> if (!added) {
> internalReturn(ci,
> ConnectionReturnAction.DESTROY);
> return;
> }
> }
> } finally {
> - resizeLock.readLock().release();
> + resizeLock.readLock().unlock();
> }
> }
>
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/outbound/
> MultiPoolConnectionInterceptor.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/
> outbound/MultiPoolConnectionInterceptor.java?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/outbound/
> MultiPoolConnectionInterceptor.java (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/outbound/
> MultiPoolConnectionInterceptor.java Mon Sep 11 13:19:59 2006
> @@ -17,8 +17,6 @@
>
> package org.apache.geronimo.connector.outbound;
>
> -//import EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap;
> -
> import java.util.HashMap;
> import java.util.Map;
> import java.util.Iterator;
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/work/GeronimoWorkManager.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/work/
> GeronimoWorkManager.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/GeronimoWorkManager.java (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/GeronimoWorkManager.java Mon Sep
> 11 13:19:59 2006
> @@ -24,7 +24,8 @@
> import javax.resource.spi.work.WorkListener;
> import javax.resource.spi.work.WorkManager;
>
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
> +
> import org.apache.geronimo.connector.work.pool.ScheduleWorkExecutor;
> import org.apache.geronimo.connector.work.pool.StartWorkExecutor;
> import org.apache.geronimo.connector.work.pool.SyncWorkExecutor;
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/work/GeronimoWorkManagerGBean.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/work/
> GeronimoWorkManagerGBean.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/GeronimoWorkManagerGBean.java
> (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/GeronimoWorkManagerGBean.java
> Mon Sep 11 13:19:59 2006
> @@ -22,7 +22,8 @@
> import org.apache.geronimo.gbean.GBeanLifecycle;
> import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
> import org.apache.geronimo.transaction.manager.XAWork;
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
>
> /**
> *
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/work/WorkerContext.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/work/
> WorkerContext.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/WorkerContext.java (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/WorkerContext.java Mon Sep 11
> 13:19:59 2006
> @@ -30,11 +30,12 @@
> import javax.transaction.InvalidTransactionException;
> import javax.transaction.SystemException;
>
> -import EDU.oswego.cs.dl.util.concurrent.Latch;
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> +
> import
> org.apache.geronimo.transaction.manager.ImportedTransactionActiveExcep
> tion;
> import org.apache.geronimo.transaction.manager.XAWork;
> +import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
>
> /**
> * Work wrapper providing an execution context to a Work instance.
> @@ -111,12 +112,12 @@
> /**
> * A latch, which is released when the work is started.
> */
> - private Latch startLatch = new Latch();
> + private CountDownLatch startLatch = new CountDownLatch(1);
>
> /**
> * A latch, which is released when the work is completed.
> */
> - private Latch endLatch = new Latch();
> + private CountDownLatch endLatch = new CountDownLatch(1);
>
> /**
> * Create a WorkWrapper.
> @@ -142,10 +143,10 @@
> * Work processing events (work accepted,
> work rejected, work started,
> */
> public WorkerContext(Work aWork,
> - long aStartTimeout,
> - ExecutionContext execContext,
> - XAWork xaWork,
> - WorkListener workListener) {
> + long aStartTimeout,
> + ExecutionContext execContext,
> + XAWork xaWork,
> + WorkListener workListener) {
> adaptee = aWork;
> startTimeOut = aStartTimeout;
> executionContext = execContext;
> @@ -273,15 +274,15 @@
> if (isTimedOut()) {
> // In case of a time out, one releases the start and
> end latches
> // to prevent a dead-lock.
> - startLatch.release();
> - endLatch.release();
> + startLatch.countDown();
> + endLatch.countDown();
> return;
> }
> // Implementation note: the work listener is notified
> prior to release
> // the start lock. This behavior is intentional and seems
> to be the
> // more conservative.
> workListener.workStarted(new WorkEvent(this,
> WorkEvent.WORK_STARTED, adaptee, null));
> - startLatch.release();
> + startLatch.countDown();
> //Implementation note: we assume this is being called
> without an interesting TransactionContext,
> //and ignore/replace whatever is associated with the
> current thread.
> try {
> @@ -314,7 +315,7 @@
> workListener.workCompleted(new WorkEvent(this,
> WorkEvent.WORK_REJECTED, adaptee,
> workException));
> } finally {
> - endLatch.release();
> + endLatch.countDown();
> }
> }
>
> @@ -325,7 +326,7 @@
> * @return Latch that a caller can acquire to wait for the
> start of a
> * work execution.
> */
> - public synchronized Latch provideStartLatch() {
> + public synchronized CountDownLatch provideStartLatch() {
> return startLatch;
> }
>
> @@ -336,7 +337,7 @@
> * @return Latch that a caller can acquire to wait for the end
> of a
> * work execution.
> */
> - public synchronized Latch provideEndLatch() {
> + public synchronized CountDownLatch provideEndLatch() {
> return endLatch;
> }
>
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/work/pool/NullWorkExecutorPool.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/work/
> pool/NullWorkExecutorPool.java?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/NullWorkExecutorPool.java
> (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/NullWorkExecutorPool.java
> Mon Sep 11 13:19:59 2006
> @@ -51,7 +51,7 @@
> return this;
> }
>
> - public void execute(Runnable command) throws
> InterruptedException {
> + public void execute(Runnable command) {
> throw new IllegalStateException("Stopped");
> }
> }
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/work/pool/ScheduleWorkExecutor.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/work/
> pool/ScheduleWorkExecutor.java?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/ScheduleWorkExecutor.java
> (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/ScheduleWorkExecutor.java
> Mon Sep 11 13:19:59 2006
> @@ -19,8 +19,9 @@
>
> import javax.resource.spi.work.WorkException;
>
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> import org.apache.geronimo.connector.work.WorkerContext;
> +
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
>
> /**
> *
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/work/pool/StartWorkExecutor.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/work/
> pool/StartWorkExecutor.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/StartWorkExecutor.java
> (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/StartWorkExecutor.java Mon
> Sep 11 13:19:59 2006
> @@ -18,10 +18,11 @@
> package org.apache.geronimo.connector.work.pool;
>
> import javax.resource.spi.work.WorkException;
> -import EDU.oswego.cs.dl.util.concurrent.Latch;
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +
> import org.apache.geronimo.connector.work.WorkerContext;
> -import org.apache.geronimo.pool.GeronimoExecutor;
> +
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
> +import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
>
> /**
> *
> @@ -33,8 +34,8 @@
>
> public void doExecute(WorkerContext work, Executor executor)
> throws WorkException, InterruptedException {
> - Latch latch = work.provideStartLatch();
> + CountDownLatch latch = work.provideStartLatch();
> executor.execute(new NamedRunnable("A J2EE Connector",
> work));
> - latch.acquire();
> + latch.await();
> }
> }
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/work/pool/SyncWorkExecutor.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/work/
> pool/SyncWorkExecutor.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/SyncWorkExecutor.java
> (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/SyncWorkExecutor.java Mon
> Sep 11 13:19:59 2006
> @@ -18,10 +18,11 @@
> package org.apache.geronimo.connector.work.pool;
>
> import javax.resource.spi.work.WorkException;
> -import EDU.oswego.cs.dl.util.concurrent.Latch;
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +
> import org.apache.geronimo.connector.work.WorkerContext;
> -import org.apache.geronimo.pool.GeronimoExecutor;
> +
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
> +import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
>
> /**
> *
> @@ -33,9 +34,9 @@
>
> public void doExecute(WorkerContext work, Executor executor)
> throws WorkException, InterruptedException {
> - Latch latch = work.provideEndLatch();
> + CountDownLatch latch = work.provideEndLatch();
> executor.execute(new NamedRunnable("A J2EE Connector",
> work));
> - latch.acquire();
> + latch.await();
> }
>
> }
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/work/pool/WorkExecutor.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/work/
> pool/WorkExecutor.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/WorkExecutor.java (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/WorkExecutor.java Mon Sep
> 11 13:19:59 2006
> @@ -2,7 +2,8 @@
>
> import javax.resource.spi.work.WorkException;
>
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
> +
> import org.apache.geronimo.connector.work.WorkerContext;
>
> /**
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/work/pool/WorkExecutorPool.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/work/
> pool/WorkExecutorPool.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/WorkExecutorPool.java
> (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/WorkExecutorPool.java Mon
> Sep 11 13:19:59 2006
> @@ -17,10 +17,7 @@
>
> package org.apache.geronimo.connector.work.pool;
>
> -import javax.resource.spi.work.WorkException;
> -
> -import org.apache.geronimo.connector.work.WorkerContext;
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
>
> /**
> * Defines the operations that a pool in charge of the execution
> of Work
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/
> java/org/apache/geronimo/connector/work/pool/WorkExecutorPoolImpl.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/main/java/org/apache/geronimo/connector/work/
> pool/WorkExecutorPoolImpl.java?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/WorkExecutorPoolImpl.java
> (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/
> org/apache/geronimo/connector/work/pool/WorkExecutorPoolImpl.java
> Mon Sep 11 13:19:59 2006
> @@ -17,13 +17,9 @@
>
> package org.apache.geronimo.connector.work.pool;
>
> -import javax.resource.spi.work.WorkCompletedException;
> -import javax.resource.spi.work.WorkException;
> -
> -import EDU.oswego.cs.dl.util.concurrent.Channel;
> -import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
> -import EDU.oswego.cs.dl.util.concurrent.LinkedQueue;
> -import org.apache.geronimo.connector.work.WorkerContext;
> +import
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
> +import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
> +import
> edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
>
> /**
> * Based class for WorkExecutorPool. Sub-classes define the
> synchronization
> @@ -37,7 +33,7 @@
> /**
> * A timed out pooled executor.
> */
> - private PooledExecutor pooledExecutor;
> + private ThreadPoolExecutor pooledExecutor;
>
> /**
> * Creates a pool with the specified minimum and maximum
> sizes. The Channel
> @@ -47,35 +43,20 @@
> * @param maxSize Maximum size of the work executor pool.
> */
> public WorkExecutorPoolImpl(int maxSize) {
> - pooledExecutor = new PooledExecutor(new LinkedQueue(),
> maxSize);
> - pooledExecutor.setMinimumPoolSize(maxSize);
> - pooledExecutor.waitWhenBlocked();
> - }
> + pooledExecutor = new ThreadPoolExecutor(1, maxSize, 1,
> TimeUnit.MINUTES, new LinkedBlockingQueue());
> + /*
>
> - /**
> - * Creates a pool with the specified minimum and maximum sizes
> and using the
> - * specified Channel to enqueue the submitted Work instances.
> - *
> - * @param channel Queue to be used as the queueing facility of
> this pool.
> - * @param maxSize Maximum size of the work executor pool.
> - */
> - public WorkExecutorPoolImpl(
> - Channel channel,
> - int maxSize) {
> - pooledExecutor = new PooledExecutor(channel, maxSize);
> - pooledExecutor.setMinimumPoolSize(maxSize);
> + FIXME: How to do this with concurrent.util ?
> pooledExecutor.waitWhenBlocked();
> + */
> }
> -
> +
> /**
> * Execute the specified Work.
> *
> * @param work Work to be executed.
> - *
> - * @exception InterruptedException Indicates that the Work
> execution has been
> - * unsuccessful.
> */
> - public void execute(Runnable work) throws InterruptedException {
> + public void execute(Runnable work) {
> pooledExecutor.execute(work);
> }
>
> @@ -111,7 +92,7 @@
> */
> public WorkExecutorPool stop() {
> int maxSize = getMaximumPoolSize();
> - pooledExecutor.shutdownAfterProcessingCurrentlyQueuedTasks();
> + pooledExecutor.shutdown();
> return new NullWorkExecutorPool(maxSize);
> }
>
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/test/
> java/org/apache/geronimo/connector/work/PooledWorkManagerTest.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-connector/src/test/java/org/apache/geronimo/connector/work/
> PooledWorkManagerTest.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/test/java/
> org/apache/geronimo/connector/work/PooledWorkManagerTest.java
> (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/test/java/
> org/apache/geronimo/connector/work/PooledWorkManagerTest.java Mon
> Sep 11 13:19:59 2006
> @@ -42,9 +42,11 @@
>
> protected void setUp() throws Exception {
> super.setUp();
> +
> XAWork xaWork = new GeronimoTransactionManager();
> ThreadPool pool = new ThreadPool(1, "Connector Test",
> 30000, ThreadPool.class.getClassLoader(), "foo:test=bar");
> pool.setWaitWhenBlocked(true);
> +
> workManager = new GeronimoWorkManager(pool, pool, pool,
> xaWork);
> workManager.doStart();
> }
>
> Modified: geronimo/server/trunk/modules/geronimo-core/src/main/java/
> org/apache/geronimo/pool/GeronimoExecutor.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-core/src/main/java/org/apache/geronimo/pool/
> GeronimoExecutor.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-core/src/main/java/org/
> apache/geronimo/pool/GeronimoExecutor.java (original)
> +++ geronimo/server/trunk/modules/geronimo-core/src/main/java/org/
> apache/geronimo/pool/GeronimoExecutor.java Mon Sep 11 13:19:59 2006
> @@ -16,7 +16,7 @@
> */
> package org.apache.geronimo.pool;
>
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
>
> /**
> * A Geronimo-specific extension that contributes a little extra
> manageability
>
> Modified: geronimo/server/trunk/modules/geronimo-core/src/main/java/
> org/apache/geronimo/pool/ThreadPool.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-core/src/main/java/org/apache/geronimo/pool/
> ThreadPool.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-core/src/main/java/org/
> apache/geronimo/pool/ThreadPool.java (original)
> +++ geronimo/server/trunk/modules/geronimo-core/src/main/java/org/
> apache/geronimo/pool/ThreadPool.java Mon Sep 11 13:19:59 2006
> @@ -21,16 +21,24 @@
> import java.util.HashMap;
> import java.util.Iterator;
> import java.util.Map;
> +
> import javax.management.MalformedObjectNameException;
> import javax.management.ObjectName;
> import javax.management.j2ee.statistics.BoundedRangeStatistic;
> import javax.management.j2ee.statistics.CountStatistic;
> import javax.management.j2ee.statistics.Stats;
> -import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
> -import EDU.oswego.cs.dl.util.concurrent.ThreadFactory;
> +
> +import
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
> +import
> edu.emory.mathcs.backport.java.util.concurrent.RejectedExecutionHandle
> r;
> +import
> edu.emory.mathcs.backport.java.util.concurrent.RejectedExecutionExcept
> ion;
> +import edu.emory.mathcs.backport.java.util.concurrent.ThreadFactory;
> +import
> edu.emory.mathcs.backport.java.util.concurrent.SynchronousQueue;
> +import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
> +
> import org.apache.geronimo.gbean.GBeanInfo;
> import org.apache.geronimo.gbean.GBeanInfoBuilder;
> import org.apache.geronimo.gbean.GBeanLifecycle;
> +
> import org.apache.geronimo.management.J2EEManagedObject;
> import org.apache.geronimo.management.StatisticsProvider;
> import org.apache.geronimo.management.geronimo.stats.ThreadPoolStats;
> @@ -42,23 +50,26 @@
> * @version $Rev$ $Date$
> */
> public class ThreadPool implements GeronimoExecutor,
> GBeanLifecycle, J2EEManagedObject, StatisticsProvider {
> - private PooledExecutor executor;
> + private ThreadPoolExecutor executor;
> private ClassLoader classLoader;
> private ObjectName objectName;
> private boolean waitWhenBlocked;
> -
> +
> // Statistics-related fields follow
> private boolean statsActive = true;
> private PoolStatsImpl stats = new PoolStatsImpl();
> private Map clients = new HashMap();
>
> -
> public ThreadPool(int poolSize, String poolName, long
> keepAliveTime, ClassLoader classLoader, String objectName) {
> - PooledExecutor p = new PooledExecutor(poolSize);
> - p.abortWhenBlocked();
> - p.setKeepAliveTime(keepAliveTime);
> - p.setMinimumPoolSize(poolSize);
> + ThreadPoolExecutor p = new ThreadPoolExecutor(
> + poolSize, // core size
> + poolSize, // max size
> + keepAliveTime, TimeUnit.MILLISECONDS,
> + new SynchronousQueue());
> +
> + p.setRejectedExecutionHandler(new
> ThreadPoolExecutor.AbortPolicy());
> p.setThreadFactory(new ThreadPoolThreadFactory(poolName,
> classLoader));
> +
> try {
> this.objectName = ObjectName.getInstance(objectName);
> } catch (MalformedObjectNameException e) {
> @@ -158,11 +169,11 @@
> return executor.getMaximumPoolSize();
> }
>
> - public void execute(Runnable command) throws
> InterruptedException {
> + public void execute(Runnable command) {
> execute("Unknown", command);
> }
>
> - public void execute(final String consumerName, final Runnable
> runnable) throws InterruptedException {
> + public void execute(final String consumerName, final Runnable
> runnable) {
> Runnable command;
> if (statsActive) {
> command = new Runnable() {
> @@ -179,7 +190,7 @@
> command = runnable;
> }
>
> - PooledExecutor p;
> + ThreadPoolExecutor p;
> synchronized (this) {
> p = executor;
> }
> @@ -207,13 +218,26 @@
> clients.put(consumerName, new Integer(test.intValue()
> - 1));
> }
> }
> -
> +
> + private static class WaitWhenBlockedPolicy
> + implements RejectedExecutionHandler
> + {
> + public void rejectedExecution(Runnable r,
> ThreadPoolExecutor executor) throws RejectedExecutionException {
> + try {
> + executor.getQueue().put(r);
> + }
> + catch (InterruptedException e) {
> + throw new RejectedExecutionException(e);
> + }
> + }
> + }
> +
> public void setWaitWhenBlocked(boolean wait) {
> waitWhenBlocked = wait;
> if(wait) {
> - executor.waitWhenBlocked();
> + executor.setRejectedExecutionHandler(new
> WaitWhenBlockedPolicy());
> } else {
> - executor.abortWhenBlocked();
> + executor.setRejectedExecutionHandler(new
> ThreadPoolExecutor.AbortPolicy());
> }
> }
>
> @@ -225,7 +249,7 @@
> }
>
> public void doStop() throws Exception {
> - PooledExecutor p;
> + ThreadPoolExecutor p;
> synchronized (this) {
> p = executor;
> executor = null;
>
> Modified: geronimo/server/trunk/modules/geronimo-security/pom.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-security/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-security/pom.xml (original)
> +++ geronimo/server/trunk/modules/geronimo-security/pom.xml Mon Sep
> 11 13:19:59 2006
> @@ -73,6 +73,15 @@
> <artifactId>activeio</artifactId>
> </dependency>
>
> + <!--
> + Required by activeio:activeio
> + -->
> + <dependency>
> + <groupId>concurrent</groupId>
> + <artifactId>concurrent</artifactId>
> + <scope>test</scope>
> + </dependency>
> +
> <dependency>
> <groupId>regexp</groupId>
> <artifactId>regexp</artifactId>
>
> Modified: geronimo/server/trunk/modules/geronimo-security/src/main/
> java/org/apache/geronimo/security/jaas/server/JaasLoginService.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-security/src/main/java/org/apache/geronimo/security/jaas/
> server/JaasLoginService.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-security/src/main/java/
> org/apache/geronimo/security/jaas/server/JaasLoginService.java
> (original)
> +++ geronimo/server/trunk/modules/geronimo-security/src/main/java/
> org/apache/geronimo/security/jaas/server/JaasLoginService.java Mon
> Sep 11 13:19:59 2006
> @@ -14,10 +14,9 @@
> * See the License for the specific language governing
> permissions and
> * limitations under the License.
> */
> +
> package org.apache.geronimo.security.jaas.server;
>
> -import EDU.oswego.cs.dl.util.concurrent.ClockDaemon;
> -import EDU.oswego.cs.dl.util.concurrent.ThreadFactory;
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> import org.apache.geronimo.common.GeronimoSecurityException;
> @@ -34,6 +33,7 @@
> import javax.crypto.Mac;
> import javax.crypto.SecretKey;
> import javax.crypto.spec.SecretKeySpec;
> +
> import javax.security.auth.Subject;
> import javax.security.auth.callback.Callback;
> import javax.security.auth.login.LoginException;
> @@ -41,6 +41,7 @@
> import java.security.InvalidKeyException;
> import java.security.NoSuchAlgorithmException;
> import java.security.Principal;
> +
> import java.util.Collection;
> import java.util.HashMap;
> import java.util.Hashtable;
> @@ -49,7 +50,8 @@
> import java.util.List;
> import java.util.Map;
> import java.util.Set;
> -
> +import java.util.Timer;
> +import java.util.TimerTask;
>
> /**
> * The single point of contact for Geronimo JAAS realms. Instead
> of attempting
> @@ -63,10 +65,9 @@
> public static final Log log = LogFactory.getLog
> (JaasLoginService.class);
> private final static int DEFAULT_EXPIRED_LOGIN_SCAN_INTERVAL =
> 300000; // 5 mins
> private final static int DEFAULT_MAX_LOGIN_DURATION = 1000 *
> 3600 * 24; // 1 day
> - private final static ClockDaemon clockDaemon;
> + private final static Timer clockDaemon = new Timer(/* Name
> requires JDK 1.5 "LoginService login modules monitor", */ true);
> private static long nextLoginModuleId =
> System.currentTimeMillis();
> private Collection realms;
> - private Object expiredLoginScanIdentifier;
> private final String objectName;
> private final SecretKey key;
> private final String algorithm;
> @@ -74,7 +75,7 @@
> private final Map activeLogins = new Hashtable();
> private int expiredLoginScanIntervalMillis =
> DEFAULT_EXPIRED_LOGIN_SCAN_INTERVAL;
> private int maxLoginDurationMillis = DEFAULT_MAX_LOGIN_DURATION;
> -
> + private ExpirationMonitor expirationMonitor;
>
> public JaasLoginService(String algorithm, String password,
> ClassLoader classLoader, String objectName) {
> this.classLoader = classLoader;
> @@ -137,11 +138,18 @@
> }
>
> public void doStart() throws Exception {
> - expiredLoginScanIdentifier =
> clockDaemon.executePeriodically(expiredLoginScanIntervalMillis, new
> ExpirationMonitor(), true);
> + expirationMonitor = new ExpirationMonitor();
> +
> + clockDaemon.scheduleAtFixedRate(
> + expirationMonitor, expiredLoginScanIntervalMillis,
> expiredLoginScanIntervalMillis);
> }
>
> public void doStop() throws Exception {
> - ClockDaemon.cancel(expiredLoginScanIdentifier);
> + if (expirationMonitor != null) {
> + expirationMonitor.cancel();
> + expirationMonitor = null;
> + }
> +
> //todo: shut down all logins
> }
>
> @@ -389,20 +397,7 @@
> return null;
> }
>
> -
> - // This stuff takes care of whacking old logins
> - static {
> - clockDaemon = new ClockDaemon();
> - clockDaemon.setThreadFactory(new ThreadFactory() {
> - public Thread newThread(Runnable r) {
> - Thread t = new Thread(r, "LoginService login
> modules monitor");
> - t.setDaemon(true);
> - return t;
> - }
> - });
> - }
> -
> - private class ExpirationMonitor implements Runnable { //todo:
> different timeouts per realm?
> + private class ExpirationMonitor extends TimerTask { //todo:
> different timeouts per realm?
>
> public void run() {
> long now = System.currentTimeMillis();
>
> Modified: geronimo/server/trunk/modules/geronimo-system/pom.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-system/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-system/pom.xml (original)
> +++ geronimo/server/trunk/modules/geronimo-system/pom.xml Mon Sep
> 11 13:19:59 2006
> @@ -52,8 +52,8 @@
> </dependency>
>
> <dependency>
> - <groupId>concurrent</groupId>
> - <artifactId>concurrent</artifactId>
> + <groupId>backport-util-concurrent</groupId>
> + <artifactId>backport-util-concurrent</artifactId>
> </dependency>
>
> <!--
>
> Modified: geronimo/server/trunk/modules/geronimo-system/src/main/
> java/org/apache/geronimo/system/rmi/RMIClassLoaderSpiImpl.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-system/src/main/java/org/apache/geronimo/system/rmi/
> RMIClassLoaderSpiImpl.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-system/src/main/java/org/
> apache/geronimo/system/rmi/RMIClassLoaderSpiImpl.java (original)
> +++ geronimo/server/trunk/modules/geronimo-system/src/main/java/org/
> apache/geronimo/system/rmi/RMIClassLoaderSpiImpl.java Mon Sep 11
> 13:19:59 2006
> @@ -26,7 +26,8 @@
>
> import java.rmi.server.RMIClassLoader;
> import java.rmi.server.RMIClassLoaderSpi;
> -import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
> +
> +import
> edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap;
>
> /**
> * An implementation of {@link RMIClassLoaderSpi} which provides
> normilzation
> @@ -40,7 +41,7 @@
> private RMIClassLoaderSpi delegate =
> RMIClassLoader.getDefaultProviderInstance();
>
> //TODO: Not sure of the best initial size. Starting with 100
> which should be reasonable.
> - private ConcurrentReaderHashMap cachedCodebases = new
> ConcurrentReaderHashMap(100, 0.75F);
> + private ConcurrentHashMap cachedCodebases = new
> ConcurrentHashMap(100, 0.75F);
>
>
> public Class loadClass(String codebase, String name,
> ClassLoader defaultLoader)
>
> Modified: geronimo/server/trunk/modules/geronimo-timer/pom.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-timer/pom.xml?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-timer/pom.xml (original)
> +++ geronimo/server/trunk/modules/geronimo-timer/pom.xml Mon Sep 11
> 13:19:59 2006
> @@ -38,7 +38,10 @@
>
> https://issues.apache.org/jira/browse/GERONIMO-2183
> -->
> + <!--
> + TEMP: Testing concurrent changes...
> <maven.test.skip>true</maven.test.skip>
> + -->
> </properties>
>
> <dependencies>
> @@ -87,10 +90,10 @@
> <groupId>org.apache.derby</groupId>
> <artifactId>derby</artifactId>
> </dependency>
> -
> +
> <dependency>
> - <groupId>concurrent</groupId>
> - <artifactId>concurrent</artifactId>
> + <groupId>backport-util-concurrent</groupId>
> + <artifactId>backport-util-concurrent</artifactId>
> </dependency>
>
> </dependencies>
>
> Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/
> java/org/apache/geronimo/timer/ExecutorFeedingTimerTask.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-timer/src/main/java/org/apache/geronimo/timer/
> ExecutorFeedingTimerTask.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/ExecutorFeedingTimerTask.java (original)
> +++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/ExecutorFeedingTimerTask.java Mon Sep 11
> 13:19:59 2006
> @@ -47,11 +47,7 @@
> }
>
> public void run() {
> - try {
> - threadPooledTimer.getExecutor().execute
> (workInfo.getExecutorTask());
> - } catch (InterruptedException e) {
> - log.warn("Exception running task", e);
> - }
> + threadPooledTimer.getExecutor().execute
> (workInfo.getExecutorTask());
> }
>
> public boolean cancel() {
>
> Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/
> java/org/apache/geronimo/timer/ThreadPooledTimer.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-timer/src/main/java/org/apache/geronimo/timer/
> ThreadPooledTimer.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/ThreadPooledTimer.java (original)
> +++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/ThreadPooledTimer.java Mon Sep 11 13:19:59 2006
> @@ -33,7 +33,8 @@
> import javax.transaction.Transaction;
> import javax.transaction.TransactionManager;
>
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
> +
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> import org.apache.geronimo.gbean.GBeanLifecycle;
>
> Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/
> java/org/apache/geronimo/timer/jdbc/
> JDBCStoreThreadPooledNonTransactionalTimer.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/
> JDBCStoreThreadPooledNonTransactionalTimer.java?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/jdbc/
> JDBCStoreThreadPooledNonTransactionalTimer.java (original)
> +++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/jdbc/
> JDBCStoreThreadPooledNonTransactionalTimer.java Mon Sep 11 13:19:59
> 2006
> @@ -21,7 +21,8 @@
> import javax.sql.DataSource;
> import javax.transaction.TransactionManager;
>
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
> +
> import
> org.apache.geronimo.connector.outbound.ConnectionFactorySource;
> import org.apache.geronimo.gbean.GBeanInfo;
> import org.apache.geronimo.gbean.GBeanInfoBuilder;
>
> Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/
> java/org/apache/geronimo/timer/jdbc/
> JDBCStoreThreadPooledTransactionalTimer.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-timer/src/main/java/org/apache/geronimo/timer/jdbc/
> JDBCStoreThreadPooledTransactionalTimer.java?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/jdbc/
> JDBCStoreThreadPooledTransactionalTimer.java (original)
> +++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/jdbc/
> JDBCStoreThreadPooledTransactionalTimer.java Mon Sep 11 13:19:59 2006
> @@ -21,7 +21,8 @@
> import javax.sql.DataSource;
> import javax.transaction.TransactionManager;
>
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
> +
> import
> org.apache.geronimo.connector.outbound.ConnectionFactorySource;
> import org.apache.geronimo.gbean.GBeanInfo;
> import org.apache.geronimo.gbean.GBeanInfoBuilder;
>
> Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/
> java/org/apache/geronimo/timer/vm/
> VMStoreThreadPooledNonTransactionalTimer.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/
> VMStoreThreadPooledNonTransactionalTimer.java?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/vm/
> VMStoreThreadPooledNonTransactionalTimer.java (original)
> +++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/vm/
> VMStoreThreadPooledNonTransactionalTimer.java Mon Sep 11 13:19:59 2006
> @@ -19,7 +19,8 @@
>
> import javax.transaction.TransactionManager;
>
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
> +
> import org.apache.geronimo.gbean.GBeanInfo;
> import org.apache.geronimo.gbean.GBeanInfoBuilder;
> import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
>
> Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/
> java/org/apache/geronimo/timer/vm/
> VMStoreThreadPooledTransactionalTimer.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/
> VMStoreThreadPooledTransactionalTimer.java?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/vm/VMStoreThreadPooledTransactionalTimer.java
> (original)
> +++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/vm/VMStoreThreadPooledTransactionalTimer.java
> Mon Sep 11 13:19:59 2006
> @@ -19,7 +19,8 @@
>
> import javax.transaction.TransactionManager;
>
> -import EDU.oswego.cs.dl.util.concurrent.Executor;
> +import edu.emory.mathcs.backport.java.util.concurrent.Executor;
> +
> import org.apache.geronimo.gbean.GBeanInfo;
> import org.apache.geronimo.gbean.GBeanInfoBuilder;
> import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
>
> Modified: geronimo/server/trunk/modules/geronimo-timer/src/main/
> java/org/apache/geronimo/timer/vm/VMWorkerPersistence.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-timer/src/main/java/org/apache/geronimo/timer/vm/
> VMWorkerPersistence.java?view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/vm/VMWorkerPersistence.java (original)
> +++ geronimo/server/trunk/modules/geronimo-timer/src/main/java/org/
> apache/geronimo/timer/vm/VMWorkerPersistence.java Mon Sep 11
> 13:19:59 2006
> @@ -24,7 +24,8 @@
> import java.util.Collection;
> import java.util.ArrayList;
>
> -import EDU.oswego.cs.dl.util.concurrent.SynchronizedLong;
> +import
> edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicLong;
> +
> import org.apache.geronimo.timer.PersistenceException;
> import org.apache.geronimo.timer.Playback;
> import org.apache.geronimo.timer.WorkInfo;
> @@ -40,10 +41,10 @@
>
> private final Map tasks = Collections.synchronizedMap(new
> LinkedHashMap());
>
> - private final SynchronizedLong counter = new SynchronizedLong(0);
> + private final AtomicLong counter = new AtomicLong(0);
>
> public void save(WorkInfo workInfo) throws PersistenceException {
> - long id = counter.increment();
> + long id = counter.incrementAndGet();
> workInfo.setId(id);
> tasks.put(new Long(id), workInfo);
> }
>
> Modified: geronimo/server/trunk/modules/geronimo-timer/src/test/
> java/org/apache/geronimo/timer/AbstractThreadPooledTimerTest.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/
> geronimo-timer/src/test/java/org/apache/geronimo/timer/
> AbstractThreadPooledTimerTest.java?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/modules/geronimo-timer/src/test/java/org/
> apache/geronimo/timer/AbstractThreadPooledTimerTest.java (original)
> +++ geronimo/server/trunk/modules/geronimo-timer/src/test/java/org/
> apache/geronimo/timer/AbstractThreadPooledTimerTest.java Mon Sep 11
> 13:19:59 2006
> @@ -19,8 +19,10 @@
>
> import javax.transaction.TransactionManager;
>
> -import EDU.oswego.cs.dl.util.concurrent.SynchronizedInt;
> +import
> edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicInteger;
> +
> import junit.framework.TestCase;
> +
> import org.apache.geronimo.pool.ThreadPool;
> import org.apache.geronimo.timer.vm.VMWorkerPersistence;
>
> @@ -41,7 +43,7 @@
> private ThreadPool threadPool;
> private ThreadPooledTimer timer;
>
> - private SynchronizedInt counter = new SynchronizedInt(0);
> + private AtomicInteger counter = new AtomicInteger(0);
> protected TransactionManager transactionManager;
> protected ExecutorTaskFactory executableWorkFactory;
> protected UserTaskFactory userTaskFactory;
> @@ -177,7 +179,7 @@
> public Runnable newTask(long id) {
> return new Runnable() {
> public void run() {
> - counter.increment();
> + counter.incrementAndGet();
> }
>
> };
>
> Modified: geronimo/server/trunk/pom.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/pom.xml?
> view=diff&rev=442323&r1=442322&r2=442323
> ======================================================================
> ========
> --- geronimo/server/trunk/pom.xml (original)
> +++ geronimo/server/trunk/pom.xml Mon Sep 11 13:19:59 2006
> @@ -202,7 +202,13 @@
> <dependency>
> <groupId>backport-util-concurrent</groupId>
> <artifactId>backport-util-concurrent</artifactId>
> - <version>2.0_01_pd</version>
> + <version>2.2</version>
> + </dependency>
> +
> + <dependency>
> + <groupId>concurrent</groupId>
> + <artifactId>concurrent</artifactId>
> + <version>1.3.4</version>
> </dependency>
>
> <dependency>
> @@ -228,13 +234,7 @@
> <artifactId>commons-logging</artifactId>
> <version>1.0.4</version>
> </dependency>
> -
> - <dependency>
> - <groupId>concurrent</groupId>
> - <artifactId>concurrent</artifactId>
> - <version>1.3.4</version>
> - </dependency>
> -
> +
> <dependency>
> <groupId>org.objectweb.howl</groupId>
> <artifactId>howl</artifactId>
>
>