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/06/16 14:21:37 UTC
tomee git commit: if warmup is called skip core class preloading
Repository: tomee
Updated Branches:
refs/heads/master 439352c43 -> bf2cf2f97
if warmup is called skip core class preloading
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/bf2cf2f9
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/bf2cf2f9
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/bf2cf2f9
Branch: refs/heads/master
Commit: bf2cf2f97ee93941872cacb8510e519205934ac3
Parents: 439352c
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue Jun 16 14:21:20 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue Jun 16 14:21:20 2015 +0200
----------------------------------------------------------------------
.../src/main/java/org/apache/openejb/Core.java | 162 ++++++++++---------
1 file changed, 88 insertions(+), 74 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf2cf2f9/container/openejb-core/src/main/java/org/apache/openejb/Core.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/Core.java b/container/openejb-core/src/main/java/org/apache/openejb/Core.java
index 7bdeece..e76ca68 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/Core.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/Core.java
@@ -27,55 +27,6 @@ import java.util.concurrent.Semaphore;
*/
public class Core {
static {
- final String[] classes = {
- "org.slf4j.LoggerFactory",
- "org.slf4j.impl.StaticLoggerBinder",
-
- "org.apache.openejb.config.sys.JaxbJavaee",
- "org.apache.bval.jsr.ApacheValidationProvider",
- "org.apache.bval.jsr.ApacheValidatorFactory",
- "org.apache.bval.jsr.ConstraintAnnotationAttributes",
- "org.apache.bval.jsr.ConstraintDefaults",
- "org.apache.bval.jsr.groups.GroupsComputer",
- "org.apache.bval.jsr.xml.ValidationMappingParser",
- "org.apache.bval.util.PrivilegedActions",
- "org.apache.geronimo.transaction.manager.TransactionManagerImpl",
- "org.apache.openejb.InterfaceType",
- "org.apache.openejb.assembler.classic.Assembler",
- "org.apache.openejb.assembler.classic.AssemblerTool",
- "org.apache.openejb.cdi.CdiBuilder",
- "org.apache.openejb.cdi.ThreadSingletonServiceImpl",
- "org.apache.openejb.config.AppValidator",
- "org.apache.openejb.config.AnnotationDeployer",
- "org.apache.openejb.config.AutoConfig",
- "org.apache.openejb.config.ConfigurationFactory",
- "org.apache.openejb.config.MBeanDeployer",
- "org.apache.openejb.config.PersistenceContextAnnFactory",
- "org.apache.openejb.core.ServerFederation",
- "org.apache.openejb.core.ivm.EjbHomeProxyHandler$1",
- "org.apache.openejb.core.ivm.EjbHomeProxyHandler$MethodType",
- "org.apache.openejb.core.managed.ManagedContainer$MethodType",
- "org.apache.openejb.loader.FileUtils",
- "org.apache.openejb.loader.IO",
- "org.apache.openejb.loader.SystemInstance",
- "org.apache.openejb.monitoring.StatsInterceptor",
- "org.apache.openejb.persistence.JtaEntityManagerRegistry",
- "org.apache.openejb.util.Join",
- "org.apache.openejb.util.JuliLogStreamFactory",
- "org.apache.openejb.util.LogCategory",
- "org.apache.openejb.util.Messages",
- "org.apache.openejb.util.SafeToolkit",
- "org.apache.openejb.util.StringTemplate",
- "org.apache.openejb.util.proxy.ProxyManager",
- "org.apache.openjpa.enhance.PCRegistry",
- "org.apache.openjpa.lib.util.Localizer",
- "org.apache.webbeans.logger.WebBeansLoggerFacade",
- "org.apache.xbean.naming.reference.SimpleReference",
- "org.apache.xbean.propertyeditor.PropertyEditors",
- "org.apache.xbean.propertyeditor.ReferenceIdentityMap",
- "org.apache.xbean.recipe.ReflectionUtil"
- };
-
final Thread preloadMessages = new Thread() {
@Override
public void run() {
@@ -102,41 +53,104 @@ public class Core {
final Semaphore semaphore = new Semaphore(0);
final ClassLoader loader = OpenEjbContainer.class.getClassLoader();
- try { // logging classes should be loaded before any other classes so do it here synchronously
- Class.forName("org.apache.openejb.util.Logger", true, loader);
+ try {
+ Class.forName("org.apache.tomee.catalina.Warmup", true, loader);
+ // ok preloading already done
} catch (final Throwable e) {
- // no-op
- }
+ try { // logging classes should be loaded before any other classes so do it here synchronously
+ Class.forName("org.apache.openejb.util.Logger", true, loader);
+ } catch (final Throwable ignored) {
+ // no-op
+ }
+
+ final String[] classes = {
+ "org.slf4j.LoggerFactory",
+ "org.slf4j.impl.StaticLoggerBinder",
+
+ "org.apache.openejb.config.sys.JaxbJavaee",
+ "org.apache.bval.jsr.ApacheValidationProvider",
+ "org.apache.bval.jsr.ApacheValidatorFactory",
+ "org.apache.bval.jsr.ConstraintAnnotationAttributes",
+ "org.apache.bval.jsr.ConstraintDefaults",
+ "org.apache.bval.jsr.groups.GroupsComputer",
+ "org.apache.bval.jsr.xml.ValidationMappingParser",
+ "org.apache.bval.util.PrivilegedActions",
+ "org.apache.geronimo.transaction.manager.TransactionManagerImpl",
+ "org.apache.openejb.InterfaceType",
+ "org.apache.openejb.assembler.classic.Assembler",
+ "org.apache.openejb.assembler.classic.AssemblerTool",
+ "org.apache.openejb.cdi.CdiBuilder",
+ "org.apache.openejb.cdi.ThreadSingletonServiceImpl",
+ "org.apache.openejb.config.AppValidator",
+ "org.apache.openejb.config.AnnotationDeployer",
+ "org.apache.openejb.config.AutoConfig",
+ "org.apache.openejb.config.ConfigurationFactory",
+ "org.apache.openejb.config.MBeanDeployer",
+ "org.apache.openejb.config.PersistenceContextAnnFactory",
+ "org.apache.openejb.core.ServerFederation",
+ "org.apache.openejb.core.ivm.EjbHomeProxyHandler$1",
+ "org.apache.openejb.core.ivm.EjbHomeProxyHandler$MethodType",
+ "org.apache.openejb.core.managed.ManagedContainer$MethodType",
+ "org.apache.openejb.loader.FileUtils",
+ "org.apache.openejb.loader.IO",
+ "org.apache.openejb.loader.SystemInstance",
+ "org.apache.openejb.monitoring.StatsInterceptor",
+ "org.apache.openejb.persistence.JtaEntityManagerRegistry",
+ "org.apache.openejb.util.Join",
+ "org.apache.openejb.util.JuliLogStreamFactory",
+ "org.apache.openejb.util.LogCategory",
+ "org.apache.openejb.util.Messages",
+ "org.apache.openejb.util.SafeToolkit",
+ "org.apache.openejb.util.StringTemplate",
+ "org.apache.openejb.util.proxy.ProxyManager",
+ "org.apache.openjpa.enhance.PCRegistry",
+ "org.apache.openjpa.lib.util.Localizer",
+ "org.apache.webbeans.logger.WebBeansLoggerFacade",
+ "org.apache.xbean.naming.reference.SimpleReference",
+ "org.apache.xbean.propertyeditor.PropertyEditors",
+ "org.apache.xbean.propertyeditor.ReferenceIdentityMap",
+ "org.apache.xbean.recipe.ReflectionUtil"
+ };
- final int part = Math.max(1, (int) Math.round(classes.length * 1. / permits));
- for (int i = 0; i < permits; i++) {
- final int current = i;
- final int offset = i * part;
- final Thread thread = new Thread() {
- @Override
- public void run() {
- int max = offset + part;
- if (current == permits - 1) { // last one
- max = classes.length;
+ final int part = Math.max(1, (int) Math.round(classes.length * 1. / permits));
+ for (int i = 0; i < permits; i++) {
+ final int current = i;
+ final int offset = i * part;
+ final Thread thread = new Thread() {
+ {
+ setName("core-" + current);
}
- for (int c = offset; c < max; c++) {
- try {
- Class.forName(classes[c], true, loader);
- } catch (final Throwable e) {
- // no-op
+ @Override
+ public void run() {
+ int max = offset + part;
+ if (current == permits - 1) { // last one
+ max = classes.length;
+ }
+
+ for (int c = offset; c < max; c++) {
+ try {
+ Class.forName(classes[c], true, loader);
+ } catch (final Throwable e) {
+ // no-op
+ }
}
+ semaphore.release();
}
- semaphore.release();
- }
- };
- thread.setDaemon(true);
- thread.start();
+ };
+ thread.setDaemon(true);
+ thread.start();
+ }
+ try {
+ semaphore.acquire(permits);
+ } catch (final InterruptedException ie) {
+ Thread.interrupted();
+ }
}
+
try {
preloadServiceProviders.join();
preloadMessages.join();
- semaphore.acquire(permits);
} catch (final InterruptedException e) {
Thread.interrupted();
}