[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