r9431 - helma/helma/trunk/src/helma/main

[email protected]
Newsgroups gmane.comp.java.helma.cvs
Message-ID <[email protected]>
Author: hannes
Date: 2008-12-13 03:53:10 +0100 (Sat, 13 Dec 2008)
New Revision: 9431

Modified:
   helma/helma/trunk/src/helma/main/JettyServer.java
Log:
Be smarter about opening listeners in JettyServer

Details at http://dev.helma.org/trac/helma/changeset/9431

Modified: helma/helma/trunk/src/helma/main/JettyServer.java
===================================================================
--- helma/helma/trunk/src/helma/main/JettyServer.java	2008-12-13 02:36:39 UTC (rev 9430)
+++ helma/helma/trunk/src/helma/main/JettyServer.java	2008-12-13 02:53:10 UTC (rev 9431)
@@ -19,12 +19,12 @@
 import org.mortbay.http.HttpServer;
 import org.mortbay.http.HttpContext;
 import org.mortbay.http.SocketListener;
+import org.mortbay.http.HttpListener;
 import org.mortbay.http.ajp.AJP13Listener;
 import org.mortbay.util.InetAddrPort;
 
 import java.util.StringTokenizer;
 import java.net.URL;
-import java.net.MalformedURLException;
 import java.io.IOException;
 
 public class JettyServer {
@@ -46,6 +46,7 @@
 
     private JettyServer(URL url) throws IOException {
         http = new org.mortbay.jetty.Server(url);
+        openListeners();
     }
 
     private JettyServer(InetEndpoint webPort, InetEndpoint ajpPort, Server server)
@@ -54,13 +55,7 @@
 
         // create embedded web server if port is specified
         if (webPort != null) {
-            // opening the listener here allows us to run on priviledged port 80 under jsvc
-            // even as non-root user, because init() is called with root privileges
-            // while start() will be called with the user we will actually run as
-            InetAddrPort addr = new InetAddrPort(webPort.getInetAddress(), webPort.getPort());
-            SocketListener listener = new SocketListener(addr);
-            listener.open();
-            http.addListener(listener);
+            http.addListener(new InetAddrPort(webPort.getInetAddress(), webPort.getPort()));
         }
 
         // activate the ajp13-listener
@@ -88,6 +83,7 @@
             ajp13.setRemoteServers(jkallowarr);
             server.getLogger().info("Starting AJP13-Listener on port " + (ajpPort));            
         }
+        openListeners();
     }
 
     public HttpServer getHttpServer() {
@@ -119,4 +115,17 @@
     public void destroy() {
         http.destroy();
     }
+
+    private void openListeners() throws IOException {
+        // opening the listener here allows us to run on priviledged port 80 under jsvc
+        // even as non-root user, because init() is called with root privileges
+        // while start() will be called with the user we will actually run as
+        HttpListener[] listeners = http.getListeners();
+        for (int i = 0; i < listeners.length; i++) {
+            if (listeners[i] instanceof SocketListener) {
+                SocketListener listener = (SocketListener) listeners[i];
+                listener.open();
+            }
+        }
+    }
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.