in container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java [210:530]
public static boolean shouldSkip(final String input) {
String name = input;
if (name == null) { // can happen with rest servlet definition or errors
return false;
}
for (final String prefix : FORCED_SKIP) {
if (name.startsWith(prefix)) {
return true;
}
}
for (final String prefix : FORCED_LOAD) {
if (name.startsWith(prefix)) {
return false;
}
}
if (name.startsWith("openejb.shade.")) {
name = name.substring("openejb.shade.".length());
}
if (name.startsWith("java.")) {
return true;
}
if (name.startsWith("jakarta.faces.")) {
return false;
}
if (name.startsWith("jakarta.mail.")) {
return false;
}
if (name.startsWith("javax.") || name.startsWith("jakarta.")) {
return isInServer(name);
}
if (name.startsWith("sun.")) {
return isInJvm(name);
}
// can be provided in the webapp
if (name.startsWith("jakarta.servlet.jsp.jstl")) {
return false;
}
if (name.startsWith("org.")) {
final String org = name.substring("org.".length());
if (org.startsWith("apache.")) {
final String apache = org.substring("apache.".length());
// the following block is classes which enrich webapp classloader
if (apache.startsWith("webbeans.jsf")) {
return false;
}
if (apache.startsWith("tomee.mojarra.")) {
return false;
}
// here we find server classes
if (apache.startsWith("bval.")) {
return true;
}
if (apache.startsWith("openjpa.")) {
return true;
}
if (apache.startsWith("xbean.")) {
return !apache.substring("xbean.".length()).startsWith("spring");
}
if (apache.startsWith("geronimo.")) {
return true;
}
if (apache.startsWith("coyote.")) {
return true;
}
if (apache.startsWith("webbeans.")) {
return true;
}
if (apache.startsWith("log4j.") && SKIP_LOG4J) {
return true;
}
if (apache.startsWith("catalina.")) {
return true;
}
if (apache.startsWith("jasper.")) {
return true;
}
if (apache.startsWith("tomcat.")) {
return true;
}
if (apache.startsWith("el.")) {
return true;
}
// if (apache.startsWith("jsp")) return true; // precompiled jsp have to be loaded from the webapp
if (apache.startsWith("naming.")) {
return true;
}
if (apache.startsWith("taglibs.standard.")) {
return true;
}
if (apache.startsWith("openejb.")) { // skip all excepted webapp enrichment artifacts
return !isWebAppEnrichment(apache.substring("openejb.".length()));
}
if (apache.startsWith("commons.")) {
final String commons = apache.substring("commons.".length());
// don't stop on commons package since we don't bring all commons
if (commons.startsWith("beanutils.")) {
return isInServer(name);
}
if (commons.startsWith("cli.")) {
return true;
}
if (commons.startsWith("codec.")) {
return true;
}
if (commons.startsWith("collections.")) {
return true;
}
if (commons.startsWith("dbcp.")) {
return true;
}
if (commons.startsWith("dbcp2.")) {
return true;
}
if (commons.startsWith("digester.")) {
return true;
}
if (commons.startsWith("jocl.")) {
return true;
}
if (commons.startsWith("lang.")) { // openjpa
return true;
}
if (commons.startsWith("lang3.")) { // us
return true;
}
if (commons.startsWith("logging.")) {
return false;
}
if (commons.startsWith("pool.")) {
return true;
}
if (commons.startsWith("pool2.")) {
return true;
}
if (commons.startsWith("net.") && SKIP_COMMONS_NET) {
return true;
}
return false;
}
if (SKIP_MYFACES && apache.startsWith("myfaces.")) {
// we bring only myfaces-impl (+api but that's javax)
// mainly inspired from a comparison with tomahawk packages
final String myfaces = name.substring("myfaces.".length());
if (myfaces.startsWith("shared.")) {
return true;
}
if (myfaces.startsWith("ee.")) {
return true;
}
if (myfaces.startsWith("lifecycle.")) {
return true;
}
if (myfaces.startsWith("context.")) {
return true;
}
if (myfaces.startsWith("logging.")) {
return true;
}
// tomahawk uses component.html package
if (myfaces.startsWith("component.visit.") || myfaces.equals("component.ComponentResourceContainer")) {
return true;
}
if (myfaces.startsWith("application.")) {
return true;
}
if (myfaces.startsWith("config.")) {
return true;
}
if (myfaces.startsWith("event.")) {
return true;
}
if (myfaces.startsWith("resource.")) {
return true;
}
if (myfaces.startsWith("el.")) {
return true;
}
if (myfaces.startsWith("spi.")) {
return true;
}
if (myfaces.startsWith("convert.")) {
return true;
}
if (myfaces.startsWith("debug.")) {
return true;
}
if (myfaces.startsWith("util.")) {
return true;
}
if (myfaces.startsWith("view.")) {
return true;
}
if (myfaces.equals("convert.ConverterUtils")) {
return true;
}
if (myfaces.startsWith("renderkit.")) {
final String renderkit = myfaces.substring("renderkit.".length());
if (renderkit.startsWith("html.Html")) {
return true;
}
final char firstNextletter = renderkit.charAt(0);
if (Character.isUpperCase(firstNextletter)) {
return true;
}
return false;
}
if (myfaces.startsWith("taglib.")) {
final String taglib = myfaces.substring("taglib.".length());
if (taglib.startsWith("html.Html")) {
return true;
}
if (taglib.startsWith("core.")) {
return true;
}
return false;
}
if (myfaces.startsWith("webapp.")) {
final String webapp = myfaces.substring("webapp.".length());
if (webapp.startsWith("Faces")) {
return true;
}
if (webapp.startsWith("Jsp")) {
return true;
}
if (webapp.startsWith("Startup")) {
return true;
}
if (webapp.equals("AbstractFacesInitializer")) {
return true;
}
if (webapp.equals("MyFacesServlet")) {
return true;
}
if (webapp.equals("ManagedBeanDestroyerListener")) {
return true;
}
if (webapp.equals("WebConfigParamsLogger")) {
return true;
}
return false;
}
return false;
}
if (apache.startsWith("activemq.")) {
return SKIP_JMS && isInServer(name);
}
return false;
}
// other org packages
if (org.startsWith("hsqldb.") && SKIP_HSQLDB) {
return true;
}
if (org.startsWith("codehaus.swizzle.")) {
final String swizzle = org.substring("codehaus.swizzle.".length());
if (swizzle.startsWith("stream.")) {
return true;
}
if (swizzle.startsWith("rss.")) {
return true;
}
if (swizzle.startsWith("Grep.class") || swizzle.startsWith("Lexer.class")) {
return true;
}
return false;
}
if (org.startsWith("w3c.dom.") || org.startsWith("xml.sax.")) {
return isInJvm(name);
}
if (org.startsWith("eclipse.jdt.")) {
return true;
}
// let an app use its own slf4j impl (so its own api too)
// if (org.startsWith("slf4j")) return true;
return false;
}
// other packages
if (name.startsWith("com.")) {
final String sub = name.substring("com.".length());
if (sub.startsWith("sun.")) {
return !name.startsWith("sun.mail.") && isInJvm(name);
}
if (sub.startsWith("oracle.")) {
return true;
}
}
if (name.startsWith("jdk.")) {
return true;
}
if (name.startsWith("serp.bytecode.")) {
return true;
}
return false;
}