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();
         }
     }
 }