You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/04/06 21:05:32 UTC
svn commit: r1585329 - in
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb:
assembler/classic/ resource/jdbc/dbcp/ resource/jdbc/managed/local/
resource/jdbc/managed/xa/
Author: rmannibucau
Date: Sun Apr 6 19:05:31 2014
New Revision: 1585329
URL: http://svn.apache.org/r1585329
Log:
TOMEE-1169 xa datasource support
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1585329&r1=1585328&r2=1585329&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Sun Apr 6 19:05:31 2014
@@ -2287,7 +2287,10 @@ public class Assembler extends Assembler
importer.doImport();
}
- logUnusedProperties(DataSourceFactory.forgetRecipe(service, serviceRecipe), serviceInfo);
+ final ObjectRecipe recipe = DataSourceFactory.forgetRecipe(service, serviceRecipe);
+ if (recipe != serviceRecipe || !serviceInfo.properties.containsKey("XaDataSource")) {
+ logUnusedProperties(recipe, serviceInfo);
+ } // else logged on xadatasource itself
final Properties prop = serviceInfo.properties;
String url = prop.getProperty("JdbcUrl", prop.getProperty("url"));
@@ -2618,7 +2621,11 @@ public class Assembler extends Assembler
}
final ObjectRecipe serviceRecipe = prepareRecipe(info);
+ final Object value = info.properties.remove("SkipImplicitAttributes"); // we don't want this one to go in recipe
serviceRecipe.setAllProperties(info.properties);
+ if (value != null) {
+ info.properties.put("SkipImplicitAttributes", value);
+ }
if (serviceLogger.isDebugEnabled()) {
for (final Map.Entry<String, Object> entry : serviceRecipe.getProperties().entrySet()) {
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java?rev=1585329&r1=1585328&r2=1585329&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java Sun Apr 6 19:05:31 2014
@@ -16,12 +16,16 @@
*/
package org.apache.openejb.resource.jdbc.dbcp;
+import org.apache.openejb.OpenEJB;
+import org.apache.openejb.resource.jdbc.managed.local.ManagedDataSource;
+import org.apache.openejb.resource.jdbc.managed.xa.ManagedXADataSource;
import org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator;
import org.apache.openejb.resource.jdbc.pool.XADataSourceResource;
import javax.sql.CommonDataSource;
import javax.sql.DataSource;
import javax.sql.XADataSource;
+import javax.transaction.TransactionManager;
import java.util.Properties;
// just a sample showing how to implement a datasourcecreator
@@ -33,7 +37,21 @@ public class DbcpDataSourceCreator exten
}
@Override
+ public DataSource managed(final String name, final CommonDataSource ds) {
+ final TransactionManager transactionManager = OpenEJB.getTransactionManager();
+ if (ds instanceof XADataSource) {
+ return new ManagedXADataSource(ds, transactionManager);
+ }
+ return new ManagedDataSource(DataSource.class.cast(ds), transactionManager);
+ }
+
+ @Override
public CommonDataSource pool(final String name, final String driver, final Properties properties) {
+ final String xa = String.class.cast(properties.remove("XaDataSource"));
+ if (xa != null) {
+ return XADataSourceResource.proxy(Thread.currentThread().getContextClassLoader(), xa);
+ }
+
if (!properties.containsKey("JdbcDriver")) {
properties.setProperty("driverClassName", driver);
}
@@ -41,14 +59,7 @@ public class DbcpDataSourceCreator exten
final BasicDataSource ds = build(BasicDataSource.class, properties);
ds.setDriverClassName(driver);
-
- final String xa = String.class.cast(properties.remove("XaDataSource"));
- if (xa != null) {
- cleanProperty(ds, "xadatasource");
-
- final XADataSource xaDs = XADataSourceResource.proxy(Thread.currentThread().getContextClassLoader(), xa);
- ds.setDelegate(xaDs);
- }
+ // if (xa != null) ds.setDelegate(XADataSourceResource.proxy(Thread.currentThread().getContextClassLoader(), xa));
return ds;
}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java?rev=1585329&r1=1585328&r2=1585329&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java Sun Apr 6 19:05:31 2014
@@ -118,7 +118,7 @@ public class ManagedConnection implement
transaction.registerSynchronization(new ClosingSynchronization(delegate, connectionByTx));
try {
- delegate.setAutoCommit(false);
+ setAutoCommit(false);
} catch (final SQLException xae) { // we are alreay in a transaction so this can't be called from a user perspective - some XA DataSource prevents it in their code
final String message = "Can't set auto commit to false cause the XA datasource doesn't support it, this is likely an issue";
if (LOGGER.isDebugEnabled()) { // we don't want to print the exception by default
@@ -139,6 +139,10 @@ public class ManagedConnection implement
}
}
+ protected void setAutoCommit(final boolean value) throws SQLException {
+ delegate.setAutoCommit(value);
+ }
+
private static Object invoke(final Method method, final Connection delegate, final Object[] args) throws Throwable {
try {
return method.invoke(delegate, args);
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java?rev=1585329&r1=1585328&r2=1585329&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/xa/ManagedXAConnection.java Sun Apr 6 19:05:31 2014
@@ -37,4 +37,9 @@ public class ManagedXAConnection extends
public XAResource getXAResource() throws SQLException {
return xaConnection.getXAResource();
}
+
+ @Override
+ protected void setAutoCommit(final boolean value) throws SQLException {
+ // no-op
+ }
}