From 79c83a718484e6acd426903e0d60d5e2c55a15c5 Mon Sep 17 00:00:00 2001 From: Hugues Malphettes Date: Sun, 20 Jun 2010 03:08:00 +0000 Subject: [PATCH] more code in progress to support multiple instances of jetty git-svn-id: svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk@2031 7e9141cc-0065-0410-87d8-b60c137991c4 --- .../osgi/boot/JettyBootstrapActivator.java | 30 +++++++++---------- .../serverfactory/ServerInstanceWrapper.java | 8 +++++ .../webapp/WebappRegistrationHelper.java | 15 +++++++++- 3 files changed, 37 insertions(+), 16 deletions(-) diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/JettyBootstrapActivator.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/JettyBootstrapActivator.java index af121d0ce03..69d1f8aa189 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/JettyBootstrapActivator.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/JettyBootstrapActivator.java @@ -156,21 +156,21 @@ public class JettyBootstrapActivator implements BundleActivator _registeredServer = null; } } - if (_jettyServerFactoryService != null) - { - try - { - _jettyServerFactoryService.unregister(); - } - catch (IllegalArgumentException ill) - { - // already unregistered. - } - finally - { - _jettyServerFactoryService = null; - } - } +// if (_jettyServerFactoryService != null) +// { +// try +// { +// _jettyServerFactoryService.unregister(); +// } +// catch (IllegalArgumentException ill) +// { +// // already unregistered. +// } +// finally +// { +// _jettyServerFactoryService = null; +// } +// } } finally diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/serverfactory/ServerInstanceWrapper.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/serverfactory/ServerInstanceWrapper.java index b1bd0b6ff6e..f6fe430c8b5 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/serverfactory/ServerInstanceWrapper.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/serverfactory/ServerInstanceWrapper.java @@ -107,6 +107,14 @@ public class ServerInstanceWrapper { { return _deploymentManager; } + + /** + * @return The collection of context handlers + */ + public ContextHandlerCollection getContextHandlerCollection() + { + return _ctxtHandler; + } public void start(Server server, Dictionary props) diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/WebappRegistrationHelper.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/WebappRegistrationHelper.java index cc83564c397..db66fb9b71f 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/WebappRegistrationHelper.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/WebappRegistrationHelper.java @@ -41,6 +41,7 @@ import org.eclipse.jetty.osgi.boot.JettyBootstrapActivator; import org.eclipse.jetty.osgi.boot.OSGiAppProvider; import org.eclipse.jetty.osgi.boot.OSGiWebappConstants; import org.eclipse.jetty.osgi.boot.internal.jsp.TldLocatableURLClassloader; +import org.eclipse.jetty.osgi.boot.internal.serverfactory.ServerInstanceWrapper; import org.eclipse.jetty.osgi.boot.utils.BundleClassLoaderHelper; import org.eclipse.jetty.osgi.boot.utils.BundleFileLocatorHelper; import org.eclipse.jetty.osgi.boot.utils.WebappRegistrationCustomizer; @@ -126,7 +127,7 @@ public class WebappRegistrationHelper * webapp classloader. It is in fact the _libExtClassLoader with a trick to * let the TldScanner find the jars where the tld files are. */ - private URLClassLoader _commonParentClassLoaderForWebapps; + private ClassLoader _commonParentClassLoaderForWebapps; private DeploymentManager _deploymentManager; @@ -138,6 +139,14 @@ public class WebappRegistrationHelper staticInit(); } + public WebappRegistrationHelper(ServerInstanceWrapper wrapper, Server server) + { + _server = server; + _commonParentClassLoaderForWebapps = wrapper.getParentClassLoaderForWebapps(); + _ctxtHandler = wrapper.getContextHandlerCollection(); + staticInit(); + } + // Inject the customizing classes that might be defined in fragment bundles. private static synchronized void staticInit() { @@ -370,6 +379,10 @@ public class WebappRegistrationHelper */ private void init() { + if (_ctxtHandler != null) + { + return; + } // Get the context handler _ctxtHandler = (ContextHandlerCollection)_server.getChildHandlerByClass(ContextHandlerCollection.class);