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 2018/02/01 13:33:30 UTC
tomee git commit: wiring OWB async default pool
Repository: tomee
Updated Branches:
refs/heads/fb_tomee8 c2f603d38 -> 3c2703a8e
wiring OWB async default pool
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/3c2703a8
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/3c2703a8
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/3c2703a8
Branch: refs/heads/fb_tomee8
Commit: 3c2703a8e85af07315279ce2a384e1ce2dc70060
Parents: c2f603d
Author: Romain Manni-Bucau <rm...@gmail.com>
Authored: Thu Feb 1 14:33:22 2018 +0100
Committer: Romain Manni-Bucau <rm...@gmail.com>
Committed: Thu Feb 1 14:33:22 2018 +0100
----------------------------------------------------------------------
.../openejb/assembler/classic/Assembler.java | 3 ++
.../openejb/cdi/ThreadSingletonServiceImpl.java | 39 ++++++++++++++++++++
tck/cdi-embedded/src/test/resources/failing.xml | 2 +-
3 files changed, 43 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/3c2703a8/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index 853e05c..e831240 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -121,6 +121,7 @@ import org.apache.openejb.resource.jdbc.DataSourceFactory;
import org.apache.openejb.spi.ApplicationServer;
import org.apache.openejb.spi.ContainerSystem;
import org.apache.openejb.spi.SecurityService;
+import org.apache.openejb.threads.impl.ManagedExecutorServiceImpl;
import org.apache.openejb.util.Contexts;
import org.apache.openejb.util.DaemonThreadFactory;
import org.apache.openejb.util.Duration;
@@ -246,6 +247,7 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
@@ -1734,6 +1736,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
final Map<Class<?>, Object> services = new HashMap<Class<?>, Object>();
+ services.put(Executor.class, new ManagedExecutorServiceImpl(ForkJoinPool.commonPool()));
services.put(JNDIService.class, new OpenEJBJndiService());
services.put(AppContext.class, appContext);
services.put(ScannerService.class, new CdiScanner());
http://git-wip-us.apache.org/repos/asf/tomee/blob/3c2703a8/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
index afcfc5f..a911e40 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
@@ -22,7 +22,11 @@ import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.assembler.classic.EjbJarInfo;
import org.apache.openejb.cdi.transactional.TransactionContext;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.threads.impl.ManagedExecutorServiceImpl;
+import org.apache.openejb.threads.impl.ManagedThreadFactoryImpl;
import org.apache.openejb.util.AppFinder;
+import org.apache.openejb.util.DaemonThreadFactory;
+import org.apache.openejb.util.ExecutorBuilder;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.classloader.MultipleClassLoader;
@@ -53,6 +57,8 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicReference;
/**
* @version $Rev:$ $Date:$
@@ -123,6 +129,39 @@ public class ThreadSingletonServiceImpl implements ThreadSingletonService {
// NOTE: ensure user can extend/override all the services = set it only if not present in properties, see WebBeansContext#getService()
final Map<Class<?>, Object> services = new HashMap<>();
services.put(AppContext.class, appContext);
+ if (!properties.containsKey(Executor.class.getName())) {
+ services.put(Executor.class, new Executor() {
+ // lazy to create threads only for apps requiring it
+ private final AtomicReference<Executor> delegate = new AtomicReference<>();
+
+ @Override
+ public void execute(final Runnable command) {
+ Executor executor = delegate.get();
+ if (executor == null) {
+ synchronized (this) {
+ final Executor alreadyUpdated = delegate.get();
+ if (alreadyUpdated == null) {
+ executor = new ManagedExecutorServiceImpl(
+ new ExecutorBuilder()
+ .size(3)
+ .threadFactory(new ManagedThreadFactoryImpl(appContext.getId() + "-cdi-fireasync-"))
+ .prefix("CDIAsyncPool")
+ .build(appContext.getOptions()));
+ delegate.compareAndSet(null, executor);
+ } else {
+ executor = alreadyUpdated;
+ }
+ }
+ }
+ executor.execute(command);
+ }
+
+ @Override
+ public String toString() {
+ return "CDIAsyncEventExecutor(app=" + appContext.getId() + ")";
+ }
+ });
+ }
if (!properties.containsKey(ApplicationBoundaryService.class.getName())) {
services.put(ApplicationBoundaryService.class, new DefaultApplicationBoundaryService());
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/3c2703a8/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 836410d..15aa7cc 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -39,7 +39,7 @@
TODO these are tests we finally need to pass!
-->
<classes>
- <class name="org.jboss.cdi.tck.tests.event.broken.observer.remoteBusinessMethod.EJBObserverMethodRemoteBusinessMethodTest" />
+ <class name="org.jboss.cdi.tck.tests.event.observer.context.async.enterprise.EnterpriseSecurityContextPropagationInAsyncObserverTest" />
</classes>
</test>
</suite>