r9575 - helma/helma/trunk/src/helma/main

[email protected]
Newsgroups gmane.comp.java.helma.cvs
Message-ID <20090405123801.D18B73D0D6@mia>
Author: hannes
Date: 2009-04-05 14:38:01 +0200 (Sun, 05 Apr 2009)
New Revision: 9575

Modified:
   helma/helma/trunk/src/helma/main/JettyServer.java
   helma/helma/trunk/src/helma/main/Server.java
   helma/helma/trunk/src/helma/main/ServerConfig.java
Log:
- Replace custom Server.InetEndpoint class with java.net.InetSocketAddress
- Remove code in Server.checkPort() that calls InetAddress.getLocalHost() in case no interface is defined.

This should help fixing bogus error message when default interface is not up.

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

Modified: helma/helma/trunk/src/helma/main/JettyServer.java
===================================================================
--- helma/helma/trunk/src/helma/main/JettyServer.java	2009-04-04 20:06:19 UTC (rev 9574)
+++ helma/helma/trunk/src/helma/main/JettyServer.java	2009-04-05 12:38:01 UTC (rev 9575)
@@ -25,6 +25,7 @@
 
 import java.util.StringTokenizer;
 import java.net.URL;
+import java.net.InetSocketAddress;
 import java.io.IOException;
 
 public class JettyServer {
@@ -49,19 +50,19 @@
         openListeners();
     }
 
-    private JettyServer(InetEndpoint webPort, InetEndpoint ajpPort, Server server)
+    private JettyServer(InetSocketAddress webPort, InetSocketAddress ajpPort, Server server)
             throws IOException {
         http = new HttpServer();
 
         // create embedded web server if port is specified
         if (webPort != null) {
-            http.addListener(new InetAddrPort(webPort.getInetAddress(), webPort.getPort()));
+            http.addListener(new InetAddrPort(webPort.getAddress(), webPort.getPort()));
         }
 
         // activate the ajp13-listener
         if (ajpPort != null) {
             // create AJP13Listener
-            ajp13 = new AJP13Listener(new InetAddrPort(ajpPort.getInetAddress(), ajpPort.getPort()));
+            ajp13 = new AJP13Listener(new InetAddrPort(ajpPort.getAddress(), ajpPort.getPort()));
             ajp13.setHttpServer(http);
 
             String jkallow = server.sysProps.getProperty("allowAJP13");

Modified: helma/helma/trunk/src/helma/main/Server.java
===================================================================
--- helma/helma/trunk/src/helma/main/Server.java	2009-04-04 20:06:19 UTC (rev 9574)
+++ helma/helma/trunk/src/helma/main/Server.java	2009-04-05 12:38:01 UTC (rev 9575)
@@ -29,9 +29,7 @@
 import java.rmi.registry.*;
 import java.rmi.server.*;
 import java.util.*;
-import java.net.UnknownHostException;
-import java.net.ServerSocket;
-import java.net.InetAddress;
+import java.net.*;
 
 import helma.util.ResourceProperties;
 
@@ -69,10 +67,10 @@
     private Thread mainThread;
 
     // server ports
-    InetEndpoint rmiPort = null;
-    InetEndpoint xmlrpcPort = null;
-    InetEndpoint websrvPort = null;
-    InetEndpoint ajp13Port = null;
+    InetSocketAddress rmiPort = null;
+    InetSocketAddress xmlrpcPort = null;
+    InetSocketAddress websrvPort = null;
+    InetSocketAddress ajp13Port = null;
 
     // Jetty configuration file
     File configFile = null;
@@ -200,7 +198,7 @@
         // check if there's a property setting for those ports not specified via command line
         if (!config.hasWebsrvPort() && sysProps.getProperty("webPort") != null) {
             try {
-                config.setWebsrvPort(new InetEndpoint(sysProps.getProperty("webPort")));
+                config.setWebsrvPort(getInetSocketAddress(sysProps.getProperty("webPort")));
             } catch (Exception portx) {
                 throw new Exception("Error parsing web server port property from server.properties: " + portx);
             }
@@ -208,7 +206,7 @@
 
         if (!config.hasAjp13Port() && sysProps.getProperty("ajp13Port") != null) {
             try {
-                config.setAjp13Port(new InetEndpoint(sysProps.getProperty("ajp13Port")));
+                config.setAjp13Port(getInetSocketAddress(sysProps.getProperty("ajp13Port")));
             } catch (Exception portx) {
                 throw new Exception("Error parsing AJP1.3 server port property from server.properties: " + portx);
             }
@@ -216,7 +214,7 @@
 
         if (!config.hasRmiPort() && sysProps.getProperty("rmiPort") != null) {
             try {
-                config.setRmiPort(new InetEndpoint(sysProps.getProperty("rmiPort")));
+                config.setRmiPort(getInetSocketAddress(sysProps.getProperty("rmiPort")));
             } catch (Exception portx) {
                 throw new Exception("Error parsing RMI server port property from server.properties: " + portx);
             }
@@ -224,7 +222,7 @@
 
         if (!config.hasXmlrpcPort() && sysProps.getProperty("xmlrpcPort") != null) {
             try {
-                config.setXmlrpcPort(new InetEndpoint(sysProps.getProperty("xmlrpcPort")));
+                config.setXmlrpcPort(getInetSocketAddress(sysProps.getProperty("xmlrpcPort")));
             } catch (Exception portx) {
                 throw new Exception("Error parsing XML-RPC server port property from server.properties: " + portx);
             }
@@ -247,25 +245,25 @@
                 config.setPropFile(new File(args[++i]));
             } else if (args[i].equals("-p") && ((i + 1) < args.length)) {
                 try {
-                    config.setRmiPort(new InetEndpoint(args[++i]));
+                    config.setRmiPort(getInetSocketAddress(args[++i]));
                 } catch (Exception portx) {
                     throw new Exception("Error parsing RMI server port property: " + portx);
                 }
             } else if (args[i].equals("-x") && ((i + 1) < args.length)) {
                 try {
-                    config.setXmlrpcPort(new InetEndpoint(args[++i]));
+                    config.setXmlrpcPort(getInetSocketAddress(args[++i]));
                 } catch (Exception portx) {
                     throw new Exception("Error parsing XML-RPC server port property: " + portx);
                 }
             } else if (args[i].equals("-w") && ((i + 1) < args.length)) {
                 try {
-                    config.setWebsrvPort(new InetEndpoint(args[++i]));
+                    config.setWebsrvPort(getInetSocketAddress(args[++i]));
                 } catch (Exception portx) {
                     throw new Exception("Error parsing web server port property: " + portx);
                 }
             } else if (args[i].equals("-jk") && ((i + 1) < args.length)) {
                 try {
-                    config.setAjp13Port(new InetEndpoint(args[++i]));
+                    config.setAjp13Port(getInetSocketAddress(args[++i]));
                 } catch (Exception portx) {
                     throw new Exception("Error parsing AJP1.3 server port property: " + portx);
                 }
@@ -387,24 +385,14 @@
     /**
      *  Check whether a server port is available by trying to open a server socket
      */
-    private static void checkPort(InetEndpoint addrPort) throws Exception {
-        InetAddress addr = addrPort.getInetAddress();
-        int port = addrPort.getPort();
-        if (addr == null) {
-            try {
-                addr = InetAddress.getLocalHost();
-            } catch (UnknownHostException unknown) {
-                System.err.println("Error checking running server: localhost is unknown.");
-                return;
-            }
-        }
+    private static void checkPort(InetSocketAddress endpoint) throws IOException {
         try {
-            ServerSocket sock = new ServerSocket(port, 1, addr);
+            ServerSocket sock = new ServerSocket();
+            sock.bind(endpoint);
             sock.close();
-        } catch (Exception x) {
-            throw new Exception("Error: Server already running on this port: " + addrPort);
+        } catch (IOException x) {
+            throw new IOException("Error binding to " + endpoint + ": " + x.getMessage());
         }
-        return;
     }
 
 
@@ -581,8 +569,8 @@
                     XmlRpc.setDriver(xmlparser);
                 }
 
-                if (xmlrpcPort.getInetAddress() != null) {
-                    xmlrpc = new WebServer(xmlrpcPort.getPort(), xmlrpcPort.getInetAddress());
+                if (xmlrpcPort.getAddress() != null) {
+                    xmlrpc = new WebServer(xmlrpcPort.getPort(), xmlrpcPort.getAddress());
                 } else {
                     xmlrpc = new WebServer(xmlrpcPort.getPort());
                 }
@@ -854,42 +842,24 @@
     public void stopApplication(String name) {
         appManager.stop(name);
     }
-}
 
-class InetEndpoint {
-    
-    InetAddress addr;
-    int port;
-
-    public InetEndpoint(String inetAddrPort)
-            throws java.net.UnknownHostException {
+    private static InetSocketAddress getInetSocketAddress(String inetAddrPort)
+            throws UnknownHostException {
+        InetAddress addr = null;
         int c = inetAddrPort.indexOf(':');
         if (c >= 0) {
-            String addr = inetAddrPort.substring(0, c);
-            if (addr.indexOf('/') > 0)
-                addr = addr.substring(addr.indexOf('/') + 1);
+            String a = inetAddrPort.substring(0, c);
+            if (a.indexOf('/') > 0)
+                a = a.substring(a.indexOf('/') + 1);
             inetAddrPort = inetAddrPort.substring(c + 1);
 
-            if (addr.length() > 0 && !"0.0.0.0".equals(addr)) {
-                this.addr = InetAddress.getByName(addr);
+            if (a.length() > 0 && !"0.0.0.0".equals(a)) {
+                addr = InetAddress.getByName(a);
             }
         }
-
-        this.port = Integer.parseInt(inetAddrPort);
+        int port = Integer.parseInt(inetAddrPort);
+        return new InetSocketAddress(addr, port);
     }
-
-    public InetAddress getInetAddress() {
-        return addr;
-    }
-
-    public int getPort() {
-        return port;
-    }
-
-    public String toString() {
-        return addr == null ? "0.0.0.0:" + port  : addr + ":" + port;
-    }
-
 }
 
 

Modified: helma/helma/trunk/src/helma/main/ServerConfig.java
===================================================================
--- helma/helma/trunk/src/helma/main/ServerConfig.java	2009-04-04 20:06:19 UTC (rev 9574)
+++ helma/helma/trunk/src/helma/main/ServerConfig.java	2009-04-05 12:38:01 UTC (rev 9575)
@@ -17,6 +17,7 @@
 package helma.main;
 
 import java.io.File;
+import java.net.InetSocketAddress;
 
 /**
  * Utility class for server config
@@ -24,13 +25,13 @@
  
 public class ServerConfig {
 
-    private InetEndpoint rmiPort    = null;
-    private InetEndpoint xmlrpcPort = null;
-    private InetEndpoint websrvPort = null;
-    private InetEndpoint ajp13Port  = null;
-    private File         propFile   = null;
-    private File         homeDir    = null;
-    private File         configFile = null;
+    private InetSocketAddress rmiPort    = null;
+    private InetSocketAddress xmlrpcPort = null;
+    private InetSocketAddress websrvPort = null;
+    private InetSocketAddress ajp13Port  = null;
+    private File propFile   = null;
+    private File homeDir    = null;
+    private File configFile = null;
 
     public boolean hasPropFile() {
         return (propFile != null);
@@ -56,35 +57,35 @@
         return (ajp13Port != null);
     }
 
-    public InetEndpoint getRmiPort() {
+    public InetSocketAddress getRmiPort() {
         return rmiPort;
     }
 
-    public void setRmiPort(InetEndpoint rmiPort) {
+    public void setRmiPort(InetSocketAddress rmiPort) {
         this.rmiPort = rmiPort;
     }
 
-    public InetEndpoint getXmlrpcPort() {
+    public InetSocketAddress getXmlrpcPort() {
         return xmlrpcPort;
     }
 
-    public void setXmlrpcPort(InetEndpoint xmlrpcPort) {
+    public void setXmlrpcPort(InetSocketAddress xmlrpcPort) {
         this.xmlrpcPort = xmlrpcPort;
     }
 
-    public InetEndpoint getWebsrvPort() {
+    public InetSocketAddress getWebsrvPort() {
         return websrvPort;
     }
 
-    public void setWebsrvPort(InetEndpoint websrvPort) {
+    public void setWebsrvPort(InetSocketAddress websrvPort) {
         this.websrvPort = websrvPort;
     }
 
-    public InetEndpoint getAjp13Port() {
+    public InetSocketAddress getAjp13Port() {
         return ajp13Port;
     }
 
-    public void setAjp13Port(InetEndpoint ajp13Port) {
+    public void setAjp13Port(InetSocketAddress ajp13Port) {
         this.ajp13Port = ajp13Port;
     }
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.