diff options
author | Greg Wilkins | 2014-09-10 04:38:18 +0000 |
---|---|---|
committer | Greg Wilkins | 2014-09-10 04:38:18 +0000 |
commit | 5011993ddfd5388af11a9f3b93756229c257bb19 (patch) | |
tree | 565794e7adfb8108262bb5ee1915a983384ccdcf /jetty-osgi/jetty-osgi-boot | |
parent | 07ec47adfac619308f71047808380322c8b46352 (diff) | |
parent | c80f5561392d951c36ad922146228378ecb27e43 (diff) | |
download | org.eclipse.jetty.project-5011993ddfd5388af11a9f3b93756229c257bb19.tar.gz org.eclipse.jetty.project-5011993ddfd5388af11a9f3b93756229c257bb19.tar.xz org.eclipse.jetty.project-5011993ddfd5388af11a9f3b93756229c257bb19.zip |
Merge remote-tracking branch 'origin/master' into jetty-http2
Conflicts:
VERSION.txt
aggregates/jetty-all/pom.xml
apache-jsp/pom.xml
apache-jstl/pom.xml
examples/async-rest/async-rest-jar/pom.xml
examples/async-rest/async-rest-webapp/pom.xml
examples/async-rest/pom.xml
examples/embedded/pom.xml
examples/pom.xml
jetty-alpn/jetty-alpn-client/pom.xml
jetty-alpn/jetty-alpn-server/pom.xml
jetty-alpn/pom.xml
jetty-annotations/pom.xml
jetty-ant/pom.xml
jetty-client/pom.xml
jetty-continuation/pom.xml
jetty-deploy/pom.xml
jetty-distribution/pom.xml
jetty-fcgi/fcgi-client/pom.xml
jetty-fcgi/fcgi-server/pom.xml
jetty-fcgi/pom.xml
jetty-http-spi/pom.xml
jetty-http/pom.xml
jetty-io/pom.xml
jetty-jaas/pom.xml
jetty-jaspi/pom.xml
jetty-jmx/pom.xml
jetty-jndi/pom.xml
jetty-jsp/pom.xml
jetty-jspc-maven-plugin/pom.xml
jetty-maven-plugin/pom.xml
jetty-monitor/pom.xml
jetty-nosql/pom.xml
jetty-osgi/jetty-osgi-alpn/pom.xml
jetty-osgi/jetty-osgi-boot-jsp/pom.xml
jetty-osgi/jetty-osgi-boot-warurl/pom.xml
jetty-osgi/jetty-osgi-boot/pom.xml
jetty-osgi/jetty-osgi-httpservice/pom.xml
jetty-osgi/jetty-osgi-npn/pom.xml
jetty-osgi/pom.xml
jetty-osgi/test-jetty-osgi-context/pom.xml
jetty-osgi/test-jetty-osgi-webapp/pom.xml
jetty-osgi/test-jetty-osgi/pom.xml
jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithJsp.java
jetty-plus/pom.xml
jetty-proxy/pom.xml
jetty-quickstart/pom.xml
jetty-rewrite/pom.xml
jetty-runner/pom.xml
jetty-security/pom.xml
jetty-server/pom.xml
jetty-servlet/pom.xml
jetty-servlets/pom.xml
jetty-spdy/pom.xml
jetty-spdy/spdy-alpn-tests/pom.xml
jetty-spdy/spdy-client/pom.xml
jetty-spdy/spdy-core/pom.xml
jetty-spdy/spdy-example-webapp/pom.xml
jetty-spdy/spdy-http-client-transport/pom.xml
jetty-spdy/spdy-http-common/pom.xml
jetty-spdy/spdy-http-server/pom.xml
jetty-spdy/spdy-npn-tests/pom.xml
jetty-spdy/spdy-server/pom.xml
jetty-spring/pom.xml
jetty-start/pom.xml
jetty-util-ajax/pom.xml
jetty-util/pom.xml
jetty-webapp/pom.xml
jetty-websocket/javax-websocket-client-impl/pom.xml
jetty-websocket/javax-websocket-server-impl/pom.xml
jetty-websocket/pom.xml
jetty-websocket/websocket-api/pom.xml
jetty-websocket/websocket-client/pom.xml
jetty-websocket/websocket-common/pom.xml
jetty-websocket/websocket-server/pom.xml
jetty-websocket/websocket-servlet/pom.xml
jetty-xml/pom.xml
pom.xml
tests/pom.xml
tests/test-continuation/pom.xml
tests/test-integration/pom.xml
tests/test-loginservice/pom.xml
tests/test-quickstart/pom.xml
tests/test-sessions/pom.xml
tests/test-sessions/test-hash-sessions/pom.xml
tests/test-sessions/test-jdbc-sessions/pom.xml
tests/test-sessions/test-sessions-common/pom.xml
tests/test-webapps/pom.xml
tests/test-webapps/test-jaas-webapp/pom.xml
tests/test-webapps/test-jetty-webapp/pom.xml
tests/test-webapps/test-jndi-webapp/pom.xml
tests/test-webapps/test-mock-resources/pom.xml
tests/test-webapps/test-proxy-webapp/pom.xml
tests/test-webapps/test-servlet-spec/pom.xml
tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml
tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml
tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml
tests/test-webapps/test-webapp-rfc2616/pom.xml
Diffstat (limited to 'jetty-osgi/jetty-osgi-boot')
8 files changed, 190 insertions, 103 deletions
diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml index a5b8453e7c..bdbdb65915 100644 --- a/jetty-osgi/jetty-osgi-boot/pom.xml +++ b/jetty-osgi/jetty-osgi-boot/pom.xml @@ -112,8 +112,9 @@ javax.servlet.http;version="[3.1,3.2)", javax.transaction;version="1.1.0";resolution:=optional, javax.transaction.xa;version="1.1.0";resolution:=optional, + org.eclipse.jetty.annotations;version="9.1";resolution:=optional, + org.eclipse.jetty.plus.webapp;version="9.1";resolution:=optional, org.objectweb.asm;version=4;resolution:=optional, - org.eclipse.jetty.annotations;version="9.0.0";resolution:=optional, org.osgi.framework, org.osgi.service.cm;version="1.2.0", org.osgi.service.packageadmin, diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationConfiguration.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationConfiguration.java index 14c796d213..7ceca896c1 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationConfiguration.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationConfiguration.java @@ -67,6 +67,10 @@ public class AnnotationConfiguration extends org.eclipse.jetty.annotations.Annot } + public AnnotationConfiguration() + { + System.err.println("Constructed osgi.AnnotationConfiguration"); + } /** * This parser scans the bundles using the OSGi APIs instead of assuming a jar. */ diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractContextProvider.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractContextProvider.java index 89621a2284..726aa694d9 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractContextProvider.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractContextProvider.java @@ -143,63 +143,12 @@ public abstract class AbstractContextProvider extends AbstractLifeCycle implemen { //apply the contextFile, creating the ContextHandler, the DeploymentManager will register it in the ContextHandlerCollection Resource res = null; - - //try to find the context file in the filesystem - if (_contextFile.startsWith("/")) - res = getFileAsResource(_contextFile); - - //try to find it relative to jetty home - if (res == null) - { - //See if the specific server we are related to has jetty.home set - String jettyHome = (String)getServerInstanceWrapper().getServer().getAttribute(OSGiServerConstants.JETTY_HOME); - if (jettyHome != null) - res = getFileAsResource(jettyHome, _contextFile); - - //try to see if a SystemProperty for jetty.home is set - if (res == null) - { - jettyHome = System.getProperty(OSGiServerConstants.JETTY_HOME); - - if (jettyHome != null) - { - if (jettyHome.startsWith("\"") || jettyHome.startsWith("'")) - jettyHome = jettyHome.substring(1); - if (jettyHome.endsWith("\"") || (jettyHome.endsWith("'"))) - jettyHome = jettyHome.substring(0,jettyHome.length()-1); - - res = getFileAsResource(jettyHome, _contextFile); - LOG.debug("jetty home context file: {}",res); - } - } - } - - //try to find it relative to an override location that has been specified - if (res == null) - { - if (bundleOverrideLocation != null) - { - try(Resource location=Resource.newResource(bundleOverrideLocation)) - { - res=location.addPath(_contextFile); - } - LOG.debug("Bundle override location context file: {}",res); - } - } - - //try to find it relative to the bundle in which it is being deployed - if (res == null) - { - if (_contextFile.startsWith("./")) - _contextFile = _contextFile.substring(1); - - if (!_contextFile.startsWith("/")) - _contextFile = "/" + _contextFile; - - URL contextURL = _bundle.getEntry(_contextFile); - if (contextURL != null) - res = Resource.newResource(contextURL); - } + + String jettyHome = (String)getServerInstanceWrapper().getServer().getAttribute(OSGiServerConstants.JETTY_HOME); + if (jettyHome == null) + jettyHome = System.getProperty(OSGiServerConstants.JETTY_HOME); + + res = findFile(_contextFile, jettyHome, bundleOverrideLocation, _bundle); //apply the context xml file, either to an existing ContextHandler, or letting the //it create the ContextHandler as necessary @@ -266,38 +215,6 @@ public abstract class AbstractContextProvider extends AbstractLifeCycle implemen } - - private Resource getFileAsResource (String dir, String file) - { - Resource r = null; - try - { - File asFile = new File (dir, file); - if (asFile.exists()) - r = Resource.newResource(asFile); - } - catch (Exception e) - { - r = null; - } - return r; - } - - private Resource getFileAsResource (String file) - { - Resource r = null; - try - { - File asFile = new File (file); - if (asFile.exists()) - r = Resource.newResource(asFile); - } - catch (Exception e) - { - r = null; - } - return r; - } } /* ------------------------------------------------------------ */ diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractOSGiApp.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractOSGiApp.java index 185d0f1ae6..7ffc9b4c66 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractOSGiApp.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractOSGiApp.java @@ -18,6 +18,8 @@ package org.eclipse.jetty.osgi.boot; +import java.io.File; +import java.net.URL; import java.util.Dictionary; import java.util.Hashtable; @@ -25,6 +27,9 @@ import org.eclipse.jetty.deploy.App; import org.eclipse.jetty.deploy.AppProvider; import org.eclipse.jetty.deploy.DeploymentManager; import org.eclipse.jetty.server.handler.ContextHandler; +import org.eclipse.jetty.util.log.Log; +import org.eclipse.jetty.util.log.Logger; +import org.eclipse.jetty.util.resource.Resource; import org.osgi.framework.Bundle; import org.osgi.framework.FrameworkUtil; import org.osgi.framework.ServiceRegistration; @@ -39,6 +44,8 @@ import org.osgi.framework.ServiceRegistration; */ public abstract class AbstractOSGiApp extends App { + private static final Logger LOG = Log.getLogger(AbstractOSGiApp.class); + protected Bundle _bundle; protected Dictionary _properties; protected ServiceRegistration _registration; @@ -118,4 +125,91 @@ public abstract class AbstractOSGiApp extends App _registration = null; } + protected Resource getFileAsResource (String dir, String file) + { + Resource r = null; + try + { + File asFile = new File (dir, file); + if (asFile.exists()) + r = Resource.newResource(asFile); + } + catch (Exception e) + { + r = null; + } + return r; + } + + protected Resource getFileAsResource (String file) + { + Resource r = null; + try + { + File asFile = new File (file); + if (asFile.exists()) + r = Resource.newResource(asFile); + } + catch (Exception e) + { + r = null; + } + return r; + } + + protected Resource findFile (String fileName, String jettyHome, String bundleOverrideLocation, Bundle containingBundle) + { + Resource res = null; + + //try to find the context file in the filesystem + if (fileName.startsWith("/")) + res = getFileAsResource(fileName); + if (res != null) + return res; + + //try to find it relative to jetty home + if (jettyHome != null) + { + if (jettyHome.startsWith("\"") || jettyHome.startsWith("'")) + jettyHome = jettyHome.substring(1); + if (jettyHome.endsWith("\"") || (jettyHome.endsWith("'"))) + jettyHome = jettyHome.substring(0,jettyHome.length()-1); + + res = getFileAsResource(jettyHome, fileName); + } + if (res != null) + return res; + + + //try to find it relative to an override location that has been specified + if (bundleOverrideLocation != null) + { + try(Resource location=Resource.newResource(bundleOverrideLocation)) + { + res=location.addPath(fileName); + } + catch (Exception e) + { + LOG.warn(e); + } + } + if (res != null) + return res; + + //try to find it relative to the bundle in which it is being deployed + if (containingBundle != null) + { + if (fileName.startsWith("./")) + fileName = fileName.substring(1); + + if (!fileName.startsWith("/")) + fileName = "/" + fileName; + + URL entry = _bundle.getEntry(fileName); + if (entry != null) + res = Resource.newResource(entry); + } + + return res; + } } diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractWebAppProvider.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractWebAppProvider.java index 6d31ebd03c..849a00c55c 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractWebAppProvider.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractWebAppProvider.java @@ -20,10 +20,12 @@ package org.eclipse.jetty.osgi.boot; import java.io.File; import java.net.URL; +import java.util.ArrayList; import java.util.Arrays; import java.util.Dictionary; import java.util.Enumeration; import java.util.HashMap; +import java.util.List; import org.eclipse.jetty.deploy.App; import org.eclipse.jetty.deploy.AppProvider; @@ -32,7 +34,9 @@ import org.eclipse.jetty.osgi.boot.internal.serverfactory.ServerInstanceWrapper; import org.eclipse.jetty.osgi.boot.internal.webapp.OSGiWebappClassLoader; import org.eclipse.jetty.osgi.boot.utils.BundleFileLocatorHelperFactory; import org.eclipse.jetty.server.handler.ContextHandler; +import org.eclipse.jetty.util.ArrayUtil; import org.eclipse.jetty.util.component.AbstractLifeCycle; +import org.eclipse.jetty.util.Loader; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.resource.JarResource; @@ -73,17 +77,23 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement public static String[] getDefaultConfigurations () { + List<String> configs = ArrayUtil.asMutableList(__defaultConfigurations); if (annotationsAvailable()) { - String[] configs = new String[__defaultConfigurations.length+1]; - System.arraycopy(__defaultConfigurations, 0, configs, 0, 4); - configs[4] = "org.eclipse.jetty.osgi.annotations.AnnotationConfiguration"; - configs[5] = __defaultConfigurations[__defaultConfigurations.length-1]; - return configs; + //add before JettyWebXmlConfiguration + int i = configs.indexOf("org.eclipse.jetty.webapp.JettyWebXmlConfiguration"); + configs.add(i, "org.eclipse.jetty.osgi.annotations.AnnotationConfiguration"); + } + + if (jndiAvailable()) + { + //add in EnvConfiguration and PlusConfiguration just after FragmentConfiguration + int i = configs.indexOf("org.eclipse.jetty.webapp.FragmentConfiguration"); + configs.add(++i, "org.eclipse.jetty.plus.webapp.EnvConfiguration"); + configs.add(++i, "org.eclipse.jetty.plus.webapp.PlusConfiguration"); } - - return Arrays.copyOf(__defaultConfigurations, __defaultConfigurations.length); + return configs.toArray(new String[configs.size()]); } private static boolean annotationsAvailable() @@ -91,7 +101,7 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement boolean result = false; try { - Thread.currentThread().getContextClassLoader().loadClass("org.eclipse.jetty.annotations.AnnotationConfiguration"); + Loader.loadClass(AbstractWebAppProvider.class,"org.eclipse.jetty.annotations.AnnotationConfiguration"); result = true; LOG.debug("Annotation support detected"); } @@ -104,6 +114,23 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement return result; } + + private static boolean jndiAvailable() + { + try + { + Loader.loadClass(AbstractWebAppProvider.class, "org.eclipse.jetty.plus.jndi.Resource"); + Loader.loadClass(AbstractWebAppProvider.class, "org.eclipse.jetty.plus.webapp.EnvConfiguration"); + LOG.debug("JNDI support detected"); + return true; + } + catch (ClassNotFoundException e) + { + LOG.debug("No JNDI support detected"); + return false; + } + } + private boolean _parentLoaderPriority; @@ -328,7 +355,7 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement // apply any META-INF/context.xml file that is found to configure // the webapp first - applyMetaInfContextXml(rootResource); + applyMetaInfContextXml(rootResource, overrideBundleInstallLocation); _webApp.setAttribute(OSGiWebappConstants.REQUIRE_TLD_BUNDLE, requireTldBundles); @@ -384,7 +411,7 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement } - protected void applyMetaInfContextXml(Resource rootResource) + protected void applyMetaInfContextXml(Resource rootResource, String overrideBundleInstallLocation) throws Exception { if (_bundle == null) return; @@ -398,8 +425,31 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement Thread.currentThread().setContextClassLoader(_webApp.getClassLoader()); //TODO replace this with getting the InputStream so we don't cache in URL - // find if there is a META-INF/context.xml file + //Try looking for a context xml file in META-INF with a specific name URL contextXmlUrl = _bundle.getEntry("/META-INF/jetty-webapp-context.xml"); + + if (contextXmlUrl == null) + { + //Didn't find specially named file, try looking for a property that names a context xml file to use + if (_properties != null) + { + String tmp = (String)_properties.get(OSGiWebappConstants.JETTY_CONTEXT_FILE_PATH); + if (tmp != null) + { + String[] filenames = tmp.split(",;"); + if (filenames != null && filenames.length > 0) + { + String filename = filenames[0]; //should only be 1 filename in this usage + String jettyHome = (String)getServerInstanceWrapper().getServer().getAttribute(OSGiServerConstants.JETTY_HOME); + if (jettyHome == null) + jettyHome = System.getProperty(OSGiServerConstants.JETTY_HOME); + Resource res = findFile(filename, jettyHome, overrideBundleInstallLocation, _bundle); + if (res != null) + contextXmlUrl = res.getURL(); + } + } + } + } if (contextXmlUrl == null) return; // Apply it just as the standard jetty ContextProvider would do diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/BundleContextProvider.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/BundleContextProvider.java index 1cd720b601..65466f506a 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/BundleContextProvider.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/BundleContextProvider.java @@ -106,6 +106,13 @@ public class BundleContextProvider extends AbstractContextProvider implements Bu if (bundle == null) return false; + //If the bundle defines a Web-ContextPath then its probably a webapp and the BundleWebAppProvider should deploy it + if ((String)bundle.getHeaders().get(OSGiWebappConstants.RFC66_WEB_CONTEXTPATH) != null) + { + if (LOG.isDebugEnabled()) LOG.debug("BundleContextProvider ignoring bundle {} with {} set", bundle.getSymbolicName(), OSGiWebappConstants.RFC66_WEB_CONTEXTPATH); + return false; + } + String contextFiles = (String)bundle.getHeaders().get(OSGiWebappConstants.JETTY_CONTEXT_FILE_PATH); if (contextFiles == null) contextFiles = (String)bundle.getHeaders().get(OSGiWebappConstants.SERVICE_PROP_CONTEXT_FILE_PATH); @@ -113,6 +120,7 @@ public class BundleContextProvider extends AbstractContextProvider implements Bu if (contextFiles == null) return false; + boolean added = false; //bundle defines JETTY_CONTEXT_FILE_PATH header, //a comma separated list of context xml files that each define a ContextHandler diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiWebInfConfiguration.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiWebInfConfiguration.java index 69a7ce8cdb..4482640bcf 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiWebInfConfiguration.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiWebInfConfiguration.java @@ -50,7 +50,14 @@ public class OSGiWebInfConfiguration extends WebInfConfiguration { private static final Logger LOG = Log.getLogger(WebInfConfiguration.class); - + /** + * Comma separated list of symbolic names of bundles that contain tlds that should be considered + * as on the container classpath + */ + public static final String SYS_PROP_TLD_BUNDLES = "org.eclipse.jetty.osgi.tldbundles"; + /** + * Regex of symbolic names of bundles that should be considered to be on the container classpath + */ public static final String CONTAINER_BUNDLE_PATTERN = "org.eclipse.jetty.server.webapp.containerIncludeBundlePattern"; public static final String FRAGMENT_AND_REQUIRED_BUNDLES = "org.eclipse.jetty.osgi.fragmentAndRequiredBundles"; public static final String FRAGMENT_AND_REQUIRED_RESOURCES = "org.eclipse.jetty.osgi.fragmentAndRequiredResources"; @@ -84,7 +91,7 @@ public class OSGiWebInfConfiguration extends WebInfConfiguration String tmp = (String)context.getAttribute(CONTAINER_BUNDLE_PATTERN); Pattern pattern = (tmp==null?null:Pattern.compile(tmp)); List<String> names = new ArrayList<String>(); - tmp = System.getProperty("org.eclipse.jetty.osgi.tldbundles"); + tmp = System.getProperty(SYS_PROP_TLD_BUNDLES); if (tmp != null) { StringTokenizer tokenizer = new StringTokenizer(tmp, ", \n\r\t", false); diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/OSGiWebappClassLoader.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/OSGiWebappClassLoader.java index 94a06f62f4..62d9f0b341 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/OSGiWebappClassLoader.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/OSGiWebappClassLoader.java @@ -97,6 +97,12 @@ public class OSGiWebappClassLoader extends WebAppClassLoader implements BundleRe + @Override + public Class<?> loadClass(String name) throws ClassNotFoundException + { + return super.loadClass(name); + } + /* ------------------------------------------------------------ */ /** * Returns the <code>Bundle</code> that defined this web-application. |