[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting ...

Tom Elrod tom.elrod at jboss.com
Wed Jan 24 11:55:08 EST 2007


  User: telrod  
  Date: 07/01/24 11:55:08

  Modified:    src/main/org/jboss/remoting   InvokerLocator.java
                        ServerInvoker.java
  Log:
  JBREM-687 - allow binding to 0.0.0.0
  
  Revision  Changes    Path
  1.23      +5 -4      JBossRemoting/src/main/org/jboss/remoting/InvokerLocator.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: InvokerLocator.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/InvokerLocator.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -b -r1.22 -r1.23
  --- InvokerLocator.java	25 Jul 2006 19:52:21 -0000	1.22
  +++ InvokerLocator.java	24 Jan 2007 16:55:08 -0000	1.23
  @@ -58,7 +58,7 @@
    *
    * @author <a href="mailto:jhaynie at vocalocity.net">Jeff Haynie</a>
    * @author <a href="mailto:telrod at e2technologies.net">Tom Elrod</a>
  - * @version $Revision: 1.22 $
  + * @version $Revision: 1.23 $
    */
   public class InvokerLocator implements Serializable
   {
  @@ -88,7 +88,7 @@
      /**
       * Indicates should address binding to all network interfaces (i.e. 0.0.0.0)
       */
  -   private static final String ANY = "0.0.0.0";
  +   public static final String ANY = "0.0.0.0";
      /**
       * Constant value for server bind address system property.  Value is 'jboss.bind.address'.
       */
  @@ -271,7 +271,8 @@
      {
         try
         {
  -         if(address == null || ANY.equals(address))
  +         if(address == null)
  +//         if(address == null || ANY.equals(address))
            {
               boolean byHost = true;
               String bindByHost = System.getProperty(BIND_BY_HOST, "True");
  
  
  
  1.62      +65 -14    JBossRemoting/src/main/org/jboss/remoting/ServerInvoker.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ServerInvoker.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/ServerInvoker.java,v
  retrieving revision 1.61
  retrieving revision 1.62
  diff -u -b -r1.61 -r1.62
  --- ServerInvoker.java	17 Jan 2007 05:15:19 -0000	1.61
  +++ ServerInvoker.java	24 Jan 2007 16:55:08 -0000	1.62
  @@ -22,6 +22,7 @@
   
   package org.jboss.remoting;
   
  +import org.jboss.logging.Logger;
   import org.jboss.remoting.callback.Callback;
   import org.jboss.remoting.callback.InvokerCallbackHandler;
   import org.jboss.remoting.callback.ServerInvokerCallbackHandler;
  @@ -31,29 +32,27 @@
   import org.jboss.remoting.security.SSLSocketBuilder;
   import org.jboss.remoting.security.ServerSocketFactoryMBean;
   import org.jboss.remoting.security.ServerSocketFactoryWrapper;
  +import org.jboss.remoting.serialization.ClassLoaderUtility;
   import org.jboss.remoting.socketfactory.CreationListenerServerSocketFactory;
  -import org.jboss.remoting.socketfactory.CreationListenerSocketFactory;
   import org.jboss.remoting.socketfactory.SocketCreationListener;
   import org.jboss.remoting.stream.StreamHandler;
   import org.jboss.remoting.stream.StreamInvocationHandler;
   import org.jboss.remoting.transport.PortUtil;
  -import org.jboss.remoting.serialization.ClassLoaderUtility;
   import org.jboss.util.threadpool.BasicThreadPool;
   import org.jboss.util.threadpool.BlockingMode;
   import org.jboss.util.threadpool.ThreadPool;
   import org.jboss.util.threadpool.ThreadPoolMBean;
  -import org.jboss.logging.Logger;
   
   import javax.management.MBeanServer;
   import javax.management.MBeanServerInvocationHandler;
   import javax.management.MalformedObjectNameException;
   import javax.management.ObjectName;
   import javax.net.ServerSocketFactory;
  -import javax.net.SocketFactory;
  -
   import java.io.IOException;
   import java.lang.reflect.Constructor;
   import java.net.InetAddress;
  +import java.net.MalformedURLException;
  +import java.net.UnknownHostException;
   import java.util.HashMap;
   import java.util.Iterator;
   import java.util.Map;
  @@ -65,11 +64,11 @@
    *
    * @author <a href="mailto:jhaynie at vocalocity.net">Jeff Haynie</a>
    * @author <a href="mailto:tom.elrod at jboss.com">Tom Elrod</a>
  - * @version $Revision: 1.61 $
  + * @version $Revision: 1.62 $
    */
   public abstract class ServerInvoker extends AbstractInvoker implements ServerInvokerMBean
   {
  -   private static final Logger log = Logger.getLogger(ServerInvoker.class);
  +   protected static final Logger log = Logger.getLogger(ServerInvoker.class);
   
      private static boolean trace = log.isTraceEnabled();
   
  @@ -341,6 +340,58 @@
         }
   
         createServerSocketFactory();
  +
  +      // need to check invoker locator to see if need to provide binding address (in the case 0.0.0.0 was used)
  +      locator = validateLocator(locator);
  +   }
  +
  +   private InvokerLocator validateLocator(InvokerLocator locator) throws MalformedURLException
  +   {
  +      InvokerLocator externalLocator = locator;
  +
  +      String host = locator.getHost();
  +      String newHost = null;
  +      if(host == null || InvokerLocator.ANY.equals(host))
  +      {
  +         // now need to get some external bindable address
  +         boolean byHost = true;
  +         String bindByHost = System.getProperty(InvokerLocator.BIND_BY_HOST, "True");
  +         try
  +         {
  +            byHost = Boolean.parseBoolean(bindByHost);
  +         }
  +         catch(Exception e)
  +         {
  +         }
  +         try
  +         {
  +            if(byHost)
  +            {
  +               newHost = InetAddress.getLocalHost().getHostName();
  +            }
  +            else
  +            {
  +               newHost = InetAddress.getLocalHost().getHostAddress();
  +            }
  +         }
  +         catch (UnknownHostException e)
  +         {
  +            log.debug("Could not get host by name or address.", e);
  +         }
  +         if(newHost == null)
  +         {
  +            // now what?  step through network interfaces?
  +            throw new RuntimeException("Can not determine bindable address for locator (" + locator + ")");
  +         }
  +
  +         // now create new locator with new host
  +         String oldLocatorUrl = locator.getLocatorURI();
  +         String newLocatorUrl = oldLocatorUrl.replace(InvokerLocator.ANY, newHost);
  +         externalLocator = new InvokerLocator(newLocatorUrl);
  +
  +      }
  +
  +      return externalLocator;
      }
   
      protected int assignPort() throws IOException
  
  
  



More information about the jboss-cvs-commits mailing list