You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2015/04/16 16:01:48 UTC
[2/2] activemq git commit: AMQ-5721 - Update ActiveMQ to use
commons-pool2 instead of commons-pool.AMQ-5636 will need it. The JMS pool and
other components should use it as well.
AMQ-5721 - Update ActiveMQ to use commons-pool2 instead of commons-pool.AMQ-5636 will need it. The JMS pool and other components should use it as well.
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/6d6ed4ea
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/6d6ed4ea
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/6d6ed4ea
Branch: refs/heads/master
Commit: 6d6ed4eaaf66d144c98365c9448a88a9b574b8f0
Parents: 31834ed
Author: Jeff Genender <jg...@savoirtech.com>
Authored: Tue Apr 14 06:57:00 2015 -0600
Committer: Dejan Bosanac <de...@nighttale.net>
Committed: Thu Apr 16 16:01:39 2015 +0200
----------------------------------------------------------------------
.../camel/component/ActiveMQConfiguration.java | 4 +-
activemq-console/pom.xml | 4 +-
activemq-jms-pool/pom.xml | 4 +-
.../activemq/jms/pool/ConnectionPool.java | 43 +++++++-------
.../jms/pool/PooledConnectionFactory.java | 61 +++++++++++---------
.../apache/activemq/jms/pool/PooledSession.java | 2 +-
.../src/main/resources/features-core.xml | 2 +-
activemq-pool/pom.xml | 4 +-
activemq-rar/pom.xml | 12 ++--
activemq-spring/pom.xml | 4 +-
assembly/pom.xml | 4 +-
assembly/src/main/descriptors/common-bin.xml | 2 +-
pom.xml | 8 +--
trash/activemq-optional/pom.xml | 4 +-
14 files changed, 83 insertions(+), 75 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/activemq-camel/src/main/java/org/apache/activemq/camel/component/ActiveMQConfiguration.java
----------------------------------------------------------------------
diff --git a/activemq-camel/src/main/java/org/apache/activemq/camel/component/ActiveMQConfiguration.java b/activemq-camel/src/main/java/org/apache/activemq/camel/component/ActiveMQConfiguration.java
index 5dba295..5b9007b 100644
--- a/activemq-camel/src/main/java/org/apache/activemq/camel/component/ActiveMQConfiguration.java
+++ b/activemq-camel/src/main/java/org/apache/activemq/camel/component/ActiveMQConfiguration.java
@@ -109,7 +109,7 @@ public class ActiveMQConfiguration extends JmsConfiguration {
* than the default with the Spring {@link JmsTemplate} which will create a new connection, session, producer
* for each message then close them all down again.
* <p/>
- * The default value is true. Note that this requires an extra dependency on commons-pool.
+ * The default value is true. Note that this requires an extra dependency on commons-pool2.
*/
public void setUsePooledConnection(boolean usePooledConnection) {
this.usePooledConnection = usePooledConnection;
@@ -162,7 +162,7 @@ public class ActiveMQConfiguration extends JmsConfiguration {
}
protected ConnectionFactory createPooledConnectionFactory(ActiveMQConnectionFactory connectionFactory) {
- // lets not use classes directly to avoid a runtime dependency on commons-pool
+ // lets not use classes directly to avoid a runtime dependency on commons-pool2
// for folks not using this option
try {
Class type = loadClass("org.apache.activemq.pool.PooledConnectionFactory", getClass().getClassLoader());
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/activemq-console/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-console/pom.xml b/activemq-console/pom.xml
index 5db0a1a..ab26df5 100644
--- a/activemq-console/pom.xml
+++ b/activemq-console/pom.xml
@@ -60,8 +60,8 @@
<artifactId>geronimo-jms_1.1_spec</artifactId>
</dependency>
<dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>org.apache.xbean</groupId>
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/activemq-jms-pool/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/pom.xml b/activemq-jms-pool/pom.xml
index 252c362..bc60b55 100755
--- a/activemq-jms-pool/pom.xml
+++ b/activemq-jms-pool/pom.xml
@@ -69,8 +69,8 @@
<optional>true</optional>
</dependency>
<dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
</dependency>
<!-- for testing use amq -->
<dependency>
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/ConnectionPool.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/ConnectionPool.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/ConnectionPool.java
index 6c3fdc3..27c6ca4 100644
--- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/ConnectionPool.java
+++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/ConnectionPool.java
@@ -29,9 +29,13 @@ import javax.jms.Session;
import javax.jms.TemporaryQueue;
import javax.jms.TemporaryTopic;
-import org.apache.commons.pool.KeyedPoolableObjectFactory;
-import org.apache.commons.pool.impl.GenericKeyedObjectPool;
-import org.apache.commons.pool.impl.GenericObjectPool;
+import org.apache.commons.pool2.BasePooledObjectFactory;
+import org.apache.commons.pool2.KeyedObjectPool;
+import org.apache.commons.pool2.KeyedPooledObjectFactory;
+import org.apache.commons.pool2.PooledObject;
+import org.apache.commons.pool2.impl.DefaultPooledObject;
+import org.apache.commons.pool2.impl.GenericKeyedObjectPool;
+import org.apache.commons.pool2.impl.GenericObjectPool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -67,29 +71,29 @@ public class ConnectionPool implements ExceptionListener {
// Create our internal Pool of session instances.
this.sessionPool = new GenericKeyedObjectPool<SessionKey, SessionHolder>(
- new KeyedPoolableObjectFactory<SessionKey, SessionHolder>() {
-
+ new KeyedPooledObjectFactory<SessionKey, SessionHolder>() {
@Override
- public void activateObject(SessionKey key, SessionHolder session) throws Exception {
+ public PooledObject<SessionHolder> makeObject(SessionKey sessionKey) throws Exception {
+
+ return new DefaultPooledObject<SessionHolder>(new SessionHolder(makeSession(sessionKey)));
}
@Override
- public void destroyObject(SessionKey key, SessionHolder session) throws Exception {
- session.close();
+ public void destroyObject(SessionKey sessionKey, PooledObject<SessionHolder> pooledObject) throws Exception {
+ ((SessionHolder)pooledObject.getObject()).close();
}
@Override
- public SessionHolder makeObject(SessionKey key) throws Exception {
- return new SessionHolder(makeSession(key));
+ public boolean validateObject(SessionKey sessionKey, PooledObject<SessionHolder> pooledObject) {
+ return true;
}
@Override
- public void passivateObject(SessionKey key, SessionHolder session) throws Exception {
+ public void activateObject(SessionKey sessionKey, PooledObject<SessionHolder> pooledObject) throws Exception {
}
@Override
- public boolean validateObject(SessionKey key, SessionHolder session) {
- return true;
+ public void passivateObject(SessionKey sessionKey, PooledObject<SessionHolder> pooledObject) throws Exception {
}
}
);
@@ -258,11 +262,11 @@ public class ConnectionPool implements ExceptionListener {
}
public int getMaximumActiveSessionPerConnection() {
- return this.sessionPool.getMaxActive();
+ return this.sessionPool.getMaxTotal();
}
public void setMaximumActiveSessionPerConnection(int maximumActiveSessionPerConnection) {
- this.sessionPool.setMaxActive(maximumActiveSessionPerConnection);
+ this.sessionPool.setMaxTotal(maximumActiveSessionPerConnection);
}
public boolean isUseAnonymousProducers() {
@@ -304,12 +308,11 @@ public class ConnectionPool implements ExceptionListener {
* Indicates whether blocking should be used to wait for more space to create a session.
*/
public void setBlockIfSessionPoolIsFull(boolean block) {
- this.sessionPool.setWhenExhaustedAction(
- (block ? GenericObjectPool.WHEN_EXHAUSTED_BLOCK : GenericObjectPool.WHEN_EXHAUSTED_FAIL));
+ this.sessionPool.setBlockWhenExhausted(block);
}
public boolean isBlockIfSessionPoolIsFull() {
- return this.sessionPool.getWhenExhaustedAction() == GenericObjectPool.WHEN_EXHAUSTED_BLOCK;
+ return this.sessionPool.getBlockWhenExhausted();
}
/**
@@ -319,7 +322,7 @@ public class ConnectionPool implements ExceptionListener {
* @see #setBlockIfSessionPoolIsFull(boolean)
*/
public long getBlockIfSessionPoolIsFullTimeout() {
- return this.sessionPool.getMaxWait();
+ return this.sessionPool.getMaxWaitMillis();
}
/**
@@ -337,7 +340,7 @@ public class ConnectionPool implements ExceptionListener {
* then use this setting to configure how long to block before retry
*/
public void setBlockIfSessionPoolIsFullTimeout(long blockIfSessionPoolIsFullTimeout) {
- this.sessionPool.setMaxWait(blockIfSessionPoolIsFullTimeout);
+ this.sessionPool.setMaxWaitMillis(blockIfSessionPoolIsFullTimeout);
}
/**
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
index 06918c5..ab251c5 100644
--- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
+++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
@@ -28,8 +28,10 @@ import javax.jms.QueueConnectionFactory;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
-import org.apache.commons.pool.KeyedPoolableObjectFactory;
-import org.apache.commons.pool.impl.GenericKeyedObjectPool;
+import org.apache.commons.pool2.KeyedPooledObjectFactory;
+import org.apache.commons.pool2.PooledObject;
+import org.apache.commons.pool2.impl.DefaultPooledObject;
+import org.apache.commons.pool2.impl.GenericKeyedObjectPool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -85,27 +87,10 @@ public class PooledConnectionFactory implements ConnectionFactory, QueueConnecti
public void initConnectionsPool() {
if (this.connectionsPool == null) {
this.connectionsPool = new GenericKeyedObjectPool<ConnectionKey, ConnectionPool>(
- new KeyedPoolableObjectFactory<ConnectionKey, ConnectionPool>() {
-
- @Override
- public void activateObject(ConnectionKey key, ConnectionPool connection) throws Exception {
- }
-
- @Override
- public void destroyObject(ConnectionKey key, ConnectionPool connection) throws Exception {
- try {
- if (LOG.isTraceEnabled()) {
- LOG.trace("Destroying connection: {}", connection);
- }
- connection.close();
- } catch (Exception e) {
- LOG.warn("Close connection failed for connection: " + connection + ". This exception will be ignored.",e);
- }
- }
-
+ new KeyedPooledObjectFactory<ConnectionKey, ConnectionPool>() {
@Override
- public ConnectionPool makeObject(ConnectionKey key) throws Exception {
- Connection delegate = createConnection(key);
+ public PooledObject<ConnectionPool> makeObject(ConnectionKey connectionKey) throws Exception {
+ Connection delegate = createConnection(connectionKey);
ConnectionPool connection = createConnectionPool(delegate);
connection.setIdleTimeout(getIdleTimeout());
@@ -124,15 +109,25 @@ public class PooledConnectionFactory implements ConnectionFactory, QueueConnecti
PooledConnectionFactory.this.mostRecentlyCreated.set(connection);
- return connection;
+ return new DefaultPooledObject<ConnectionPool>(connection);
}
@Override
- public void passivateObject(ConnectionKey key, ConnectionPool connection) throws Exception {
+ public void destroyObject(ConnectionKey connectionKey, PooledObject<ConnectionPool> pooledObject) throws Exception {
+ ConnectionPool connection = pooledObject.getObject();
+ try {
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Destroying connection: {}", connection);
+ }
+ connection.close();
+ } catch (Exception e) {
+ LOG.warn("Close connection failed for connection: " + connection + ". This exception will be ignored.",e);
+ }
}
@Override
- public boolean validateObject(ConnectionKey key, ConnectionPool connection) {
+ public boolean validateObject(ConnectionKey connectionKey, PooledObject<ConnectionPool> pooledObject) {
+ ConnectionPool connection = pooledObject.getObject();
if (connection != null && connection.expiredCheck()) {
if (LOG.isTraceEnabled()) {
LOG.trace("Connection has expired: {} and will be destroyed", connection);
@@ -143,10 +138,19 @@ public class PooledConnectionFactory implements ConnectionFactory, QueueConnecti
return true;
}
+
+ @Override
+ public void activateObject(ConnectionKey connectionKey, PooledObject<ConnectionPool> pooledObject) throws Exception {
+ }
+
+ @Override
+ public void passivateObject(ConnectionKey connectionKey, PooledObject<ConnectionPool> pooledObject) throws Exception {
+ }
+
});
// Set max idle (not max active) since our connections always idle in the pool.
- this.connectionsPool.setMaxIdle(1);
+ this.connectionsPool.setMaxIdlePerKey(1);
this.connectionsPool.setLifo(false);
// We always want our validate method to control when idle objects are evicted.
@@ -378,7 +382,7 @@ public class PooledConnectionFactory implements ConnectionFactory, QueueConnecti
* @return the maxConnections that will be created for this pool.
*/
public int getMaxConnections() {
- return getConnectionsPool().getMaxIdle();
+ return getConnectionsPool().getMaxIdlePerKey();
}
/**
@@ -389,7 +393,8 @@ public class PooledConnectionFactory implements ConnectionFactory, QueueConnecti
* @param maxConnections the maxConnections to set
*/
public void setMaxConnections(int maxConnections) {
- getConnectionsPool().setMaxIdle(maxConnections);
+ getConnectionsPool().setMaxIdlePerKey(maxConnections);
+ getConnectionsPool().setMaxTotalPerKey(maxConnections);
}
/**
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java
----------------------------------------------------------------------
diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java
index cbfec29..1e8fd23 100644
--- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java
+++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java
@@ -47,7 +47,7 @@ import javax.jms.TopicSubscriber;
import javax.jms.XASession;
import javax.transaction.xa.XAResource;
-import org.apache.commons.pool.KeyedObjectPool;
+import org.apache.commons.pool2.KeyedObjectPool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/activemq-karaf/src/main/resources/features-core.xml
----------------------------------------------------------------------
diff --git a/activemq-karaf/src/main/resources/features-core.xml b/activemq-karaf/src/main/resources/features-core.xml
index c402684..6b77107 100644
--- a/activemq-karaf/src/main/resources/features-core.xml
+++ b/activemq-karaf/src/main/resources/features-core.xml
@@ -30,7 +30,7 @@
<bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-j2ee-management_1.1_spec/1.0.1</bundle>
<bundle dependency="true">mvn:org.jvnet.jaxb2_commons/jaxb2-basics-runtime/${jaxb-basics-version}</bundle>
<bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-impl/${jaxb-bundle-version}</bundle>
- <bundle dependency="false">mvn:commons-pool/commons-pool/${commons-pool-version}</bundle>
+ <bundle dependency="false">mvn:org.apache.commons/commons-pool2/${commons-pool2-version}</bundle>
<bundle dependency="false">mvn:commons-net/commons-net/${commons-net-version}</bundle>
<bundle dependency='true'>mvn:org.apache.zookeeper/zookeeper/${zookeeper-version}</bundle>
<!-- uber osgi bundle means client is not that lean, todo: introduce client osgi bundle -->
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/activemq-pool/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-pool/pom.xml b/activemq-pool/pom.xml
index f432a50..05a75ec 100755
--- a/activemq-pool/pom.xml
+++ b/activemq-pool/pom.xml
@@ -74,8 +74,8 @@
<optional>true</optional>
</dependency>
<dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/activemq-rar/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-rar/pom.xml b/activemq-rar/pom.xml
index 8adfa2c..90e891e 100644
--- a/activemq-rar/pom.xml
+++ b/activemq-rar/pom.xml
@@ -162,8 +162,8 @@
<artifactId>commons-primitives</artifactId>
</exclusion>
<exclusion>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
</exclusion>
</exclusions>
</dependency>
@@ -296,8 +296,8 @@
<artifactId>commons-primitives</artifactId>
</exclusion>
<exclusion>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
</exclusion>
</exclusions>
</dependency>
@@ -336,8 +336,8 @@
<artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
</dependency>
<dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/activemq-spring/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-spring/pom.xml b/activemq-spring/pom.xml
index 92b7f60..4137483 100755
--- a/activemq-spring/pom.xml
+++ b/activemq-spring/pom.xml
@@ -149,8 +149,8 @@
<optional>true</optional>
</dependency>
<dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/assembly/pom.xml
----------------------------------------------------------------------
diff --git a/assembly/pom.xml b/assembly/pom.xml
index 3428aae..ce2ec38 100755
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -228,8 +228,8 @@
<optional>true</optional>
</dependency>
<dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
<optional>true</optional>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/assembly/src/main/descriptors/common-bin.xml
----------------------------------------------------------------------
diff --git a/assembly/src/main/descriptors/common-bin.xml b/assembly/src/main/descriptors/common-bin.xml
index efbd9f2..6359837 100644
--- a/assembly/src/main/descriptors/common-bin.xml
+++ b/assembly/src/main/descriptors/common-bin.xml
@@ -173,7 +173,7 @@
<include>commons-beanutils:commons-beanutils</include>
<include>commons-collections:commons-collections</include>
<include>org.apache.commons:commons-dbcp2</include>
- <include>commons-pool:commons-pool</include>
+ <include>org.apache.commons:commons-pool2</include>
<include>commons-codec:commons-codec</include>
<include>commons-net:commons-net</include>
<include>commons-lang:commons-lang</include>
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 96c761a..f45bf0f 100755
--- a/pom.xml
+++ b/pom.xml
@@ -57,7 +57,7 @@
<commons-io-version>2.4</commons-io-version>
<commons-lang-version>2.6</commons-lang-version>
<commons-logging-version>1.1.3</commons-logging-version>
- <commons-pool-version>1.6</commons-pool-version>
+ <commons-pool2-version>2.3</commons-pool2-version>
<commons-primitives-version>1.0</commons-primitives-version>
<commons-net-version>3.3</commons-net-version>
<directory-version>2.0.0-M6</directory-version>
@@ -855,9 +855,9 @@
</dependency>
<dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
- <version>${commons-pool-version}</version>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
+ <version>${commons-pool2-version}</version>
</dependency>
<!-- Optional Journal Implementation -->
http://git-wip-us.apache.org/repos/asf/activemq/blob/6d6ed4ea/trash/activemq-optional/pom.xml
----------------------------------------------------------------------
diff --git a/trash/activemq-optional/pom.xml b/trash/activemq-optional/pom.xml
index 6a7f3a9..f1aa50c 100755
--- a/trash/activemq-optional/pom.xml
+++ b/trash/activemq-optional/pom.xml
@@ -93,8 +93,8 @@
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>commons-collections</groupId>