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 2015/05/15 15:30:38 UTC
tomee git commit: TOMEE-1580 issue with p.xml root url when p.mlx is
in a jar + trying to fix datasource url in p.xml properties + TOMEE-1585 fix
concurrency in live registry of base ejb proxy handler (all are backport from
master)
Repository: tomee
Updated Branches:
refs/heads/tomee-1.7.x ae7f37b76 -> ded183522
TOMEE-1580 issue with p.xml root url when p.mlx is in a jar + trying to fix datasource url in p.xml properties + TOMEE-1585 fix concurrency in live registry of base ejb proxy handler (all are backport from master)
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ded18352
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ded18352
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ded18352
Branch: refs/heads/tomee-1.7.x
Commit: ded1835221b19c7768ad5f0963a0a1f40e6d6bc2
Parents: ae7f37b
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri May 15 15:30:29 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri May 15 15:30:29 2015 +0200
----------------------------------------------------------------------
.../apache/openejb/config/AppInfoBuilder.java | 16 +++++++++++
.../apache/openejb/config/ReadDescriptors.java | 7 +++--
.../openejb/core/ivm/BaseEjbProxyHandler.java | 30 +++++++++++---------
3 files changed, 37 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/ded18352/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
index c2517cd..3b9c86f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
@@ -97,6 +97,8 @@ import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import static java.util.Arrays.asList;
+import static java.util.Collections.singletonList;
import static org.apache.openejb.util.URLs.toFile;
/**
@@ -845,6 +847,13 @@ class AppInfoBuilder {
info.properties.setProperty(ECLIPSELINK_SESSION_CUSTOMIZER, PREFIX_SESSION_CUSTOMIZER);
}
}
+
+ for (final String key : singletonList("eclipselink.jdbc.sequence-connection-pool.non-jta-data-source")) {
+ final String ds = info.properties.getProperty(key);
+ if (ds != null && !ds.contains(":") /* java:, openejb:, other: namespace */) {
+ info.properties.setProperty(key, "java:openejb/Resource/" + ds);
+ }
+ }
} else if (info.provider == null || "org.apache.openjpa.persistence.PersistenceProviderImpl".equals(info.provider)) {
// Apply the overrides that apply to all persistence units of this provider
@@ -895,6 +904,13 @@ class AppInfoBuilder {
// Apply the overrides that apply to just this persistence unit
override(appModule.getProperties(), info);
+
+ for (final String key : asList("javax.persistence.jtaDataSource", "javax.persistence.nonJtaDataSource")) {
+ final String ds = info.properties.getProperty(key);
+ if (ds != null && !ds.contains(":") /* java:, openejb:, other: namespace */) {
+ info.properties.setProperty(key, "java:openejb/Resource/" + ds);
+ }
+ }
}
private static void overrideFromSystemProp(final PersistenceUnitInfo info) {
http://git-wip-us.apache.org/repos/asf/tomee/blob/ded18352/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java b/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
index aaf31ed..5cd9f84 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
@@ -146,9 +146,12 @@ public class ReadDescriptors implements DynamicDeployer {
path = file.getAbsolutePath();
if (file.getName().endsWith("persistence.xml")) {
- final String parent = file.getParentFile().getName();
+ final File parentFile = file.getParentFile();
+ final String parent = parentFile.getName();
if (parent.equalsIgnoreCase("WEB-INF") || parent.equalsIgnoreCase("META-INF")) {
- file = file.getParentFile().getParentFile();
+ file = parentFile.getParentFile();
+ } else if (parent.equalsIgnoreCase("lib") && "WEB-INF".equals(parentFile.getParentFile().getName())) {
+ file = parentFile.getParentFile().getParentFile();
} else { // we don't really know so simply go back (users will often put persistence.xml in root resource folder with arquillian)
file = file.getParentFile();
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/ded18352/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
index 2a01773..34f9ef7 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
@@ -52,6 +52,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.locks.ReentrantLock;
import javax.ejb.AccessLocalException;
import javax.ejb.EJBException;
@@ -608,20 +610,20 @@ public abstract class BaseEjbProxyHandler implements InvocationHandler, Serializ
protected abstract Object _writeReplace(Object proxy) throws ObjectStreamException;
protected void registerHandler(final Object key, final BaseEjbProxyHandler handler) {
- HashSet set = (HashSet) getLiveHandleRegistry().get(key);
- if (set != null) {
- final ReentrantLock l = lock;
- l.lock();
-
- try {
- set.add(handler);
- } finally {
- l.unlock();
- }
- } else {
+ Set set = (Set) getLiveHandleRegistry().get(key);
+ if (set == null) {
set = new HashSet();
+ final Object existing = getLiveHandleRegistry().putIfAbsent(key, set);
+ if (existing != null) {
+ set = Set.class.cast(existing);
+ }
+ }
+ final ReentrantLock l = lock;
+ l.lock();
+ try {
set.add(handler);
- getLiveHandleRegistry().put(key, set);
+ } finally {
+ l.unlock();
}
}
@@ -640,7 +642,7 @@ public abstract class BaseEjbProxyHandler implements InvocationHandler, Serializ
this.beanContextRef = new WeakReference<BeanContext>(beanContext);
}
- public HashMap getLiveHandleRegistry() {
+ public ConcurrentMap getLiveHandleRegistry() {
final BeanContext beanContext = getBeanContext();
ProxyRegistry proxyRegistry = beanContext.get(ProxyRegistry.class);
if (proxyRegistry == null) {
@@ -675,6 +677,6 @@ public abstract class BaseEjbProxyHandler implements InvocationHandler, Serializ
private static class ProxyRegistry {
- protected final HashMap liveHandleRegistry = new HashMap();
+ protected final ConcurrentMap liveHandleRegistry = new ConcurrentHashMap();
}
}