Fixed jetty starting up 2 times
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@818580 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/http/jetty/pom.xml b/http/jetty/pom.xml
index 4458d19..834176f 100644
--- a/http/jetty/pom.xml
+++ b/http/jetty/pom.xml
@@ -44,7 +44,7 @@
<Export-Package>
org.apache.felix.http.api;version=${pom.version},
org.osgi.service.http,
- javax.servlet.*;version=2.5
+ javax.servlet.*;version=2.5;-split-package:=merge-first
</Export-Package>
<Private-Package>
org.apache.felix.http.base.*,
@@ -71,24 +71,24 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>servlet-api-2.5</artifactId>
- <version>6.1.14</version>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
- <version>6.1.14</version>
+ <version>6.1.21</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
- <version>6.1.14</version>
+ <version>6.1.21</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-sslengine</artifactId>
- <version>6.1.14</version>
+ <version>6.1.21</version>
</dependency>
<dependency>
<groupId>${pom.groupId}</groupId>
diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyLogger.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyLogger.java
index 6fd1312..2d72f92 100644
--- a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyLogger.java
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyLogger.java
@@ -17,16 +17,14 @@
package org.apache.felix.http.jetty.internal;
import org.mortbay.log.Logger;
+import org.mortbay.log.Log;
import org.apache.felix.http.base.internal.logger.SystemLogger;
-import java.util.Map;
-import java.util.HashMap;
+import java.io.PrintStream;
+import java.io.ByteArrayOutputStream;
public final class JettyLogger
implements Logger
{
- private final static Map<String, Logger> LOGGERS =
- new HashMap<String, Logger>();
-
private final String name;
private boolean debugEnabled;
@@ -40,15 +38,10 @@
this.name = name;
}
- public org.mortbay.log.Logger getLogger(String name)
+ public Logger getLogger(String name)
{
- Logger logger = LOGGERS.get(name);
- if (logger == null) {
- logger = new JettyLogger(name);
- logger.setDebugEnabled(isDebugEnabled());
- LOGGERS.put(name, logger);
- }
-
+ JettyLogger logger = new JettyLogger(name);
+ logger.setDebugEnabled(this.debugEnabled);
return logger;
}
@@ -107,4 +100,16 @@
return msg;
}
+
+ public static void init()
+ {
+ PrintStream out = System.err;
+
+ try {
+ System.setErr(new PrintStream(new ByteArrayOutputStream()));
+ Log.setLog(new JettyLogger());
+ } finally {
+ System.setErr(out);
+ }
+ }
}
diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
index 3c42978..02f6cc1 100644
--- a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
@@ -28,7 +28,6 @@
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.servlet.*;
import org.mortbay.log.Log;
-import org.mortbay.log.StdErrLog;
import org.apache.felix.http.base.internal.DispatcherServlet;
import org.apache.felix.http.base.internal.logger.SystemLogger;
@@ -59,14 +58,14 @@
public void start()
throws Exception
{
- this.running = true;
- this.thread = new Thread(this, "Jetty HTTP Service");
- this.thread.start();
+ JettyLogger.init();
Properties props = new Properties();
props.put(Constants.SERVICE_PID, PID);
-
this.configServiceReg = this.context.registerService(ManagedService.class.getName(), this, props);
+
+ this.thread = new Thread(this, "Jetty HTTP Service");
+ this.thread.start();
}
public void stop()
@@ -85,12 +84,12 @@
// Do nothing
}
}
-
+
public void updated(Dictionary props)
throws ConfigurationException
{
this.config.update(props);
- if (this.thread != null) {
+ if (this.running && (this.thread != null)) {
this.thread.interrupt();
}
}
@@ -113,16 +112,6 @@
}
}
- protected void initializeJettyLogger()
- {
- Log.setLog(new JettyLogger());
- }
-
- private void destroyJettyLogger()
- {
- Log.setLog(new StdErrLog());
- }
-
private void initializeJetty()
throws Exception
{
@@ -193,10 +182,10 @@
public void run()
{
+ this.running = true;
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
while (this.running) {
- initializeJettyLogger();
startJetty();
synchronized (this) {
@@ -208,7 +197,6 @@
}
stopJetty();
- destroyJettyLogger();
}
}
}