Author: andygumbrecht
Date: Mon Jun 3 11:52:40 2013
New Revision: 1488967
URL: http://svn.apache.org/r1488967
Log:
Address https://issues.apache.org/jira/browse/OPENEJB-2030
Cleanups and some helpful debugging.
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/PerformanceTimer.java
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java?rev=1488967&r1=1488966&r2=1488967&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
Mon Jun 3 11:52:40 2013
@@ -15,7 +15,6 @@
* limitations under the License.
*/
-
package org.apache.openejb.cdi;
import org.apache.openejb.AppContext;
@@ -71,7 +70,7 @@ public class ThreadSingletonServiceImpl
}
@Override
- public void initialize(StartupObject startupObject) {
+ public void initialize(final StartupObject startupObject) {
final AppContext appContext = startupObject.getAppContext();
appContext.setCdiEnabled(hasBeans(startupObject.getAppInfo()));
@@ -79,7 +78,7 @@ public class ThreadSingletonServiceImpl
//initialize owb context, cf geronimo's OpenWebBeansGBean
final Properties properties = new Properties();
- Map<Class<?>, Object> services = new HashMap<Class<?>, Object>();
+ final Map<Class<?>, Object> services = new HashMap<Class<?>, Object>();
properties.setProperty(OpenWebBeansConfiguration.APPLICATION_IS_JSP,
"true");
properties.setProperty(OpenWebBeansConfiguration.USE_EJB_DISCOVERY,
"true");
//from CDI builder
@@ -90,7 +89,8 @@ public class ThreadSingletonServiceImpl
properties.setProperty(OpenWebBeansConfiguration.IGNORED_INTERFACES,
"org.apache.aries.proxy.weaving.WovenProxy");
final String failoverService =
startupObject.getAppInfo().properties.getProperty("org.apache.webbeans.spi.FailOverService",
-
SystemInstance.get().getProperty("org.apache.webbeans.spi.FailOverService",
(String) null));
+
SystemInstance.get().getProperty("org.apache.webbeans.spi.FailOverService",
+
null));
if (failoverService != null) {
properties.setProperty(OpenWebBeansConfiguration.IGNORED_INTERFACES,
failoverService);
}
@@ -119,24 +119,24 @@ public class ThreadSingletonServiceImpl
services.put(JNDIService.class, new OpenEJBJndiService());
services.put(TransactionService.class, new
OpenEJBTransactionService());
if (startupObject.getWebContext() == null) {
- services.put(ELAdaptor.class,new CustomELAdapter(appContext));
+ services.put(ELAdaptor.class, new CustomELAdapter(appContext));
} else {
- services.put(ELAdaptor.class,new CustomELAdapter(appContext,
startupObject.getWebContext()));
+ services.put(ELAdaptor.class, new CustomELAdapter(appContext,
startupObject.getWebContext()));
}
services.put(ScannerService.class, new CdiScanner());
services.put(LoaderService.class, new OptimizedLoaderService());
optional(services, ConversationService.class,
"org.apache.webbeans.jsf.DefaultConversationService");
- ClassLoader oldClassLoader =
Thread.currentThread().getContextClassLoader();
- ClassLoader cl;
+ final ClassLoader oldClassLoader =
Thread.currentThread().getContextClassLoader();
+ final ClassLoader cl;
if (oldClassLoader !=
ThreadSingletonServiceImpl.class.getClassLoader() &&
ThreadSingletonServiceImpl.class.getClassLoader() !=
oldClassLoader.getParent()) {
cl = new MultipleClassLoader(oldClassLoader,
ThreadSingletonServiceImpl.class.getClassLoader());
} else {
cl = oldClassLoader;
}
Thread.currentThread().setContextClassLoader(cl);
- WebBeansContext webBeansContext;
+ final WebBeansContext webBeansContext;
Object old = null;
try {
if (startupObject.getWebContext() == null) {
@@ -165,16 +165,18 @@ public class ThreadSingletonServiceImpl
}
}
- private boolean hasBeans(AppInfo appInfo) {
- for (EjbJarInfo ejbJar : appInfo.ejbJars) {
- if (ejbJar.beans != null) return true;
+ private boolean hasBeans(final AppInfo appInfo) {
+ for (final EjbJarInfo ejbJar : appInfo.ejbJars) {
+ if (ejbJar.beans != null) {
+ return true;
+ }
}
return false;
}
- private <T> void optional(Map<Class<?>, Object> services, Class<T> type,
String implementation) {
+ private <T> void optional(final Map<Class<?>, Object> services, final
Class<T> type, final String implementation) {
try {
- Class clazz =
this.getClass().getClassLoader().loadClass(implementation);
+ final Class clazz =
this.getClass().getClassLoader().loadClass(implementation);
services.put(type, type.cast(clazz.newInstance()));
logger.debug(String.format("CDI Service Installed: %s = %s",
type.getName(), implementation));
@@ -187,11 +189,11 @@ public class ThreadSingletonServiceImpl
//not sure what openejb will need
- private void setConfiguration(OpenWebBeansConfiguration configuration) {
+ private void setConfiguration(final OpenWebBeansConfiguration
configuration) {
//from CDI builder
configuration.setProperty(SecurityService.class.getName(),
ManagedSecurityService.class.getName());
configuration.setProperty(OpenWebBeansConfiguration.INTERCEPTOR_FORCE_NO_CHECKED_EXCEPTIONS,
"false");
-//
configuration.setProperty(OpenWebBeansConfiguration.APPLICATION_IS_JSP, "true");
+ //
configuration.setProperty(OpenWebBeansConfiguration.APPLICATION_IS_JSP, "true");
configuration.setProperty(OpenWebBeansConfiguration.CONTAINER_LIFECYCLE,
OpenEJBLifecycle.class.getName());
configuration.setProperty(OpenWebBeansConfiguration.TRANSACTION_SERVICE,
OpenEJBTransactionService.class.getName());
@@ -202,30 +204,30 @@ public class ThreadSingletonServiceImpl
}
@Override
- public Object contextEntered(WebBeansContext newOWBContext) {
+ public Object contextEntered(final WebBeansContext newOWBContext) {
return enter(newOWBContext);
}
- public static WebBeansContext enter(WebBeansContext newOWBContext) {
- WebBeansContext oldContext = contexts.get();
+ public static WebBeansContext enter(final WebBeansContext newOWBContext) {
+ final WebBeansContext oldContext = contexts.get();
contexts.set(newOWBContext);
- contextMessage(newOWBContext, "Enter:");
- return oldContext;
- }
- private static void contextMessage(WebBeansContext newOWBContext, String
prefix) {
if (logger.isDebugEnabled()) {
- logger.debug(prefix + "'" + newOWBContext + "'");
+ logger.debug("Enter:'" + newOWBContext + "'");
}
+
+ return oldContext;
}
@Override
- public void contextExited(Object oldContext) {
+ public void contextExited(final Object oldContext) {
exit(oldContext);
}
- public static void exit(Object oldContext) {
- if (oldContext != null && !(oldContext instanceof WebBeansContext))
throw new IllegalArgumentException("ThreadSingletonServiceImpl can only be used
with WebBeansContext, not " + oldContext.getClass().getName());
+ public static void exit(final Object oldContext) {
+ if (oldContext != null && !(oldContext instanceof WebBeansContext)) {
+ throw new IllegalArgumentException("ThreadSingletonServiceImpl can
only be used with WebBeansContext, not " + oldContext.getClass().getName());
+ }
contexts.set((WebBeansContext) oldContext);
}
@@ -251,12 +253,12 @@ public class ThreadSingletonServiceImpl
}
final ContainerSystem containerSystem =
SystemInstance.get().getComponent(ContainerSystem.class);
- for (AppContext appContext : containerSystem.getAppContexts()) {
+ for (final AppContext appContext : containerSystem.getAppContexts()) {
if (appContext.getClassLoader().equals(cl)) {
context = appContext.getWebBeansContext();
break;
}
- for (WebContext web : appContext.getWebContexts()) {
+ for (final WebContext web : appContext.getWebContexts()) {
if (web.getClassLoader().equals(cl)) {
if (web.getWebbeansContext() != null) { // ear
context = web.getWebbeansContext();
@@ -310,14 +312,16 @@ public class ThreadSingletonServiceImpl
}
@Override
- public WebBeansContext get(Object key) {
+ public WebBeansContext get(final Object key) {
return getContext((ClassLoader) key);
}
@Override
- public void clear(Object key) {
+ public void clear(final Object key) {
final WebBeansContext ctx = getContext((ClassLoader) key);
- contextMessage(ctx, "clearing ");
+ if (logger.isDebugEnabled()) {
+ logger.debug("Clearing:'" + ctx + "'");
+ }
contextByClassLoader.remove(key);
ctx.clear();
}
@@ -325,7 +329,7 @@ public class ThreadSingletonServiceImpl
public static String sessionContextClass() {
if (SESSION_CONTEXT_CLAZZ != null) {
if ("http".equals(SESSION_CONTEXT_CLAZZ)) { // easy way to manage
this config
- return
"org.apache.tomee.catalina.cdi.SessionContextBackedByHttpSession";
+ return
"org.apache.tomee.catalina.cdi.SessionContextBackedByHttpSession";
}
return SESSION_CONTEXT_CLAZZ;
}
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java?rev=1488967&r1=1488966&r2=1488967&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
Mon Jun 3 11:52:40 2013
@@ -49,7 +49,7 @@ import static org.apache.openejb.util.UR
*/
public class DeploymentsResolver implements DeploymentFilterable {
- private static final String EXCLUDE_INCLUDE_ORDER =
SystemInstance.get().getOptions().get("openejb.exclude-include.order",
"include-exclude");
+ private static final String EXCLUDE_INCLUDE_ORDER =
SystemInstance.get().getOptions().get("openejb.exclude-include.order",
"exclude-include");
private static final String[] ignoreDirs =
SystemInstance.get().getProperty("openejb.ignore.directories",
".svn,_svn,cvs,.git,.hg").split(",");
private static final Logger logger = DeploymentLoader.logger;
private static File lib = null;
@@ -66,10 +66,7 @@ public class DeploymentsResolver impleme
if (new File(f.getParentFile(), f.getName() + ".war").exists()) {
return true;
}
- if (new File(f.getParentFile(), f.getName() + ".ear").exists()) {
- return true;
- }
- return false;
+ return new File(f.getParentFile(), f.getName() + ".ear").exists();
}
protected static boolean isValidDirectory(final File file) {
@@ -126,6 +123,7 @@ public class DeploymentsResolver impleme
}
public static class DeploymentsConfigurationException extends
RuntimeException {
+
public DeploymentsConfigurationException(final String message) {
super(message);
}
@@ -170,7 +168,9 @@ public class DeploymentsResolver impleme
// Ignore any unpacked versions
for (final File file : list) {
- if (!isArchive(file)) continue;
+ if (!isArchive(file)) {
+ continue;
+ }
final String archive = file.getAbsolutePath();
files.remove(archive.substring(0, archive.length() - 4));
}
@@ -184,8 +184,12 @@ public class DeploymentsResolver impleme
}
private static boolean isArchive(final File file) {
- if (!file.isFile()) return false;
- if (!file.getName().toLowerCase().endsWith("ar")) return false;
+ if (!file.isFile()) {
+ return false;
+ }
+ if (!file.getName().toLowerCase().endsWith("ar")) {
+ return false;
+ }
final String name = file.getName();
final char c = name.charAt(name.length() - 4);
@@ -276,7 +280,17 @@ public class DeploymentsResolver impleme
final boolean willScrape = requireDescriptors.size() <
RequireDescriptors.values().length;
if (size < 50 && willScrape) {
- logger.info("Inspecting classpath for applications: " +
urls.size() + " urls. Consider adjusting your exclude/include. Current
settings: " + CLASSPATH_EXCLUDE + "='" + exclude + "', " + CLASSPATH_INCLUDE +
"='" + include + "'");
+ logger.info("Inspecting classpath for applications: " +
+ urls.size() +
+ " urls. Consider adjusting your
exclude/include. Current settings: " +
+ CLASSPATH_EXCLUDE +
+ "='" +
+ exclude +
+ "', " +
+ CLASSPATH_INCLUDE +
+ "='" +
+ include +
+ "'");
} else if (willScrape) {
logger.warning("Inspecting classpath for applications: " +
urls.size() + " urls.");
logger.warning("ADJUST THE EXCLUDE/INCLUDE!!!. Current
settings: " + CLASSPATH_EXCLUDE + "='" + exclude + "', " + CLASSPATH_INCLUDE +
"='" + include + "'");
@@ -284,22 +298,23 @@ public class DeploymentsResolver impleme
}
final long begin = System.currentTimeMillis();
- processUrls(urls, classLoader, requireDescriptors, base, jarList);
+ processUrls("DeploymentsResolver1", urls, classLoader,
requireDescriptors, base, jarList);
final long end = System.currentTimeMillis();
final long time = end - begin;
UrlSet unchecked = new UrlSet();
+
if (!filterDescriptors) {
unchecked =
NewLoaderLogic.applyBuiltinExcludes(prefiltered.exclude(urlSet));
if (filterSystemApps) {
unchecked =
unchecked.exclude(".*/openejb-[^/]+(.(jar|ear|war)(./)?|/target/classes/?)");
}
- processUrls(unchecked.getUrls(), classLoader,
EnumSet.allOf(RequireDescriptors.class), base, jarList);
+ processUrls("DeploymentsResolver2", unchecked.getUrls(),
classLoader, EnumSet.allOf(RequireDescriptors.class), base, jarList);
}
if (logger.isDebugEnabled()) {
final int urlCount = urlSet.getUrls().size() +
unchecked.getUrls().size();
- logger.debug("URLs after filtering: " + urlCount);
+ logger.debug("DeploymentsResolver: URLs after filtering: " +
urlCount);
for (final URL url : urlSet.getUrls()) {
logger.debug("Annotations path: " + url);
}
@@ -308,7 +323,9 @@ public class DeploymentsResolver impleme
}
}
- if (urls.size() == 0) return;
+ if (urls.size() == 0) {
+ return;
+ }
if (time < 1000) {
logger.debug("Searched " + urls.size() + " classpath urls in "
+ time + " milliseconds. Average " + (time / urls.size()) + " milliseconds per
url.");
@@ -316,7 +333,15 @@ public class DeploymentsResolver impleme
logger.info("Searched " + urls.size() + " classpath urls in "
+ time + " milliseconds. Average " + (time / urls.size()) + " milliseconds per
url.");
} else if (time < 10000) {
logger.warning("Searched " + urls.size() + " classpath urls in
" + time + " milliseconds. Average " + (time / urls.size()) + " milliseconds
per url.");
- logger.warning("Consider adjusting your " + CLASSPATH_EXCLUDE
+ " and " + CLASSPATH_INCLUDE + " settings. Current settings: exclude='" +
exclude + "', include='" + include + "'");
+ logger.warning("Consider adjusting your " +
+ CLASSPATH_EXCLUDE +
+ " and " +
+ CLASSPATH_INCLUDE +
+ " settings. Current settings: exclude='" +
+ exclude +
+ "', include='" +
+ include +
+ "'");
} else {
logger.fatal("Searched " + urls.size() + " classpath urls in "
+ time + " milliseconds. Average " + (time / urls.size()) + " milliseconds per
url. TOO LONG!");
logger.fatal("ADJUST THE EXCLUDE/INCLUDE!!!. Current
settings: " + CLASSPATH_EXCLUDE + "='" + exclude + "', " + CLASSPATH_INCLUDE +
"='" + include + "'");
@@ -336,7 +361,12 @@ public class DeploymentsResolver impleme
}
- public static void processUrls(final List<URL> urls, final ClassLoader
classLoader, final Set<RequireDescriptors> requireDescriptors, final FileUtils
base, final List<URL> jarList) {
+ public static void processUrls(final String caller,
+ final List<URL> urls,
+ final ClassLoader classLoader,
+ final Set<RequireDescriptors>
requireDescriptors,
+ final FileUtils base,
+ final List<URL> jarList) {
for (final URL url : urls) {
final String urlProtocol = url.getProtocol();
@@ -347,12 +377,20 @@ public class DeploymentsResolver impleme
continue;
}
+ if (logger.isDebugEnabled()) {
+ logger.debug(caller + ".processing: " + url);
+ }
+
try {
final DeploymentLoader deploymentLoader = new
DeploymentLoader();
final Class<? extends DeploymentModule> moduleType =
deploymentLoader.discoverModuleType(url, classLoader, requireDescriptors);
- if (AppModule.class.isAssignableFrom(moduleType) ||
EjbModule.class.isAssignableFrom(moduleType) ||
PersistenceModule.class.isAssignableFrom(moduleType) ||
ConnectorModule.class.isAssignableFrom(moduleType) ||
ClientModule.class.isAssignableFrom(moduleType)) {
+ if (AppModule.class.isAssignableFrom(moduleType) ||
+ EjbModule.class.isAssignableFrom(moduleType) ||
+ PersistenceModule.class.isAssignableFrom(moduleType) ||
+ ConnectorModule.class.isAssignableFrom(moduleType) ||
+ ClientModule.class.isAssignableFrom(moduleType)) {
final URL archive = toFileUrl(url);
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java?rev=1488967&r1=1488966&r2=1488967&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
Mon Jun 3 11:52:40 2013
@@ -57,6 +57,7 @@ import java.util.Set;
* @version $Rev$ $Date$
*/
public class NewLoaderLogic {
+
private static final Logger logger = DeploymentLoader.logger;
public static final String DEFAULT_EXCLUSIONS_ALIAS = "default-list";
public static final String ADDITIONAL_EXCLUDES =
SystemInstance.get().getOptions().get("openejb.additional.exclude", (String)
null);
@@ -101,35 +102,40 @@ public class NewLoaderLogic {
iterator.remove();
// If we haven't yet reached an entry point, just keep going
- if (!start.accept(element.getClassName())) continue;
+ if (!start.accept(element.getClassName())) {
+ continue;
+ }
// We found an entry point.
// Fast-forward past this class
- while (iterator.hasNext() &&
element.getClassName().equals(iterator.next().getClassName()))
iterator.remove();
+ while (iterator.hasNext() &&
element.getClassName().equals(iterator.next().getClassName())) {
+ iterator.remove();
+ }
// Ok, we have iterated up to the calling user class, so stop
now
break;
}
}
-
// Now iterate till we find an END point
// We don't want any of the classes after that
{
final Filter end = Filters.packages(
- "junit.",
- "org.junit.",
- "org.testng.",
- "org.apache.maven.",
- "org.eclipse.",
- "com.intellij.",
- "org.scalatest."
- );
+ "junit.",
+ "org.junit.",
+ "org.testng.",
+ "org.apache.maven.",
+ "org.eclipse.",
+ "com.intellij.",
+ "org.scalatest."
+ );
// Everything between here and the end is part
// of the call chain in which we are interested
for (final StackTraceElement element : elements) {
- if (end.accept(element.getClassName())) break;
+ if (end.accept(element.getClassName())) {
+ break;
+ }
callers.add(element.getClassName());
}
@@ -141,18 +147,19 @@ public class NewLoaderLogic {
// Finally filter out everything that we definitely don't want
{
final Filter unwanted = Filters.packages(
- "java.",
- "javax.",
- "sun.reflect."
- );
+ "java.",
+ "javax.",
+ "sun.reflect."
+ );
final Iterator<String> classes = callers.iterator();
while (classes.hasNext()) {
- if (unwanted.accept(classes.next())) classes.remove();
+ if (unwanted.accept(classes.next())) {
+ classes.remove();
+ }
}
}
-
return callers;
}
@@ -267,10 +274,11 @@ public class NewLoaderLogic {
return excludes.toArray(new String[excludes.size()]);
}
+ @SuppressWarnings("unchecked")
public static Filter getFilter() {
if (filter == null) {
final List<Filter> filters = new ArrayList<Filter>();
- for (String s : getExclusions()) {
+ for (final String s : getExclusions()) {
filters.add(new PrefixOrStringFilter(s));
}
@@ -323,9 +331,7 @@ public class NewLoaderLogic {
}
if (DEFAULT_EXCLUSIONS_ALIAS.equals(value)) {
- for (String v : readDefaultExclusions()) {
- list.add(v);
- }
+ Collections.addAll(list, readDefaultExclusions());
} else {
list.add(sanitize(value));
}
@@ -360,7 +366,7 @@ public class NewLoaderLogic {
return location;
}
-
+ @SuppressWarnings("UseOfSystemOutOrSystemErr")
public static void _loadFromClasspath(final FileUtils base, final
List<URL> jarList, final ClassLoader classLoader) {
final PerformanceTimer timer = new PerformanceTimer();
@@ -373,7 +379,6 @@ public class NewLoaderLogic {
final PatternFilter classpathExclude = new
PatternFilter(options.get(DeploymentFilterable.CLASSPATH_EXCLUDE, ""));
final Filter classpathFilter = new
ExcludeIncludeFilter(classpathInclude, classpathExclude);
-
final PatternFilter packageInclude = new
PatternFilter(options.get(DeploymentFilterable.PACKAGE_INCLUDE, ".*"));
final PatternFilter packageExclude = new
PatternFilter(options.get(DeploymentFilterable.PACKAGE_EXCLUDE, ""));
@@ -419,24 +424,25 @@ public class NewLoaderLogic {
timer.event("exclude system urls");
urlSet = URLs.cullSystemJars(urlSet);
-
timer.event("classpath filter");
final UrlSet beforeFiltering = urlSet;
urlSet = urlSet.filter(classpathFilter);
-
// If the user filtered out too much, that's a problem
if (urlSet.size() == 0) {
- final String message = String.format("Classpath
Include/Exclude resulted in zero URLs. There were %s possible URLs before
filtering and 0 after: include=\"%s\", exclude=\"%s\"", beforeFiltering.size(),
include, exclude);
+ final String message = String.format("Classpath
Include/Exclude resulted in zero URLs. There were %s possible URLs before
filtering and 0 after: include=\"%s\", exclude=\"%s\"",
+ beforeFiltering.size(),
+ include,
+ exclude);
logger.error(message);
logger.info("Eligible Classpath before filtering:");
for (final URL url : beforeFiltering) {
logger.info(String.format(" %s", url.toExternalForm()));
}
-// throw new IllegalStateException(message);
+ // throw new IllegalStateException(message);
}
@@ -452,8 +458,7 @@ public class NewLoaderLogic {
}
- DeploymentsResolver.processUrls(urlSet.getUrls(), classLoader,
EnumSet.allOf(RequireDescriptors.class), base, jarList);
-
+ DeploymentsResolver.processUrls("NewLoaderLogic1",
urlSet.getUrls(), classLoader, EnumSet.allOf(RequireDescriptors.class), base,
jarList);
timer.event("package filter");
@@ -462,46 +467,46 @@ public class NewLoaderLogic {
timer.event("process urls");
// we should exclude system apps before and apply user properties
after
-// if (filterSystemApps){
-// urlSet =
urlSet.exclude(".*/openejb-[^/]+(.(jar|ear|war)(!/)?|/target/(test-)?classes/?)");
-// }
+ // if (filterSystemApps){
+ // urlSet =
urlSet.exclude(".*/openejb-[^/]+(.(jar|ear|war)(!/)?|/target/(test-)?classes/?)");
+ // }
final List<URL> urls = urlSet.getUrls();
final int size = urls.size();
-// if (size == 0) {
-// logger.warning("No classpath URLs matched. Current
settings: " + CLASSPATH_EXCLUDE + "='" + exclude + "', " + CLASSPATH_INCLUDE +
"='" + include + "'");
-// return;
-// } else if (size == 0 && (!filterDescriptors &&
prefiltered.getUrls().size() == 0)) {
-// return;
-// } else if (size < 20) {
-// logger.debug("Inspecting classpath for applications: " +
urls.size() + " urls.");
-// } else {
-// // Has the user allowed some module types to be discoverable
via scraping?
-// boolean willScrape = requireDescriptors.size() <
RequireDescriptors.values().length;
-//
-// if (size < 50 && willScrape) {
-// logger.info("Inspecting classpath for applications: " +
urls.size() + " urls. Consider adjusting your exclude/include. Current
settings: " + CLASSPATH_EXCLUDE + "='" + exclude + "', " + CLASSPATH_INCLUDE +
"='" + include + "'");
-// } else if (willScrape) {
-// logger.warning("Inspecting classpath for applications: "
+ urls.size() + " urls.");
-// logger.warning("ADJUST THE EXCLUDE/INCLUDE!!!. Current
settings: " + CLASSPATH_EXCLUDE + "='" + exclude + "', " + CLASSPATH_INCLUDE +
"='" + include + "'");
-// }
-// }
+ // if (size == 0) {
+ // logger.warning("No classpath URLs matched.
Current settings: " + CLASSPATH_EXCLUDE + "='" + exclude + "', " +
CLASSPATH_INCLUDE + "='" + include + "'");
+ // return;
+ // } else if (size == 0 && (!filterDescriptors &&
prefiltered.getUrls().size() == 0)) {
+ // return;
+ // } else if (size < 20) {
+ // logger.debug("Inspecting classpath for
applications: " + urls.size() + " urls.");
+ // } else {
+ // // Has the user allowed some module types to be
discoverable via scraping?
+ // boolean willScrape = requireDescriptors.size() <
RequireDescriptors.values().length;
+ //
+ // if (size < 50 && willScrape) {
+ // logger.info("Inspecting classpath for
applications: " + urls.size() + " urls. Consider adjusting your
exclude/include. Current settings: " + CLASSPATH_EXCLUDE + "='" + exclude +
"', " + CLASSPATH_INCLUDE + "='" + include + "'");
+ // } else if (willScrape) {
+ // logger.warning("Inspecting classpath for
applications: " + urls.size() + " urls.");
+ // logger.warning("ADJUST THE
EXCLUDE/INCLUDE!!!. Current settings: " + CLASSPATH_EXCLUDE + "='" + exclude +
"', " + CLASSPATH_INCLUDE + "='" + include + "'");
+ // }
+ // }
final long begin = System.currentTimeMillis();
- DeploymentsResolver.processUrls(urls, classLoader,
requireDescriptors, base, jarList);
+ DeploymentsResolver.processUrls("NewLoaderLogic2", urls,
classLoader, requireDescriptors, base, jarList);
final long end = System.currentTimeMillis();
final long time = end - begin;
timer.stop(System.out);
final UrlSet unchecked = new UrlSet();
-// if (!filterDescriptors){
-// unchecked = prefiltered.exclude(urlSet);
-// if (filterSystemApps){
-// unchecked =
unchecked.exclude(".*/openejb-[^/]+(.(jar|ear|war)(./)?|/target/classes/?)");
-// }
- DeploymentsResolver.processUrls(unchecked.getUrls(), classLoader,
EnumSet.allOf(RequireDescriptors.class), base, jarList);
-// }
+ // if (!filterDescriptors){
+ // unchecked = prefiltered.exclude(urlSet);
+ // if (filterSystemApps){
+ // unchecked =
unchecked.exclude(".*/openejb-[^/]+(.(jar|ear|war)(./)?|/target/classes/?)");
+ // }
+ DeploymentsResolver.processUrls("NewLoaderLogic3",
unchecked.getUrls(), classLoader, EnumSet.allOf(RequireDescriptors.class),
base, jarList);
+ // }
if (logger.isDebugEnabled()) {
final int urlCount = urlSet.getUrls().size() +
unchecked.getUrls().size();
@@ -514,7 +519,9 @@ public class NewLoaderLogic {
}
}
- if (urls.size() == 0) return;
+ if (urls.size() == 0) {
+ return;
+ }
if (time < 1000) {
logger.debug("Searched " + urls.size() + " classpath urls in "
+ time + " milliseconds. Average " + (time / urls.size()) + " milliseconds per
url.");
@@ -522,10 +529,26 @@ public class NewLoaderLogic {
logger.info("Searched " + urls.size() + " classpath urls in "
+ time + " milliseconds. Average " + (time / urls.size()) + " milliseconds per
url.");
} else if (time < 10000) {
logger.warning("Searched " + urls.size() + " classpath urls in
" + time + " milliseconds. Average " + (time / urls.size()) + " milliseconds
per url.");
- logger.warning("Consider adjusting your " +
DeploymentFilterable.CLASSPATH_EXCLUDE + " and " +
DeploymentFilterable.CLASSPATH_INCLUDE + " settings. Current settings:
exclude='" + exclude + "', include='" + include + "'");
+ logger.warning("Consider adjusting your " +
+ DeploymentFilterable.CLASSPATH_EXCLUDE +
+ " and " +
+ DeploymentFilterable.CLASSPATH_INCLUDE +
+ " settings. Current settings: exclude='" +
+ exclude +
+ "', include='" +
+ include +
+ "'");
} else {
logger.fatal("Searched " + urls.size() + " classpath urls in "
+ time + " milliseconds. Average " + (time / urls.size()) + " milliseconds per
url. TOO LONG!");
- logger.fatal("ADJUST THE EXCLUDE/INCLUDE!!!. Current
settings: " + DeploymentFilterable.CLASSPATH_EXCLUDE + "='" + exclude + "', " +
DeploymentFilterable.CLASSPATH_INCLUDE + "='" + include + "'");
+ logger.fatal("ADJUST THE EXCLUDE/INCLUDE!!!. Current
settings: " +
+ DeploymentFilterable.CLASSPATH_EXCLUDE +
+ "='" +
+ exclude +
+ "', " +
+ DeploymentFilterable.CLASSPATH_INCLUDE +
+ "='" +
+ include +
+ "'");
final List<String> list = new ArrayList<String>();
for (final URL url : urls) {
list.add(url.toExternalForm());
@@ -543,6 +566,7 @@ public class NewLoaderLogic {
}
private static class PrefixOrStringFilter extends PrefixFilter {
+
protected final String simplePrefix;
public PrefixOrStringFilter(final String s) {
@@ -557,7 +581,7 @@ public class NewLoaderLogic {
@Override
public boolean accept(final String name) {
return super.accept(name)
- || (name.endsWith(".jar") && name.substring(0,
name.length() - ".jar".length()).equals(simplePrefix));
+ || (name.endsWith(".jar") && name.substring(0,
name.length() - ".jar".length()).equals(simplePrefix));
}
}
}
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/PerformanceTimer.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/PerformanceTimer.java?rev=1488967&r1=1488966&r2=1488967&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/PerformanceTimer.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/PerformanceTimer.java
Mon Jun 3 11:52:40 2013
@@ -16,14 +16,12 @@
*/
package org.apache.openejb.util;
-import org.apache.openejb.config.DeploymentsResolver;
-
import java.io.PrintStream;
import java.util.concurrent.TimeUnit;
/**
-* @version $Rev$ $Date$
-*/
+ * @version $Rev$ $Date$
+ */
public class PerformanceTimer {
protected Start start;
@@ -33,39 +31,44 @@ public class PerformanceTimer {
event = start = new Start();
}
- public void event(String event) {
+ public void event(final String event) {
this.event = new Event(this.event, event);
}
- public void stop(PrintStream out) {
- Event event = new Event(this.event, "stop");
+ public void stop(final PrintStream out) {
+ final Event event = new Event(this.event, "stop");
this.event.stop(event, out);
start.stop(event, out);
}
private class Event {
+
protected final long start = System.nanoTime();
private final Event previous;
private final String description;
- private Event(Event previous, String description) {
+ private Event(final Event previous, final String description) {
this.previous = previous;
this.description = description;
}
- public void stop(Event next, PrintStream out) {
- if (previous != PerformanceTimer.this.start) previous.stop(this,
out);
+ public void stop(final Event next, final PrintStream out) {
+ if (previous != PerformanceTimer.this.start) {
+ previous.stop(this, out);
+ }
out.printf("%s %s", TimeUnit.NANOSECONDS.toMillis(next.start -
this.start), this.description);
out.println();
}
}
+
private class Start extends Event {
+
private Start() {
super(null, "start");
}
@Override
- public void stop(Event next, PrintStream out) {
+ public void stop(final Event next, final PrintStream out) {
out.printf("%s %s", TimeUnit.NANOSECONDS.toMillis(next.start -
this.start), "total");
out.println();
}