You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/09/22 18:43:05 UTC
svn commit: r1174253 -
/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
Author: dblevins
Date: Thu Sep 22 16:43:05 2011
New Revision: 1174253
URL: http://svn.apache.org/viewvc?rev=1174253&view=rev
Log:
Merge UserTransaction references more precisely -- always merge unless the target is a BMT bean
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java?rev=1174253&r1=1174252&r2=1174253&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java Thu Sep 22 16:43:05 2011
@@ -25,6 +25,7 @@ import org.apache.openejb.jee.JndiConsum
import org.apache.openejb.jee.JndiReference;
import org.apache.openejb.jee.ResourceEnvRef;
import org.apache.openejb.jee.ResourceRef;
+import org.apache.openejb.jee.TransactionType;
import javax.ejb.EJBContext;
import javax.ejb.EntityContext;
@@ -78,6 +79,11 @@ public class MergeWebappJndiContext impl
merge(bean.getMessageDestinationRefMap(), webApp.getMessageDestinationRefMap());
merge(bean.getPersistenceContextRefMap(), webApp.getPersistenceContextRefMap());
merge(bean.getPersistenceUnitRefMap(), webApp.getPersistenceUnitRefMap());
+
+ mergeUserTransaction(bean.getResourceRefMap(), webApp.getResourceRefMap(), webApp);
+ mergeUserTransaction(bean.getResourceEnvRefMap(), webApp.getResourceEnvRefMap(), webApp);
+ mergeUserTransaction(webApp.getResourceRefMap(), bean.getResourceRefMap(), bean);
+ mergeUserTransaction(webApp.getResourceEnvRefMap(), bean.getResourceEnvRefMap(), bean);
}
for (EnterpriseBean a : ejbJar.getEnterpriseBeans()) {
@@ -96,14 +102,10 @@ public class MergeWebappJndiContext impl
merge(a.getPersistenceContextRefMap(), b.getPersistenceContextRefMap());
merge(a.getPersistenceUnitRefMap(), b.getPersistenceUnitRefMap());
+ mergeUserTransaction(a.getResourceRefMap(), b.getResourceRefMap(), b);
+ mergeUserTransaction(a.getResourceEnvRefMap(), b.getResourceEnvRefMap(), b);
}
}
-
- for (EnterpriseBean bean : ejbJar.getEnterpriseBeans()) {
- mergeUserTransaction(bean.getResourceRefMap(), webApp.getResourceRefMap());
- mergeUserTransaction(bean.getResourceEnvRefMap(), webApp.getResourceEnvRefMap());
- }
-
}
/**
@@ -168,7 +170,12 @@ public class MergeWebappJndiContext impl
return a instanceof ResourceRef || a instanceof ResourceEnvRef;
}
- private <R extends JndiReference> void mergeUserTransaction(Map<String, R> from, Map<String, R> to) {
+ private <R extends JndiReference> void mergeUserTransaction(Map<String, R> from, Map<String, R> to, JndiConsumer consumer) {
+ if (consumer instanceof EnterpriseBean) {
+ final EnterpriseBean enterpriseBean = (EnterpriseBean) consumer;
+ if (enterpriseBean.getTransactionType() != TransactionType.BEAN) return;
+ }
+
for (R a : from.values()) {
if (!UserTransaction.class.getName().equals(a.getType())) continue;