[jboss-cvs] JBossAS SVN: r111184 - in projects/jboss-jca/trunk: common/src/main/java/org/jboss/jca/common/metadata and 18 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Apr 15 10:56:49 EDT 2011
Author: jesper.pedersen
Date: 2011-04-15 10:56:48 -0400 (Fri, 15 Apr 2011)
New Revision: 111184
Added:
projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/FlushStrategy.java
Modified:
projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonPool.java
projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonXaPool.java
projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/AbstractParser.java
projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonPoolImpl.java
projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonXaPoolImpl.java
projects/jboss-jca/trunk/common/src/main/resources/schema/datasources_1_0.xsd
projects/jboss-jca/trunk/common/src/main/resources/schema/ironjacamar_1_0.xsd
projects/jboss-jca/trunk/common/src/main/resources/schema/resource-adapters_1_0.xsd
projects/jboss-jca/trunk/common/src/test/resources/ds/unit/reauth-plugin-xa-ds.xml
projects/jboss-jca/trunk/common/src/test/resources/ironjacamar/xa-pool-recovery-ironjacamar.xml
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManagerImpl.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ManagedConnectionPool.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerImpl.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListenerTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListenerTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManagerTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/notx/SerializableTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/pool/PrefillTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/SerializableTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/XATxConnectionManagerTestCase.java
projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/ConnectionRecordTestCase.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java
projects/jboss-jca/trunk/doc/userguide/en-US/modules/deployment.xml
Log:
[JBJCA-30] Pool flushing strategy
Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonPool.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonPool.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonPool.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -66,6 +66,13 @@
public Boolean isUseStrictMin();
/**
+ * Get the useStrictMin.
+ *
+ * @return the useStrictMin.
+ */
+ public FlushStrategy getFlushStrategy();
+
+ /**
*
* A Tag.
*
@@ -88,6 +95,7 @@
* maxPoolSize tag
*/
MAXPOOLSIZE("max-pool-size"),
+
/**
* prefill tag
*/
@@ -96,12 +104,16 @@
/**
* use-strict-min tag
*/
- USE_STRICT_MIN("use-strict-min");
+ USE_STRICT_MIN("use-strict-min"),
+ /**
+ * flush-strategy tag
+ */
+ FLUSH_STRATEGY("flush-strategy");
+
private final String name;
/**
- *
* Create a new Tag.
*
* @param name a name
@@ -147,7 +159,5 @@
final Tag element = MAP.get(localName);
return element == null ? UNKNOWN : element;
}
-
}
-
}
Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonXaPool.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonXaPool.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/CommonXaPool.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -104,7 +104,13 @@
* use-strict-min tag
*/
USE_STRICT_MIN("use-strict-min"),
+
/**
+ * flush-strategy tag
+ */
+ FLUSH_STRATEGY("flush-strategy"),
+
+ /**
* isSameRmOverrideValue tag
*/
ISSAMERMOVERRIDEVALUE("is-same-rm-override"),
Added: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/FlushStrategy.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/FlushStrategy.java (rev 0)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/api/metadata/common/FlushStrategy.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -0,0 +1,97 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.jca.common.api.metadata.common;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Flush strategy for the pools
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public enum FlushStrategy
+{
+ /**
+ * Unknown
+ */
+ UNKNOWN(null),
+
+ /**
+ * Failing connection only (default)
+ */
+ FAILING_CONNECTION_ONLY("FailingConnectionOnly"),
+
+ /**
+ * Idle connections
+ */
+ IDLE_CONNECTIONS("IdleConnections"),
+
+ /**
+ * Entire pool
+ */
+ ENTIRE_POOL("EntirePool");
+
+ private final String name;
+
+ /**
+ * Create a new FlushStrategy.
+ * @param name The value
+ */
+ FlushStrategy(final String name)
+ {
+ this.name = name;
+ }
+
+ /**
+ * Get the name of this element.
+ * @return The value
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ private static final Map<String, FlushStrategy> MAP;
+
+ static
+ {
+ final Map<String, FlushStrategy> map = new HashMap<String, FlushStrategy>();
+ for (FlushStrategy element : values())
+ {
+ final String name = element.getName();
+ if (name != null)
+ map.put(name, element);
+ }
+ MAP = map;
+ }
+
+ /**
+ * Static method to get enum instance given localName XsdString
+ * @param name The strategy name
+ * @return The enum instance
+ */
+ public static FlushStrategy forName(String name)
+ {
+ final FlushStrategy element = MAP.get(name);
+ return element == null ? UNKNOWN : element;
+ }
+}
Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/AbstractParser.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/AbstractParser.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/AbstractParser.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -26,6 +26,7 @@
import org.jboss.jca.common.api.metadata.common.CommonXaPool;
import org.jboss.jca.common.api.metadata.common.Credential;
import org.jboss.jca.common.api.metadata.common.Extension;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.common.api.metadata.common.Recovery;
import org.jboss.jca.common.api.metadata.ds.DataSource;
import org.jboss.jca.common.api.metadata.ds.XaDataSource;
@@ -226,7 +227,26 @@
}
/**
+ * convert an xml element in FlushStrategy value
*
+ * @param reader the StAX reader
+ * @return the flush strategy represention
+ * @throws XMLStreamException StAX exception
+ * @throws ParserException in case it isn't a number
+ */
+ protected FlushStrategy elementAsFlushStrategy(XMLStreamReader reader) throws XMLStreamException, ParserException
+ {
+ String elementtext = rawElementText(reader);
+ FlushStrategy result = FlushStrategy.forName(getSubstitutionValue(elementtext));
+
+ if (result != FlushStrategy.UNKNOWN)
+ return result;
+
+ throw new ParserException(elementtext + " isn't a valid flush strategy");
+ }
+
+ /**
+ *
* parse a {@link CommonPool} object
*
* @param reader reader
@@ -242,6 +262,7 @@
Integer maxPoolSize = null;
boolean prefill = false;
boolean useStrictMin = false;
+ FlushStrategy flushStrategy = FlushStrategy.FAILING_CONNECTION_ONLY;
while (reader.hasNext())
{
@@ -251,7 +272,7 @@
if (DataSource.Tag.forName(reader.getLocalName()) == DataSource.Tag.POOL)
{
- return new CommonPoolImpl(minPoolSize, maxPoolSize, prefill, useStrictMin);
+ return new CommonPoolImpl(minPoolSize, maxPoolSize, prefill, useStrictMin, flushStrategy);
}
else
@@ -283,6 +304,10 @@
useStrictMin = elementAsBoolean(reader);
break;
}
+ case FLUSH_STRATEGY : {
+ flushStrategy = elementAsFlushStrategy(reader);
+ break;
+ }
default :
throw new ParserException("Unexpected element:" + reader.getLocalName());
}
@@ -373,6 +398,7 @@
Integer minPoolSize = null;
Integer maxPoolSize = null;
boolean prefill = false;
+ FlushStrategy flushStrategy = FlushStrategy.FAILING_CONNECTION_ONLY;
boolean interleaving = false;
boolean isSameRmOverrideValue = false;
boolean padXid = false;
@@ -388,8 +414,9 @@
if (XaDataSource.Tag.forName(reader.getLocalName()) == XaDataSource.Tag.XA_POOL)
{
- return new CommonXaPoolImpl(minPoolSize, maxPoolSize, prefill, useStrictMin, isSameRmOverrideValue,
- interleaving, padXid, wrapXaDataSource, noTxSeparatePool);
+ return new CommonXaPoolImpl(minPoolSize, maxPoolSize, prefill, useStrictMin, flushStrategy,
+ isSameRmOverrideValue, interleaving, padXid,
+ wrapXaDataSource, noTxSeparatePool);
}
else
@@ -440,6 +467,10 @@
useStrictMin = elementAsBoolean(reader);
break;
}
+ case FLUSH_STRATEGY : {
+ flushStrategy = elementAsFlushStrategy(reader);
+ break;
+ }
default :
throw new ParserException("Unexpected element:" + reader.getLocalName());
}
Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonPoolImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonPoolImpl.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonPoolImpl.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -22,6 +22,7 @@
package org.jboss.jca.common.metadata.common;
import org.jboss.jca.common.api.metadata.common.CommonPool;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.common.api.validator.ValidateException;
/**
@@ -58,15 +59,23 @@
protected final Boolean useStrictMin;
/**
+ * flush-strategy
+ */
+ protected final FlushStrategy flushStrategy;
+
+ /**
* Create a new PoolImpl.
*
* @param minPoolSize minPoolSize
* @param maxPoolSize maxPoolSize
* @param prefill prefill
* @param useStrictMin useStrictMin
+ * @param flushStrategy flushStrategy
* @throws ValidateException ValidateException
*/
- public CommonPoolImpl(Integer minPoolSize, Integer maxPoolSize, Boolean prefill, Boolean useStrictMin)
+ public CommonPoolImpl(Integer minPoolSize, Integer maxPoolSize,
+ Boolean prefill, Boolean useStrictMin,
+ FlushStrategy flushStrategy)
throws ValidateException
{
super();
@@ -74,6 +83,7 @@
this.maxPoolSize = maxPoolSize;
this.prefill = prefill;
this.useStrictMin = useStrictMin;
+ this.flushStrategy = flushStrategy;
this.validate();
}
@@ -121,14 +131,24 @@
return useStrictMin;
}
+ /**
+ * Get the flush strategy.
+ * @return The value
+ */
@Override
+ public final FlushStrategy getFlushStrategy()
+ {
+ return flushStrategy;
+ }
+
+ @Override
public void validate() throws ValidateException
{
if (this.maxPoolSize != null && this.maxPoolSize < 0)
throw new ValidateException("maxPoolSize (xml tag " + Tag.MAXPOOLSIZE + ") cannot be < 0");
if (this.minPoolSize != null && this.minPoolSize < 0)
throw new ValidateException("minPoolSize (xml tag " + Tag.MIN_POOL_SIZE + ") cannot be < 0");
-
+ if (this.flushStrategy == null)
+ throw new ValidateException("flushStrategy (xml tag " + Tag.FLUSH_STRATEGY + ") cannot be null");
}
-
}
Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonXaPoolImpl.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonXaPoolImpl.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/metadata/common/CommonXaPoolImpl.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -22,6 +22,7 @@
package org.jboss.jca.common.metadata.common;
import org.jboss.jca.common.api.metadata.common.CommonXaPool;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.common.api.validator.ValidateException;
/**
@@ -54,6 +55,7 @@
* @param maxPoolSize maxPoolSize
* @param prefill prefill
* @param useStrictMin useStrictMin
+ * @param flushStrategy flushStrategy
* @param isSameRmOverride isSameRmOverride
* @param interleaving interleaving
* @param padXid padXid
@@ -61,17 +63,19 @@
* @param noTxSeparatePool noTxSeparatePool
* @throws ValidateException ValidateException
*/
- public CommonXaPoolImpl(Integer minPoolSize, Integer maxPoolSize, Boolean prefill, Boolean useStrictMin,
- Boolean isSameRmOverride, Boolean interleaving, Boolean padXid, Boolean wrapXaDataSource,
- Boolean noTxSeparatePool) throws ValidateException
+ public CommonXaPoolImpl(Integer minPoolSize, Integer maxPoolSize,
+ Boolean prefill, Boolean useStrictMin,
+ FlushStrategy flushStrategy,
+ Boolean isSameRmOverride, Boolean interleaving,
+ Boolean padXid, Boolean wrapXaDataSource,
+ Boolean noTxSeparatePool) throws ValidateException
{
- super(minPoolSize, maxPoolSize, prefill, useStrictMin);
+ super(minPoolSize, maxPoolSize, prefill, useStrictMin, flushStrategy);
this.isSameRmOverride = isSameRmOverride;
this.interleaving = interleaving;
this.padXid = padXid;
this.wrapXaDataSource = wrapXaDataSource;
this.noTxSeparatePool = noTxSeparatePool;
-
}
/**
@@ -197,8 +201,5 @@
", padXid=" + padXid + ", wrapXaDataSource=" + wrapXaDataSource + ", noTxSeparatePool=" +
noTxSeparatePool + "]";
}
-
-
-
}
Modified: projects/jboss-jca/trunk/common/src/main/resources/schema/datasources_1_0.xsd
===================================================================
--- projects/jboss-jca/trunk/common/src/main/resources/schema/datasources_1_0.xsd 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/common/src/main/resources/schema/datasources_1_0.xsd 2011-04-15 14:56:48 UTC (rev 111184)
@@ -657,7 +657,18 @@
Default false
]]>
</xs:documentation>
- </xs:annotation></xs:element>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ <![CDATA[[
+ Specifies how the pool should be flush in case of an error.
+ Valid values are: FailingConnectionOnly (default), IdleConnections, EntirePool
+ ]]>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="xa-poolType">
Modified: projects/jboss-jca/trunk/common/src/main/resources/schema/ironjacamar_1_0.xsd
===================================================================
--- projects/jboss-jca/trunk/common/src/main/resources/schema/ironjacamar_1_0.xsd 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/common/src/main/resources/schema/ironjacamar_1_0.xsd 2011-04-15 14:56:48 UTC (rev 111184)
@@ -397,6 +397,16 @@
</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ <![CDATA[[
+ Specifies how the pool should be flush in case of an error.
+ Valid values are: FailingConnectionOnly (default), IdleConnections, EntirePool
+ ]]>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
</xs:sequence>
</xs:complexType>
Modified: projects/jboss-jca/trunk/common/src/main/resources/schema/resource-adapters_1_0.xsd
===================================================================
--- projects/jboss-jca/trunk/common/src/main/resources/schema/resource-adapters_1_0.xsd 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/common/src/main/resources/schema/resource-adapters_1_0.xsd 2011-04-15 14:56:48 UTC (rev 111184)
@@ -429,6 +429,16 @@
</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ <![CDATA[[
+ Specifies how the pool should be flush in case of an error.
+ Valid values are: FailingConnectionOnly (default), IdleConnections, EntirePool
+ ]]>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
</xs:sequence>
</xs:complexType>
Modified: projects/jboss-jca/trunk/common/src/test/resources/ds/unit/reauth-plugin-xa-ds.xml
===================================================================
--- projects/jboss-jca/trunk/common/src/test/resources/ds/unit/reauth-plugin-xa-ds.xml 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/common/src/test/resources/ds/unit/reauth-plugin-xa-ds.xml 2011-04-15 14:56:48 UTC (rev 111184)
@@ -6,6 +6,9 @@
<xa-datasource jndi-name="java:/H2XADS" pool-name="H2XADS">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
<xa-datasource-property name="URL">jdbc:h2:mem:test</xa-datasource-property>
+ <xa-pool>
+ <flush-strategy>EntirePool</flush-strategy>
+ </xa-pool>
<security>
<!-- Have to defined as a primary property - otherwise it won't work -->
<user-name>sa</user-name>
Modified: projects/jboss-jca/trunk/common/src/test/resources/ironjacamar/xa-pool-recovery-ironjacamar.xml
===================================================================
--- projects/jboss-jca/trunk/common/src/test/resources/ironjacamar/xa-pool-recovery-ironjacamar.xml 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/common/src/test/resources/ironjacamar/xa-pool-recovery-ironjacamar.xml 2011-04-15 14:56:48 UTC (rev 111184)
@@ -9,6 +9,7 @@
<xa-pool>
<min-pool-size>0</min-pool-size>
<max-pool-size>64</max-pool-size>
+ <flush-strategy>IdleConnections</flush-strategy>
</xa-pool>
<recovery>
<recover-credential>
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -23,6 +23,7 @@
package org.jboss.jca.core.connectionmanager;
import org.jboss.jca.common.JBossResourceException;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.api.connectionmanager.ccm.CachedConnectionManager;
import org.jboss.jca.core.connectionmanager.listener.ConnectionListener;
import org.jboss.jca.core.connectionmanager.listener.ConnectionState;
@@ -83,6 +84,9 @@
/** SubjectFactory */
private SubjectFactory subjectFactory;
+ /** The flush strategy */
+ private FlushStrategy flushStrategy;
+
/** Number of retry to allocate connection */
private int allocationRetry;
@@ -241,8 +245,25 @@
this.subjectFactory = subjectFactory;
}
+ /**
+ * Get the flush strategy
+ * @return The value
+ */
+ public FlushStrategy getFlushStrategy()
+ {
+ return flushStrategy;
+ }
/**
+ * Set the flush strategy
+ * @param v The value
+ */
+ public void setFlushStrategy(FlushStrategy v)
+ {
+ this.flushStrategy = v;
+ }
+
+ /**
* Gets managed connection factory.
* @return managed connection factory
*/
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -22,6 +22,7 @@
package org.jboss.jca.core.connectionmanager;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.api.connectionmanager.ccm.CachedConnectionManager;
import org.jboss.jca.core.connectionmanager.notx.NoTxConnectionManagerImpl;
import org.jboss.jca.core.connectionmanager.pool.api.Pool;
@@ -56,6 +57,7 @@
* @param securityDomain The security domain
* @param useCcm Should the CCM be used
* @param ccm The cached connection manager
+ * @param flushStrategy The flush strategy
* @param allocationRetry The allocation retry value
* @param allocationRetryWaitMillis The allocation retry millis value
* @return The connection manager instance
@@ -66,6 +68,7 @@
final String securityDomain,
final boolean useCcm,
final CachedConnectionManager ccm,
+ final FlushStrategy flushStrategy,
final Integer allocationRetry,
final Long allocationRetryWaitMillis)
{
@@ -75,6 +78,9 @@
if (pool == null)
throw new IllegalArgumentException("Pool is null");
+ if (flushStrategy == null)
+ throw new IllegalArgumentException("FlushStrategy is null");
+
NoTxConnectionManagerImpl cm = null;
switch (tsl)
@@ -96,6 +102,7 @@
setProperties(cm, pool,
subjectFactory, securityDomain,
useCcm, ccm,
+ flushStrategy,
allocationRetry, allocationRetryWaitMillis,
null, null);
setNoTxProperties(cm);
@@ -111,6 +118,7 @@
* @param securityDomain The security domain
* @param useCcm Should the CCM be used
* @param ccm The cached connection manager
+ * @param flushStrategy The flush strategy
* @param allocationRetry The allocation retry value
* @param allocationRetryWaitMillis The allocation retry millis value
* @param txIntegration The transaction manager integration
@@ -127,6 +135,7 @@
final String securityDomain,
final boolean useCcm,
final CachedConnectionManager ccm,
+ final FlushStrategy flushStrategy,
final Integer allocationRetry,
final Long allocationRetryWaitMillis,
final TransactionIntegration txIntegration,
@@ -145,6 +154,9 @@
if (txIntegration == null)
throw new IllegalArgumentException("TransactionIntegration is null");
+ if (flushStrategy == null)
+ throw new IllegalArgumentException("FlushStrategy is null");
+
TxConnectionManagerImpl cm = null;
switch (tsl)
@@ -167,6 +179,7 @@
setProperties(cm, pool,
subjectFactory, securityDomain,
useCcm, ccm,
+ flushStrategy,
allocationRetry, allocationRetryWaitMillis,
txIntegration.getTransactionManager(), txIntegration.getUserTransactionRegistry());
setTxProperties(cm, interleaving, xaResourceTimeout, isSameRMOverride, wrapXAResource, padXid);
@@ -183,6 +196,7 @@
* @param securityDomain The security domain
* @param useCcm Should the CCM be used
* @param ccm The cached connection manager
+ * @param flushStrategy The flush strategy
* @param allocationRetry The allocation retry value
* @param allocationRetryWaitMillis The allocation retry millis value
* @param tm The transaction manager
@@ -194,6 +208,7 @@
String securityDomain,
boolean useCcm,
CachedConnectionManager ccm,
+ FlushStrategy flushStrategy,
Integer allocationRetry,
Long allocationRetryWaitMillis,
TransactionManager tm,
@@ -205,6 +220,8 @@
cm.setSubjectFactory(subjectFactory);
cm.setSecurityDomain(securityDomain);
+ cm.setFlushStrategy(flushStrategy);
+
if (allocationRetry != null)
cm.setAllocationRetry(allocationRetry.intValue());
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/AbstractConnectionListener.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -21,6 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.listener;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.api.connectionmanager.ccm.CachedConnectionManager;
import org.jboss.jca.core.connectionmanager.ConnectionManager;
import org.jboss.jca.core.connectionmanager.pool.api.Pool;
@@ -62,6 +63,9 @@
/** Pool internal context */
private final Object internalManagedPoolContext;
+
+ /** Flush strategy */
+ private FlushStrategy flushStrategy;
/** Connection State */
private ConnectionState state = ConnectionState.NORMAL;
@@ -81,18 +85,20 @@
/**
* Creates a new instance of the listener that is responsible for
* tracking the owned connection instance.
+ * @param cm connection manager
* @param managedConnection managed connection
* @param pool pool
* @param context pool internal context
- * @param cm connection manager
+ * @param flushStrategy flushStrategy
*/
protected AbstractConnectionListener(ConnectionManager cm, ManagedConnection managedConnection,
- Pool pool, Object context)
+ Pool pool, Object context, FlushStrategy flushStrategy)
{
this.cm = cm;
this.managedConnection = managedConnection;
this.pool = pool;
this.internalManagedPoolContext = context;
+ this.flushStrategy = flushStrategy;
this.trace = log.isTraceEnabled();
this.lastUse = System.currentTimeMillis();
}
@@ -349,7 +355,15 @@
}
getConnectionManager().returnManagedConnection(this, true);
-
+
+ if (flushStrategy == FlushStrategy.IDLE_CONNECTIONS)
+ {
+ pool.flush();
+ }
+ else if (flushStrategy == FlushStrategy.ENTIRE_POOL)
+ {
+ pool.flush(true);
+ }
}
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListener.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -21,6 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.listener;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.connectionmanager.ConnectionManager;
import org.jboss.jca.core.connectionmanager.pool.api.Pool;
@@ -43,11 +44,12 @@
* @param mc managed connection
* @param pool pool
* @param context context
+ * @param flushStrategy flushStrategy
*/
public NoTxConnectionListener(final ConnectionManager cm, final ManagedConnection mc,
- final Pool pool, final Object context)
+ final Pool pool, final Object context, final FlushStrategy flushStrategy)
{
- super(cm, mc, pool, context);
+ super(cm, mc, pool, context, flushStrategy);
}
/**
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListener.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -22,6 +22,7 @@
package org.jboss.jca.core.connectionmanager.listener;
import org.jboss.jca.common.JBossResourceException;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.connectionmanager.ConnectionManager;
import org.jboss.jca.core.connectionmanager.pool.api.Pool;
import org.jboss.jca.core.connectionmanager.transaction.TransactionSynchronizer;
@@ -65,14 +66,16 @@
* @param mc managed connection
* @param pool pool
* @param context context
+ * @param flushStrategy flushStrategy
* @param xaResource xaresource instance
* @throws ResourceException if aexception while creating
*/
public TxConnectionListener(final ConnectionManager cm, final ManagedConnection mc,
- final Pool pool, final Object context, final XAResource xaResource)
+ final Pool pool, final Object context, final FlushStrategy flushStrategy,
+ final XAResource xaResource)
throws ResourceException
{
- super(cm, mc, pool, context);
+ super(cm, mc, pool, context, flushStrategy);
this.xaResource = xaResource;
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManagerImpl.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManagerImpl.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManagerImpl.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -60,7 +60,8 @@
public ConnectionListener createConnectionListener(ManagedConnection managedConnection, Object context)
throws ResourceException
{
- ConnectionListener cli = new NoTxConnectionListener(this, managedConnection, getPool(), context);
+ ConnectionListener cli = new NoTxConnectionListener(this, managedConnection, getPool(),
+ context, getFlushStrategy());
managedConnection.addConnectionEventListener(cli);
return cli;
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -32,7 +32,9 @@
import org.jboss.jca.core.spi.transaction.TransactionIntegration;
import org.jboss.jca.core.spi.transaction.local.TransactionLocal;
+import java.util.HashSet;
import java.util.Iterator;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -227,15 +229,37 @@
*/
public void flush()
{
+ flush(false);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void flush(boolean kill)
+ {
+ Set<ManagedConnectionPool> clearMcps = new HashSet<ManagedConnectionPool>();
+
Iterator<SubPoolContext> itSubPoolContexts = subPools.values().iterator();
SubPoolContext subPoolContext = null;
while (itSubPoolContexts.hasNext())
{
subPoolContext = itSubPoolContexts.next();
- subPoolContext.getSubPool().flush();
+ ManagedConnectionPool mcp = subPoolContext.getSubPool();
+
+ mcp.flush(kill);
+
+ if (mcp.isEmpty())
+ clearMcps.add(mcp);
}
- subPools.clear();
+ if (clearMcps.size() > 0)
+ {
+ for (ManagedConnectionPool mcp : clearMcps)
+ {
+ mcp.shutdown();
+ subPools.values().remove(mcp);
+ }
+ }
}
/**
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/api/Pool.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -88,11 +88,17 @@
public void shutdown();
/**
- * Flush the pool
+ * Flush idle connections from the pool
*/
public void flush();
/**
+ * Flush the pool
+ * @param kill Kill all connections
+ */
+ public void flush(boolean kill);
+
+ /**
* Remove the matching SubPoolContext if the pool is empty
* @param pool the internal managed connection pool
*/
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -495,6 +495,14 @@
*/
public void flush()
{
+ flush(false);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void flush(boolean kill)
+ {
ArrayList<ConnectionListener> destroy = null;
if (trace)
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ManagedConnectionPool.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ManagedConnectionPool.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -99,11 +99,17 @@
public void reenable();
/**
- * Flush
+ * Flush idle connections
*/
public void flush();
/**
+ * Flush
+ * @param kill Kill all connections
+ */
+ public void flush(boolean kill);
+
+ /**
* Shutdown
*/
public void shutdown();
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -477,22 +477,35 @@
*/
public void flush()
{
+ flush(false);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void flush(boolean kill)
+ {
ArrayList<ConnectionListener> destroy = null;
synchronized (cls)
{
- if (trace)
- log.trace("Flushing pool checkedOut=" + checkedOut + " inPool=" + cls);
-
- // Mark checked out connections as requiring destruction
- for (Iterator<ConnectionListener> i = checkedOut.iterator(); i.hasNext();)
+ if (kill)
{
- ConnectionListener cl = i.next();
-
if (trace)
- log.trace("Flush marking checked out connection for destruction " + cl);
+ log.trace("Flushing pool checkedOut=" + checkedOut + " inPool=" + cls);
- cl.setState(ConnectionState.DESTROY);
+ // Mark checked out connections as requiring destruction
+ for (Iterator<ConnectionListener> i = checkedOut.iterator(); i.hasNext();)
+ {
+ ConnectionListener cl = i.next();
+
+ if (trace)
+ log.trace("Flush marking checked out connection for destruction " + cl);
+
+ cl.setState(ConnectionState.DESTROY);
+
+ // We could mark them for eager kill too...
+ }
}
// Destroy connections in the pool
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerImpl.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerImpl.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerImpl.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -521,7 +521,7 @@
}
}
- ConnectionListener cli = new TxConnectionListener(this, mc, getPool(), context, xaResource);
+ ConnectionListener cli = new TxConnectionListener(this, mc, getPool(), context, getFlushStrategy(), xaResource);
mc.addConnectionEventListener(cli);
return cli;
}
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListenerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListenerTestCase.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/listener/NoTxConnectionListenerTestCase.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -21,6 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.listener;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.api.connectionmanager.pool.PoolConfiguration;
import org.jboss.jca.core.connectionmanager.ConnectionManager;
import org.jboss.jca.core.connectionmanager.ConnectionManagerFactory;
@@ -226,7 +227,9 @@
ConnectionManagerFactory cmf = new ConnectionManagerFactory();
ConnectionManager connectionManager =
cmf.createNonTransactional(TransactionSupportLevel.NoTransaction, pool,
- null, null, false, null, null, null);
+ null, null, false, null,
+ FlushStrategy.FAILING_CONNECTION_ONLY,
+ null, null);
noTxCm = ((NoTxConnectionManagerImpl) connectionManager);
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListenerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListenerTestCase.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/listener/TxConnectionListenerTestCase.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -21,6 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.listener;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.api.connectionmanager.pool.PoolConfiguration;
import org.jboss.jca.core.connectionmanager.ConnectionManagerFactory;
import org.jboss.jca.core.connectionmanager.TxConnectionManager;
@@ -96,7 +97,8 @@
public void delistShouldSetTransactionSynchronizationToNullIfEverythingCommitted() throws Exception
{
//given
- TxConnectionListener listener = new TxConnectionListener(txConnectionManager, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(txConnectionManager, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(false);
Transaction tx = mock(Transaction.class);
when(tx.getStatus()).thenReturn(Status.STATUS_COMMITTED);
@@ -118,7 +120,8 @@
public void delistShouldNotSetTransactionSynchronizationToNullIfTrackByTx() throws Exception
{
//given
- TxConnectionListener listener = new TxConnectionListener(txConnectionManager, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(txConnectionManager, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(true);
Transaction tx = mock(Transaction.class);
when(tx.getStatus()).thenReturn(Status.STATUS_COMMITTED);
@@ -152,7 +155,8 @@
when(tm.getTransaction()).thenReturn(threadTx);
when(cm.getTransactionManager()).thenReturn(tm);
- TxConnectionListener listener = new TxConnectionListener(cm, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(false);
TransactionSynchronization transactionSynchronization = null;
listener.setTransactionSynchronization(transactionSynchronization);
@@ -187,7 +191,8 @@
when(tm.getTransaction()).thenReturn(threadTx);
when(cm.getTransactionManager()).thenReturn(tm);
- TxConnectionListener listener = new TxConnectionListener(cm, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(false);
TransactionSynchronization transactionSynchronization = null;
listener.setTransactionSynchronization(transactionSynchronization);
@@ -214,7 +219,8 @@
TransactionManager tm = mock(TransactionManager.class);
when(tm.getStatus()).thenReturn(Status.STATUS_NO_TRANSACTION);
when(cm.getTransactionManager()).thenReturn(tm);
- TxConnectionListener listener = new TxConnectionListener(cm, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(true);
Transaction tx = mock(Transaction.class);
TransactionSynchronization transactionSynchronization = listener.new TransactionSynchronization(tx, false);
@@ -239,7 +245,8 @@
TransactionManager tm = mock(TransactionManager.class);
when(tm.getStatus()).thenReturn(Status.STATUS_NO_TRANSACTION);
when(cm.getTransactionManager()).thenReturn(tm);
- TxConnectionListener listener = new TxConnectionListener(cm, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(true);
Transaction tx = mock(Transaction.class);
TransactionSynchronization transactionSynch = mock(TxConnectionListener.TransactionSynchronization.class);
@@ -265,7 +272,8 @@
when(tm.getStatus()).thenReturn(Status.STATUS_COMMITTING);
when(cm.getTransactionManager()).thenReturn(tm);
- TxConnectionListener listener = new TxConnectionListener(cm, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(true);
Transaction tx = mock(Transaction.class);
TransactionSynchronization transactionSynchronization = listener.new TransactionSynchronization(tx, false);
@@ -295,7 +303,8 @@
when(tm.getTransaction()).thenReturn(threadTx);
when(cm.getTransactionManager()).thenReturn(tm);
- TxConnectionListener listener = new TxConnectionListener(cm, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(true);
Transaction tx = mock(Transaction.class);
TransactionSynchronization transactionSynchronization = listener.new TransactionSynchronization(tx, false);
@@ -325,7 +334,8 @@
when(tm.getTransaction()).thenReturn(threadTx);
when(cm.getTransactionManager()).thenReturn(tm);
- TxConnectionListener listener = new TxConnectionListener(cm, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(false);
TransactionSynchronization transactionSynchronization = listener.new TransactionSynchronization(threadTx, false);
listener.setTransactionSynchronization(transactionSynchronization);
@@ -356,7 +366,8 @@
when(tm.getTransaction()).thenReturn(threadTx);
when(cm.getTransactionManager()).thenReturn(tm);
- TxConnectionListener listener = new TxConnectionListener(cm, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(true);
TransactionSynchronization transactionSynchronization = listener.new TransactionSynchronization(threadTx, false);
listener.setTransactionSynchronization(transactionSynchronization);
@@ -385,7 +396,8 @@
when(tm.getTransaction()).thenReturn(threadTx);
when(cm.getTransactionManager()).thenReturn(tm);
- TxConnectionListener listener = new TxConnectionListener(cm, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(true);
TransactionSynchronization transactionSynchronization = listener.new TransactionSynchronization(threadTx, false);
listener.setTransactionSynchronization(transactionSynchronization);
@@ -417,7 +429,8 @@
when(tm.getTransaction()).thenReturn(threadTx);
when(cm.getTransactionManager()).thenReturn(tm);
- TxConnectionListener listener = new TxConnectionListener(cm, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(true);
TransactionSynchronization transactionSynchronization = null;
listener.setTransactionSynchronization(transactionSynchronization);
@@ -448,7 +461,8 @@
when(tm.getTransaction()).thenReturn(threadTx);
when(cm.getTransactionManager()).thenReturn(tm);
- TxConnectionListener listener = new TxConnectionListener(cm, null, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, null, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(true);
TransactionSynchronization transactionSynchronization = null;
listener.setTransactionSynchronization(transactionSynchronization);
@@ -472,7 +486,8 @@
ManagedConnection mc = mock(ManagedConnection.class);
ManagedConnection mc2 = mock(ManagedConnection.class);
- TxConnectionListener listener = new TxConnectionListener(cm, mc, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, mc, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
ConnectionEvent ce = new ConnectionEvent(mc2, ConnectionEvent.CONNECTION_CLOSED);
//when
listener.connectionClosed(ce);
@@ -494,7 +509,8 @@
ManagedConnection mc = mock(ManagedConnection.class);
CachedConnectionManagerImpl ccm = mock(CachedConnectionManagerImpl.class);
when(cm.getCachedConnectionManager()).thenReturn(ccm);
- TxConnectionListener listener = new TxConnectionListener(cm, mc, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, mc, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(false);
ConnectionEvent ce = new ConnectionEvent(mc, ConnectionEvent.CONNECTION_CLOSED);
//when
@@ -518,7 +534,8 @@
ManagedConnection mc = mock(ManagedConnection.class);
CachedConnectionManagerImpl ccm = mock(CachedConnectionManagerImpl.class);
when(cm.getCachedConnectionManager()).thenReturn(ccm);
- TxConnectionListener listener = new TxConnectionListener(cm, mc, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, mc, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(true);
ConnectionEvent ce = new ConnectionEvent(mc, ConnectionEvent.CONNECTION_CLOSED);
//when
@@ -542,7 +559,8 @@
ManagedConnection mc = mock(ManagedConnection.class);
CachedConnectionManagerImpl ccm = mock(CachedConnectionManagerImpl.class);
when(cm.getCachedConnectionManager()).thenReturn(ccm);
- TxConnectionListener listener = new TxConnectionListener(cm, mc, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, mc, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
listener.setTrackByTx(true);
ConnectionEvent ce = mock(ConnectionEvent.class);
when(ce.getSource()).thenReturn(mc);
@@ -567,7 +585,8 @@
//given
TxConnectionManager cm = mock(TxConnectionManager.class);
ManagedConnection mc = mock(ManagedConnection.class);
- TxConnectionListener listener = new TxConnectionListener(cm, mc, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, mc, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
ConnectionEvent ce = mock(ConnectionEvent.class);
/****** this is the important given *****/
listener.localTransactionCommitted(ce);
@@ -589,7 +608,8 @@
//given
TxConnectionManager cm = mock(TxConnectionManager.class);
ManagedConnection mc = mock(ManagedConnection.class);
- TxConnectionListener listener = new TxConnectionListener(cm, mc, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, mc, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
ConnectionEvent ce = mock(ConnectionEvent.class);
/****** this is the important given *****/
listener.localTransactionStarted(ce);
@@ -612,7 +632,8 @@
//given
TxConnectionManager cm = mock(TxConnectionManager.class);
ManagedConnection mc = mock(ManagedConnection.class);
- TxConnectionListener listener = new TxConnectionListener(cm, mc, null, null, null);
+ TxConnectionListener listener =
+ new TxConnectionListener(cm, mc, null, null, FlushStrategy.FAILING_CONNECTION_ONLY, null);
ConnectionEvent ce = mock(ConnectionEvent.class);
/****** this is the important given *****/
listener.localTransactionStarted(ce);
@@ -635,7 +656,8 @@
//given
TxConnectionManager cm = mock(TxConnectionManager.class);
ManagedConnection mc = mock(ManagedConnection.class);
- TxConnectionListener listener = new TxConnectionListener(cm, mc, null, null, null);
+ TxConnectionListener listener = new TxConnectionListener(cm, mc, null, null,
+ FlushStrategy.FAILING_CONNECTION_ONLY, null);
ConnectionEvent ce = mock(ConnectionEvent.class);
/****** this is the important given *****/
listener.localTransactionStarted(ce);
@@ -678,7 +700,8 @@
ConnectionManagerFactory cmf = new ConnectionManagerFactory();
ConnectionManager connectionManager =
cmf.createTransactional(TransactionSupportLevel.LocalTransaction, pool,
- null, null, false, null, null, null, ti, null, null, null, null, null);
+ null, null, false, null, FlushStrategy.FAILING_CONNECTION_ONLY,
+ null, null, ti, null, null, null, null, null);
txConnectionManager = (TxConnectionManager) connectionManager;
}
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManagerTestCase.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/notx/NoTxConnectionManagerTestCase.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -21,6 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.notx;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.api.connectionmanager.ConnectionManager;
import org.jboss.jca.core.api.connectionmanager.pool.PoolConfiguration;
import org.jboss.jca.core.connectionmanager.ConnectionManagerFactory;
@@ -78,7 +79,9 @@
ConnectionManagerFactory cmf = new ConnectionManagerFactory();
connectionManager =
- cmf.createNonTransactional(TransactionSupportLevel.NoTransaction, pool, null, null, false, null, null, null);
+ cmf.createNonTransactional(TransactionSupportLevel.NoTransaction, pool, null, null, false, null,
+ FlushStrategy.FAILING_CONNECTION_ONLY,
+ null, null);
assertNotNull(connectionManager);
assertTrue(connectionManager instanceof NoTxConnectionManager);
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/notx/SerializableTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/notx/SerializableTestCase.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/notx/SerializableTestCase.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -21,6 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.notx;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.api.connectionmanager.ConnectionManager;
import org.jboss.jca.core.api.connectionmanager.pool.PoolConfiguration;
import org.jboss.jca.core.connectionmanager.ConnectionManagerFactory;
@@ -65,7 +66,9 @@
ConnectionManagerFactory cmf = new ConnectionManagerFactory();
ConnectionManager connectionManager = cmf.createNonTransactional(TransactionSupportLevel.NoTransaction,
- pool, null, null, false, null, null, null);
+ pool, null, null, false, null,
+ FlushStrategy.FAILING_CONNECTION_ONLY,
+ null, null);
assertNotNull(connectionManager);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/pool/PrefillTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/pool/PrefillTestCase.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/pool/PrefillTestCase.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -21,6 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.pool;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.api.connectionmanager.pool.PoolConfiguration;
import org.jboss.jca.core.connectionmanager.ConnectionManagerFactory;
import org.jboss.jca.core.connectionmanager.NoTxConnectionManager;
@@ -70,7 +71,10 @@
AbstractPrefillPool app = (AbstractPrefillPool)pool;
NoTxConnectionManager noTxConnectionManager =
- cmf.createNonTransactional(TransactionSupportLevel.NoTransaction, pool, null, null, false, null, null, null);
+ cmf.createNonTransactional(TransactionSupportLevel.NoTransaction,
+ pool, null, null, false, null,
+ FlushStrategy.FAILING_CONNECTION_ONLY,
+ null, null);
app.prefill(null, null, false);
@@ -112,7 +116,9 @@
NoTxConnectionManager noTxConnectionManager =
cmf.createNonTransactional(TransactionSupportLevel.NoTransaction, pool,
- null, null, false, null, null, null);
+ null, null, false, null,
+ FlushStrategy.FAILING_CONNECTION_ONLY,
+ null, null);
app.prefill(null, null, false);
@@ -175,7 +181,9 @@
NoTxConnectionManager noTxConnectionManager =
cmf.createNonTransactional(TransactionSupportLevel.NoTransaction, app,
- subjectFactory, "domain", false, null, null, null);
+ subjectFactory, "domain", false, null,
+ FlushStrategy.FAILING_CONNECTION_ONLY,
+ null, null);
app.prefill(subject, null, false);
@@ -220,7 +228,9 @@
NoTxConnectionManager noTxConnectionManager =
cmf.createNonTransactional(TransactionSupportLevel.NoTransaction, app,
- subjectFactory, "domain", false, null, null, null);
+ subjectFactory, "domain", false, null,
+ FlushStrategy.FAILING_CONNECTION_ONLY,
+ null, null);
app.prefill(subject, null, false);
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/SerializableTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/SerializableTestCase.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/SerializableTestCase.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -21,6 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.tx;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.api.connectionmanager.ConnectionManager;
import org.jboss.jca.core.api.connectionmanager.pool.PoolConfiguration;
import org.jboss.jca.core.connectionmanager.ConnectionManagerFactory;
@@ -73,7 +74,9 @@
ConnectionManagerFactory cmf = new ConnectionManagerFactory();
ConnectionManager connectionManager = cmf.createTransactional(TransactionSupportLevel.XATransaction,
- pool, null, null, false, null, null, null, ti,
+ pool, null, null, false, null,
+ FlushStrategy.FAILING_CONNECTION_ONLY,
+ null, null, ti,
Boolean.FALSE, null, null, null, null);
assertNotNull(connectionManager);
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerTestCase.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/TxConnectionManagerTestCase.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -21,6 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.tx;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.api.connectionmanager.ConnectionManager;
import org.jboss.jca.core.api.connectionmanager.pool.PoolConfiguration;
import org.jboss.jca.core.connectionmanager.ConnectionManagerFactory;
@@ -319,7 +320,7 @@
ConnectionManagerFactory cmf = new ConnectionManagerFactory();
ConnectionManager connectionManager =
cmf.createTransactional(TransactionSupportLevel.LocalTransaction, pool,
- null, null, false, null,
+ null, null, false, null, FlushStrategy.FAILING_CONNECTION_ONLY,
null, null, ti, null, null, null, null, null);
txConnectionManager = (TxConnectionManager) connectionManager;
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/XATxConnectionManagerTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/XATxConnectionManagerTestCase.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/tx/XATxConnectionManagerTestCase.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -21,6 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.tx;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.api.connectionmanager.pool.PoolConfiguration;
import org.jboss.jca.core.connectionmanager.ConnectionManagerFactory;
import org.jboss.jca.core.connectionmanager.TxConnectionManager;
@@ -289,7 +290,8 @@
ConnectionManagerFactory cmf = new ConnectionManagerFactory();
ConnectionManager connectionManager =
cmf.createTransactional(TransactionSupportLevel.XATransaction, pool,
- null, null, false, null, null, null, ti,
+ null, null, false, null, FlushStrategy.FAILING_CONNECTION_ONLY,
+ null, null, ti,
Boolean.FALSE, null, null, null, null);
assertNotNull(connectionManager);
Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/ConnectionRecordTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/ConnectionRecordTestCase.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/connectionmanager/unit/ConnectionRecordTestCase.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -21,6 +21,7 @@
*/
package org.jboss.jca.core.connectionmanager.unit;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.core.connectionmanager.ConnectionRecord;
import org.jboss.jca.core.connectionmanager.common.MockConnectionRequestInfo;
import org.jboss.jca.core.connectionmanager.listener.NoTxConnectionListener;
@@ -66,8 +67,10 @@
@Test
public void testConnectionListenerIsNotNull()
{
- ConnectionRecord other = new ConnectionRecord(new NoTxConnectionListener(null, null, null, null),
- connection, cri);
+ ConnectionRecord other =
+ new ConnectionRecord(new NoTxConnectionListener(null, null, null, null,
+ FlushStrategy.FAILING_CONNECTION_ONLY),
+ connection, cri);
assertNotNull(other.getConnectionListener());
}
@@ -88,5 +91,4 @@
{
assertNotNull(cr.getCri());
}
-
}
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -25,6 +25,7 @@
import org.jboss.jca.common.api.metadata.common.CommonTimeOut;
import org.jboss.jca.common.api.metadata.common.CommonValidation;
import org.jboss.jca.common.api.metadata.common.Credential;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.common.api.metadata.common.Recovery;
import org.jboss.jca.common.api.metadata.ds.CommonDataSource;
import org.jboss.jca.common.api.metadata.ds.DataSource;
@@ -433,6 +434,11 @@
log.debugf("Adding management datasource: %s", mgtDs);
getManagementRepository().getDataSources().add(mgtDs);
+
+ // Flush strategy
+ FlushStrategy flushStrategy = FlushStrategy.FAILING_CONNECTION_ONLY;
+ if (ds.getPool() != null)
+ flushStrategy = ds.getPool().getFlushStrategy();
// Select the correct connection manager
TransactionSupportLevel tsl = TransactionSupportLevel.LocalTransaction;
@@ -440,6 +446,7 @@
ConnectionManager cm =
cmf.createTransactional(tsl, pool, getSubjectFactory(securityDomain), securityDomain,
ds.isUseCcm(), ccm,
+ flushStrategy,
allocationRetry, allocationRetryWaitMillis,
getTransactionIntegration(),
null, null, null, null, null);
@@ -604,6 +611,11 @@
log.debugf("Adding management datasource: %s", mgtDs);
getManagementRepository().getDataSources().add(mgtDs);
+
+ // Flush strategy
+ FlushStrategy flushStrategy = FlushStrategy.FAILING_CONNECTION_ONLY;
+ if (ds.getXaPool() != null)
+ flushStrategy = ds.getXaPool().getFlushStrategy();
// Select the correct connection manager
TransactionSupportLevel tsl = TransactionSupportLevel.XATransaction;
@@ -611,6 +623,7 @@
ConnectionManager cm =
cmf.createTransactional(tsl, pool, getSubjectFactory(securityDomain), securityDomain,
ds.isUseCcm(), ccm,
+ flushStrategy,
allocationRetry, allocationRetryWaitMillis,
getTransactionIntegration(), interleaving,
xaResourceTimeout, isSameRMOverride, wrapXAResource, padXid);
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java 2011-04-15 14:56:48 UTC (rev 111184)
@@ -30,6 +30,7 @@
import org.jboss.jca.common.api.metadata.common.CommonValidation;
import org.jboss.jca.common.api.metadata.common.CommonXaPool;
import org.jboss.jca.common.api.metadata.common.Credential;
+import org.jboss.jca.common.api.metadata.common.FlushStrategy;
import org.jboss.jca.common.api.metadata.common.Recovery;
import org.jboss.jca.common.api.metadata.common.TransactionSupportEnum;
import org.jboss.jca.common.api.metadata.ironjacamar.IronJacamar;
@@ -861,13 +862,21 @@
associateResourceAdapter(resourceAdapter, mcf);
// Create the pool
PoolConfiguration pc = null;
+ FlushStrategy flushStrategy = FlushStrategy.FAILING_CONNECTION_ONLY;
+
if (cdRaXml != null)
{
pc = createPoolConfiguration(cdRaXml.getPool(), cdRaXml.getTimeOut(), cdRaXml.getValidation());
+
+ if (cdRaXml.getPool() != null)
+ flushStrategy = cdRaXml.getPool().getFlushStrategy();
}
else if (ijCD != null)
{
pc = createPoolConfiguration(ijCD.getPool(), ijCD.getTimeOut(), ijCD.getValidation());
+
+ if (ijCD.getPool() != null)
+ flushStrategy = ijCD.getPool().getFlushStrategy();
}
else
{
@@ -877,6 +886,7 @@
PoolFactory pf = new PoolFactory();
Boolean noTxSeparatePool = Boolean.FALSE;
+
if (cdRaXml != null && cdRaXml.getPool() != null && cdRaXml.isXa())
{
CommonXaPool ijXaPool = (CommonXaPool) cdRaXml.getPool();
@@ -997,6 +1007,7 @@
cm = cmf.createNonTransactional(tsl, pool,
getSubjectFactory(securityDomain), securityDomain,
useCCM, getCachedConnectionManager(),
+ flushStrategy,
allocationRetry, allocationRetryWaitMillis);
}
else
@@ -1039,6 +1050,7 @@
cm = cmf.createTransactional(tsl, pool,
getSubjectFactory(securityDomain), securityDomain,
useCCM, getCachedConnectionManager(),
+ flushStrategy,
allocationRetry, allocationRetryWaitMillis,
getTransactionIntegration(), interleaving,
xaResourceTimeout, isSameRMOverride,
@@ -1212,17 +1224,26 @@
cdMeta.getConfigProperties()));
beanValidationObjects.add(mcf);
associateResourceAdapter(resourceAdapter, mcf);
+
// Create the pool
PoolConfiguration pc = null;
- if (cdRaXml != null && cdRaXml.getPool() != null)
+ FlushStrategy flushStrategy = FlushStrategy.FAILING_CONNECTION_ONLY;
+
+ if (cdRaXml != null)
{
pc = createPoolConfiguration(cdRaXml.getPool(), cdRaXml.getTimeOut(),
cdRaXml.getValidation());
+
+ if (cdRaXml.getPool() != null)
+ flushStrategy = cdRaXml.getPool().getFlushStrategy();
}
else if (ijCD != null)
{
pc = createPoolConfiguration(ijCD.getPool(), ijCD.getTimeOut(),
ijCD.getValidation());
+
+ if (ijCD.getPool() != null)
+ flushStrategy = ijCD.getPool().getFlushStrategy();
}
else
{
@@ -1353,6 +1374,7 @@
getSubjectFactory(securityDomain),
securityDomain,
useCCM, getCachedConnectionManager(),
+ flushStrategy,
allocationRetry, allocationRetryWaitMillis);
}
else
@@ -1397,6 +1419,7 @@
cm = cmf.createTransactional(tsl, pool,
getSubjectFactory(securityDomain), securityDomain,
useCCM, getCachedConnectionManager(),
+ flushStrategy,
allocationRetry, allocationRetryWaitMillis,
getTransactionIntegration(),
interleaving,
Modified: projects/jboss-jca/trunk/doc/userguide/en-US/modules/deployment.xml
===================================================================
--- projects/jboss-jca/trunk/doc/userguide/en-US/modules/deployment.xml 2011-04-15 10:21:58 UTC (rev 111183)
+++ projects/jboss-jca/trunk/doc/userguide/en-US/modules/deployment.xml 2011-04-15 14:56:48 UTC (rev 111184)
@@ -332,6 +332,13 @@
Default false
</entry>
</row>
+ <row>
+ <entry><code>flush-strategy</code></entry>
+ <entry>
+ Specifies how the pool should be flush in case of an error.
+ Valid values are: FailingConnectionOnly (default), IdleConnections, EntirePool
+ </entry>
+ </row>
</tbody>
</tgroup>
</table>
@@ -379,6 +386,13 @@
</entry>
</row>
<row>
+ <entry><code>flush-strategy</code></entry>
+ <entry>
+ Specifies how the pool should be flush in case of an error.
+ Valid values are: FailingConnectionOnly (default), IdleConnections, EntirePool
+ </entry>
+ </row>
+ <row>
<entry><code>is-same-rm-override</code></entry>
<entry>
The is-same-rm-override element allows one to unconditionally
@@ -954,6 +968,13 @@
Default false
</entry>
</row>
+ <row>
+ <entry><code>flush-strategy</code></entry>
+ <entry>
+ Specifies how the pool should be flush in case of an error.
+ Valid values are: FailingConnectionOnly (default), IdleConnections, EntirePool
+ </entry>
+ </row>
</tbody>
</tgroup>
</table>
@@ -1001,6 +1022,13 @@
</entry>
</row>
<row>
+ <entry><code>flush-strategy</code></entry>
+ <entry>
+ Specifies how the pool should be flush in case of an error.
+ Valid values are: FailingConnectionOnly (default), IdleConnections, EntirePool
+ </entry>
+ </row>
+ <row>
<entry><code>is-same-rm-override</code></entry>
<entry>
The is-same-rm-override element allows one to unconditionally
More information about the jboss-cvs-commits
mailing list