felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kgil...@apache.org
Subject svn commit: r1423109 - in /felix/trunk/httplite/core/src/main/java/org/apache/felix/httplite: osgi/Activator.java server/Server.java
Date Mon, 17 Dec 2012 19:41:14 GMT
Author: kgilmer
Date: Mon Dec 17 19:41:13 2012
New Revision: 1423109

URL: http://svn.apache.org/viewvc?rev=1423109&view=rev
Log:
Apply Ed Schaller's feature patch to allow host address to be specified in configuration.
 See FELIX-3811 for details.

Modified:
    felix/trunk/httplite/core/src/main/java/org/apache/felix/httplite/osgi/Activator.java
    felix/trunk/httplite/core/src/main/java/org/apache/felix/httplite/server/Server.java

Modified: felix/trunk/httplite/core/src/main/java/org/apache/felix/httplite/osgi/Activator.java
URL: http://svn.apache.org/viewvc/felix/trunk/httplite/core/src/main/java/org/apache/felix/httplite/osgi/Activator.java?rev=1423109&r1=1423108&r2=1423109&view=diff
==============================================================================
--- felix/trunk/httplite/core/src/main/java/org/apache/felix/httplite/osgi/Activator.java
(original)
+++ felix/trunk/httplite/core/src/main/java/org/apache/felix/httplite/osgi/Activator.java
Mon Dec 17 19:41:13 2012
@@ -112,6 +112,8 @@ public class Activator implements Bundle
 
         config.put(Server.CONFIG_PROPERTY_HTTP_PORT,
             context.getProperty(Server.CONFIG_PROPERTY_HTTP_PORT));
+        config.put(Server.CONFIG_PROPERTY_HTTP_HOST,
+            context.getProperty(Server.CONFIG_PROPERTY_HTTP_HOST));
         config.put(Server.CONFIG_PROPERTY_HTTP_ENABLE,
             context.getProperty(Server.CONFIG_PROPERTY_HTTP_ENABLE));
         config.put(Server.CONFIG_PROPERTY_HTTPS_ENABLE,

Modified: felix/trunk/httplite/core/src/main/java/org/apache/felix/httplite/server/Server.java
URL: http://svn.apache.org/viewvc/felix/trunk/httplite/core/src/main/java/org/apache/felix/httplite/server/Server.java?rev=1423109&r1=1423108&r2=1423109&view=diff
==============================================================================
--- felix/trunk/httplite/core/src/main/java/org/apache/felix/httplite/server/Server.java (original)
+++ felix/trunk/httplite/core/src/main/java/org/apache/felix/httplite/server/Server.java Mon
Dec 17 19:41:13 2012
@@ -69,6 +69,10 @@ public class Server
      * The port used for servlets and resources available via HTTP. The default is 8080.
A negative port number has the same effect as setting org.apache.felix.http.enable to false.
      */
     public static final String CONFIG_PROPERTY_HTTP_PORT = "org.osgi.service.http.port";
+    /**
+     * The address of the host interface to bind http to. The default is to bind to all interfaces.
+     */
+    public static final String CONFIG_PROPERTY_HTTP_HOST = "org.apache.felix.http.host";

 
     /**
      * Default HTTP port to listen on.
@@ -94,6 +98,7 @@ public class Server
 
     private String m_hostname;
     private final int m_port;
+    private InetAddress m_bindAddr;
 
     private int m_state;
     private ThreadGate m_shutdownGate;
@@ -119,6 +124,9 @@ public class Server
      *   <li><tt>org.osgi.service.http.port</tt> - the port on which it
listens for connections;
      *       the default is 8080.
      *   </li>   
+     *   <li><tt>org.apache.felix.http.host</tt> - the address of the host
interface which is bound;
+     *       the default is all addresses.
+     *   </li>
      *   <li><tt>org.apache.felix.http.threadpool.limit</tt> - the maximum
number of threads in the
      *       thread pool; the default value is 10.
      *   </li>
@@ -149,6 +157,7 @@ public class Server
 
         // Read in the configured properties or their default values.
         m_port = getConfiguredPort(configMap);
+        m_bindAddr = getConfiguredBindAddr(configMap);
         int threadLimit = (configMap.get(Server.CONFIG_PROPERTY_THREADPOOL_LIMIT_PROP) ==
null) ? DEFAULT_THREADPOOL_LIMIT
             : Integer.parseInt((String) configMap.get(Server.CONFIG_PROPERTY_THREADPOOL_LIMIT_PROP));
         int threadTimeout = (configMap.get(Server.CONFIG_PROPERTY_THREADPOOL_TIMEOUT_PROP)
== null) ? ThreadPool.DEFAULT_THREAD_TIMEOUT
@@ -173,6 +182,27 @@ public class Server
     }
 
     /**
+     * Get the address of the interface the HTTP server listens on based on configuration
map or default value.
+     * 
+     * @param configMap
+     * @return Address of the interface to bind to or null if no interface is specified.
+     */
+    public InetAddress getConfiguredBindAddr(Map configMap)
+    {
+        try
+        {
+            return (configMap.get(Server.CONFIG_PROPERTY_HTTP_HOST) == null) ? null
+                : InetAddress.getByName((String) configMap.get(Server.CONFIG_PROPERTY_HTTP_HOST));
+        }
+        catch(UnknownHostException ex)
+        {
+            m_logger.log(Logger.LOG_ERROR,
+                "Unable to resolve " + configMap.get(Server.CONFIG_PROPERTY_HTTP_HOST) +
" to address of interface to bind to. Binding to all interfaces.", ex);
+	    return null;
+        }
+    }
+
+    /**
      * This method returns the current state of the web server, which is one
      * of the following values:
      * <ul>
@@ -240,7 +270,12 @@ public class Server
         {
             // If inactive, then create server socket, server thread, and
             // set state to active.
-            m_serverSocket = new ServerSocket(m_port);
+            if(m_bindAddr == null)
+                m_serverSocket = new ServerSocket(m_port);
+            else
+                m_serverSocket = new ServerSocket(m_port, 0, m_bindAddr);
+            
+
             m_serverThread = new Thread(new Runnable()
             {
 				public void run()
@@ -404,4 +439,4 @@ public class Server
 	public void setStopping() {		
 		m_stopping  = true;
 	}
-}
\ No newline at end of file
+}



Mime
View raw message