diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java index 440b576f3c..0c6cf9de3e 100644 --- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java +++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java @@ -572,7 +572,9 @@ public class ActiveMQConnection extends ActiveMQConnectionForContextImpl impleme @Override protected final void finalize() throws Throwable { if (!closed) { - ActiveMQJMSClientLogger.LOGGER.connectionLeftOpen(creationStack); + if (this.factoryReference.isFinalizeChecks()) { + ActiveMQJMSClientLogger.LOGGER.connectionLeftOpen(creationStack); + } close(); } diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java index 4f6528b496..91dee3cc9b 100644 --- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java +++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java @@ -83,6 +83,8 @@ public class ActiveMQConnectionFactory implements ConnectionFactoryOptions, Exte private String deserializationWhiteList; + private boolean finalizeChecks; + @Override public void writeExternal(ObjectOutput out) throws IOException { URI uri = toURI(); @@ -148,6 +150,16 @@ public class ActiveMQConnectionFactory implements ConnectionFactoryOptions, Exte } } + public ActiveMQConnectionFactory disableFinalizeChecks() { + this.finalizeChecks = false; + return this; + } + + public boolean isFinalizeChecks() { + return finalizeChecks; + } + + @Override public String getDeserializationBlackList() { return deserializationBlackList; diff --git a/integration/artemis-cdi-integration/src/main/java/org/apache/artemis/client/cdi/factory/ConnectionFactoryProvider.java b/integration/artemis-cdi-integration/src/main/java/org/apache/artemis/client/cdi/factory/ConnectionFactoryProvider.java index b57b771339..b249474246 100644 --- a/integration/artemis-cdi-integration/src/main/java/org/apache/artemis/client/cdi/factory/ConnectionFactoryProvider.java +++ b/integration/artemis-cdi-integration/src/main/java/org/apache/artemis/client/cdi/factory/ConnectionFactoryProvider.java @@ -97,6 +97,7 @@ public class ConnectionFactoryProvider { activeMQConnectionFactory.setUser(configuration.getUsername()); activeMQConnectionFactory.setPassword(configuration.getPassword()); } - return activeMQConnectionFactory; + // The CF will probably be GCed since it was injected, so we disable the finalize check + return activeMQConnectionFactory.disableFinalizeChecks(); } }