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/08/09 18:56:56 UTC

svn commit: r1616992 - in /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config: AnnotationDeployer.java DeploymentLoader.java FinderFactory.java

Author: rmannibucau
Date: Sat Aug  9 16:56:55 2014
New Revision: 1616992

URL: http://svn.apache.org/r1616992
Log:
getting rid of AsynchronousInheritanceAnnotationFinder

Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1616992&r1=1616991&r2=1616992&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Sat Aug  9 16:56:55 2014
@@ -426,7 +426,7 @@ public class AnnotationDeployer implemen
         public AppModule deploy(AppModule appModule) throws OpenEJBException {
             if (!appModule.isWebapp() && !appModule.getWebModules().isEmpty()) { // need to scan for jsf stuff at least
                 try {
-                    appModule.setEarLibFinder(FinderFactory.createFinder(appModule, true));
+                    appModule.setEarLibFinder(FinderFactory.createFinder(appModule));
                 } catch (final Exception e) {
                     logger.error("Can't create a finder for ear libs", e);
                 }
@@ -498,7 +498,7 @@ public class AnnotationDeployer implemen
 
             if (finder == null) {
                 try {
-                    finder = FinderFactory.createFinder(clientModule, false);
+                    finder = FinderFactory.createFinder(clientModule);
                 } catch (final MalformedURLException e) {
                     startupLogger.warning("startup.scrapeFailedForClientModule.url", clientModule.getJarLocation());
                     return clientModule;
@@ -552,7 +552,7 @@ public class AnnotationDeployer implemen
             IAnnotationFinder finder = connectorModule.getFinder();
             if (finder == null) {
                 try {
-                    finder = FinderFactory.createFinder(connectorModule, false);
+                    finder = FinderFactory.createFinder(connectorModule);
                     connectorModule.setFinder(finder);
                 } catch (final Exception e) {
                     // TODO: some sort of error
@@ -1059,7 +1059,7 @@ public class AnnotationDeployer implemen
 
             try {
                 if (webModule.getFinder() == null) {
-                    webModule.setFinder(FinderFactory.createFinder(webModule, true));
+                    webModule.setFinder(FinderFactory.createFinder(webModule));
                 }
             } catch (final Exception e) {
                 startupLogger.warning("Unable to scrape for @WebService or @WebServiceProvider annotations. AnnotationFinder failed.", e);
@@ -1277,7 +1277,7 @@ public class AnnotationDeployer implemen
 
             try {
                 if (ejbModule.getFinder() == null) {
-                    ejbModule.setFinder(FinderFactory.createFinder(ejbModule, true));
+                    ejbModule.setFinder(FinderFactory.createFinder(ejbModule));
                 }
             } catch (final MalformedURLException e) {
                 startupLogger.warning("startup.scrapeFailedForModule", ejbModule.getJarLocation());

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1616992&r1=1616991&r2=1616992&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Sat Aug  9 16:56:55 2014
@@ -831,7 +831,7 @@ public class DeploymentLoader implements
                     webModule.setFinder(finder);
                     webEjbModule.setFinder(finder);
                 } else {
-                    final IAnnotationFinder finder = FinderFactory.createFinder(webModule, true);
+                    final IAnnotationFinder finder = FinderFactory.createFinder(webModule);
                     webModule.setFinder(finder);
                     webEjbModule.setFinder(finder);
                 }
@@ -1119,7 +1119,7 @@ public class DeploymentLoader implements
 
         IAnnotationFinder finder;
         try {
-            finder = FinderFactory.createFinder(appModule, true);
+            finder = FinderFactory.createFinder(appModule);
         } catch (final Exception e) {
             finder = new FinderFactory.ModuleLimitedFinder(new org.apache.xbean.finder.AnnotationFinder(new WebappAggregatedArchive(appModule.getClassLoader(), appModule.getAltDDs(), xmls)));
         }

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java?rev=1616992&r1=1616991&r2=1616992&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java Sat Aug  9 16:56:55 2014
@@ -44,7 +44,6 @@ import java.util.List;
 public class FinderFactory {
 
     private static final FinderFactory factory = new FinderFactory();
-    public static final String ASYNC_SCAN = "openejb.scanning.inheritance.asynchronous";
     public static final String FORCE_LINK = "openejb.finder.force.link";
 
     private static FinderFactory get() {
@@ -52,27 +51,27 @@ public class FinderFactory {
         return factory != null ? factory : FinderFactory.factory;
     }
 
-    public static IAnnotationFinder createFinder(final DeploymentModule module, final boolean allowAsync) throws Exception {
-        return get().create(module, allowAsync);
+    public static IAnnotationFinder createFinder(final DeploymentModule module) throws Exception {
+        return get().create(module);
     }
 
-    public static AnnotationFinder getFinder(final ClassLoader classLoader, final URL url, final boolean allowAsync) {
-        return newFinder(ClasspathArchive.archive(classLoader, url), allowAsync);
+    public static AnnotationFinder getFinder(final ClassLoader classLoader, final URL url) {
+        return newFinder(ClasspathArchive.archive(classLoader, url));
     }
 
-    public IAnnotationFinder create(final DeploymentModule module, final boolean allowAsync) throws Exception {
+    public IAnnotationFinder create(final DeploymentModule module) throws Exception {
         final AnnotationFinder finder;
         if (module instanceof WebModule) {
             final WebModule webModule = (WebModule) module;
-            final AnnotationFinder annotationFinder = newFinder(new WebappAggregatedArchive(webModule, webModule.getScannableUrls()), allowAsync);
+            final AnnotationFinder annotationFinder = newFinder(new WebappAggregatedArchive(webModule, webModule.getScannableUrls()));
             enableFinderOptions(annotationFinder);
             finder = annotationFinder;
         } else if (module instanceof ConnectorModule) {
             final ConnectorModule connectorModule = (ConnectorModule) module;
-            finder = newFinder(new ConfigurableClasspathArchive(connectorModule, connectorModule.getLibraries()), allowAsync).link();
+            finder = newFinder(new ConfigurableClasspathArchive(connectorModule, connectorModule.getLibraries())).link();
         } else if (module instanceof AppModule) {
             final Collection<URL> urls = NewLoaderLogic.applyBuiltinExcludes(new UrlSet(AppModule.class.cast(module).getAdditionalLibraries())).getUrls();
-            finder = newFinder(new WebappAggregatedArchive(module.getClassLoader(), module.getAltDDs(), urls), allowAsync);
+            finder = newFinder(new WebappAggregatedArchive(module.getClassLoader(), module.getAltDDs(), urls));
         } else if (module.getJarLocation() != null) {
             final String location = module.getJarLocation();
             final File file = new File(location);
@@ -91,9 +90,9 @@ public class FinderFactory {
 
             if (module instanceof Module) {
                 final DebugArchive archive = new DebugArchive(new ConfigurableClasspathArchive((Module) module, url));
-                finder = newFinder(archive, allowAsync);
+                finder = newFinder(archive);
             } else {
-                finder = newFinder(new DebugArchive(new ConfigurableClasspathArchive(module.getClassLoader(), url)), allowAsync);
+                finder = newFinder(new DebugArchive(new ConfigurableClasspathArchive(module.getClassLoader(), url)));
             }
             if ("true".equals(SystemInstance.get().getProperty(FORCE_LINK, module.getProperties().getProperty(FORCE_LINK, "false")))) {
                 finder.link();
@@ -108,11 +107,8 @@ public class FinderFactory {
         return new ModuleLimitedFinder(finder);
     }
 
-    private static AnnotationFinder newFinder(final Archive archive, final boolean allowAsync) {
-        if (allowAsync && "true".equals(SystemInstance.get().getProperty(ASYNC_SCAN, "true"))) {
-            return new AsynchronousInheritanceAnnotationFinder(archive);
-        }
-        return new AnnotationFinder(archive);
+    private static AnnotationFinder newFinder(final Archive archive) {
+        return new OpenEJBAnnotationFinder(archive);
     }
 
     public static final class DebugArchive implements Archive {
@@ -384,4 +380,26 @@ public class FinderFactory {
             }
         }
     }
+
+    private static class OpenEJBAnnotationFinder extends AnnotationFinder {
+        private static final String[] JVM_SCANNING_CONFIG = SystemInstance.get().getProperty("openejb.scanning.xbean.jvm", "java.").split(",");
+
+        public OpenEJBAnnotationFinder(final Archive archive) {
+            super(archive);
+        }
+
+        @Override
+        protected boolean isJvm(final String name) {
+            return sharedIsJvm("java.");
+        }
+
+        // don't reuse URLClassLoaderFirst one since this one can kill scanning perf
+        // using a raw but efficient impl
+        public static boolean sharedIsJvm(final String name) {
+            for (final String s : JVM_SCANNING_CONFIG) {
+                return name.startsWith(s);
+            }
+            return false;
+        }
+    }
 }