[jboss-cvs] JBoss Messaging SVN: r3554 - in trunk: src/main/org/jboss/jms/server and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jan 9 09:01:33 EST 2008


Author: jmesnil
Date: 2008-01-09 09:01:33 -0500 (Wed, 09 Jan 2008)
New Revision: 3554

Modified:
   trunk/src/etc/server/default/deploy/jbm-beans.xml
   trunk/src/etc/server/default/deploy/jbm-configuration.xml
   trunk/src/main/org/jboss/jms/server/Configuration.java
   trunk/src/main/org/jboss/messaging/core/remoting/ServerLocator.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/ClientImpl.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaService.java
   trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/ServerLocatorTest.java
Log:
* timeout used by remoting code for 2-way invocations is configurable in jbm-configuration using the remoting-timeout property

Modified: trunk/src/etc/server/default/deploy/jbm-beans.xml
===================================================================
--- trunk/src/etc/server/default/deploy/jbm-beans.xml	2008-01-09 12:54:05 UTC (rev 3553)
+++ trunk/src/etc/server/default/deploy/jbm-beans.xml	2008-01-09 14:01:33 UTC (rev 3554)
@@ -354,6 +354,16 @@
             <inject bean="Configuration" property="remotingBindAddress"/>
          </parameter>
       </constructor>
+      <property name="parameters">
+         <map class="java.util.HashMap" keyClass="java.lang.String" valueClass="java.lang.String">
+            <entry>
+               <key>timeout</key>
+               <value>
+                 <inject bean="Configuration" property="remotingTimeout" />
+               </value>
+            </entry>
+          </map>
+      </property>
    </bean>
       
    <bean name="ClusterNotifier" class="org.jboss.messaging.core.impl.DefaultClusterNotifier"/>

Modified: trunk/src/etc/server/default/deploy/jbm-configuration.xml
===================================================================
--- trunk/src/etc/server/default/deploy/jbm-configuration.xml	2008-01-09 12:54:05 UTC (rev 3553)
+++ trunk/src/etc/server/default/deploy/jbm-configuration.xml	2008-01-09 14:01:33 UTC (rev 3554)
@@ -74,6 +74,8 @@
       <channel-partition-name>${jboss.partition.name:DefaultPartition}-JMS</channel-partition-name>-->
 
       <remoting-bind-address>5400</remoting-bind-address>
+      <!--  timeout in seconds -->
+      <remoting-timeout>5</remoting-timeout>
 
    </configuration>
 

Modified: trunk/src/main/org/jboss/jms/server/Configuration.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/Configuration.java	2008-01-09 12:54:05 UTC (rev 3553)
+++ trunk/src/main/org/jboss/jms/server/Configuration.java	2008-01-09 14:01:33 UTC (rev 3554)
@@ -107,6 +107,8 @@
 
    private Integer _remotingBindAddress;
 
+   private String _remotingTimeout;
+
    //default confog file location
    private String configurationUrl = "jbm-configuration.xml";
 
@@ -147,6 +149,7 @@
       _channelPartitionName = getString(e, "channel-partition-name", _channelPartitionName);
       _maxConcurrentReplications = getInteger(e, "max-concurrent-replications", _maxConcurrentReplications);
       _remotingBindAddress = getInteger(e, "remoting-bind-address", _remotingBindAddress);
+      _remotingTimeout = getString(e, "remoting-timeout", _remotingTimeout);
       NodeList security = e.getElementsByTagName("default-security-config");
       if (security.getLength() > 0)
       {
@@ -550,13 +553,17 @@
    {
       return _remotingBindAddress;
    }
-
+   
    public void setRemotingBindAddress(Integer remotingBindAddress)
    {
       this._remotingBindAddress = remotingBindAddress;
    }
 
-
+   public String getRemotingTimeout()
+   {
+      return _remotingTimeout;
+   }
+   
    public String getConfigurationUrl()
    {
       return configurationUrl;

Modified: trunk/src/main/org/jboss/messaging/core/remoting/ServerLocator.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/ServerLocator.java	2008-01-09 12:54:05 UTC (rev 3553)
+++ trunk/src/main/org/jboss/messaging/core/remoting/ServerLocator.java	2008-01-09 14:01:33 UTC (rev 3554)
@@ -8,6 +8,11 @@
 
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.Map.Entry;
 
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
@@ -24,6 +29,7 @@
    private TransportType transport;
    private String host;
    private int port;
+   private Map<String, String> parameters = new HashMap<String, String>();
 
    // Static --------------------------------------------------------
 
@@ -51,13 +57,38 @@
       }
       this.host = u.getHost();
       this.port = u.getPort();
+      
+      String query = u.getQuery();
+      if (query != null)
+      {
+         StringTokenizer tok = new StringTokenizer(query, "&");
+         while(tok.hasMoreTokens())
+         {
+            String token = tok.nextToken();
+            int eq = token.indexOf("=");
+            String name = (eq > -1) ? token.substring(0, eq) : token;
+            String value = (eq > -1) ? token.substring(eq + 1) : "";
+            parameters.put(name, value);
+         }
+      }
    }
-
+  
    public ServerLocator(TransportType transport, String host, int port)
    {
+      this(transport, host, port, new HashMap<String, String>());
+   }
+   
+   public ServerLocator(TransportType transport, String host, int port, Map<String, String> parameters)
+   {
+      assert transport != null;
+      assert host != null;
+      assert port > 0;
+      assert parameters != null;
+      
       this.transport = transport;
       this.host = host;
       this.port = port;
+      this.parameters = parameters;
    }
 
    // Public --------------------------------------------------------
@@ -76,51 +107,31 @@
    {
       return port;
    }
-
-   @Override
-   public int hashCode()
+   
+   public Map<String, String> getParameters()
    {
-      final int prime = 31;
-      int result = 1;
-      result = prime * result + ((host == null) ? 0 : host.hashCode());
-      result = prime * result + port;
-      result = prime * result
-            + ((transport == null) ? 0 : transport.hashCode());
-      return result;
+      return parameters;
    }
 
-   @Override
-   public boolean equals(Object obj)
+   public String getURI()
    {
-      if (this == obj)
-         return true;
-      if (obj == null)
-         return false;
-      if (getClass() != obj.getClass())
-         return false;
-      final ServerLocator other = (ServerLocator) obj;
-      if (host == null)
+      String uri = transport + "://" + host + ":" + port + ((parameters.size() != 0) ? "?" : "");
+      if(parameters.size() != 0)
       {
-         if (other.host != null)
-            return false;
-      } else if (!host.equals(other.host))
-         return false;
-      if (port != other.port)
-         return false;
-      if (transport == null)
-      {
-         if (other.transport != null)
-            return false;
-      } else if (!transport.equals(other.transport))
-         return false;
-      return true;
+         Iterator<Entry<String, String>> iter = parameters.entrySet().iterator();
+         while(iter.hasNext())
+         {
+            Entry<String, String> entry = iter.next();
+            uri += entry.getKey() + "=" + entry.getValue();
+            if(iter.hasNext())
+            {
+               uri += "&";
+            }
+         }
+      }
+      return uri;
    }
 
-   public String getURI()
-   {
-      return transport + "://" + host + ":" + port;
-   }
-
    @Override
    public String toString()
    {

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/ClientImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/ClientImpl.java	2008-01-09 12:54:05 UTC (rev 3553)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/ClientImpl.java	2008-01-09 14:01:33 UTC (rev 3554)
@@ -57,6 +57,11 @@
       
       this.connector = connector;
       this.serverLocator = locator;
+      if (locator.getParameters().containsKey("timeout"))
+      {
+         int timeout = Integer.parseInt(locator.getParameters().get("timeout"));
+         setBlockingRequestTimeout(timeout, SECONDS);
+      }
    }
 
    // Public --------------------------------------------------------

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaService.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaService.java	2008-01-09 12:54:05 UTC (rev 3553)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaService.java	2008-01-09 14:01:33 UTC (rev 3554)
@@ -13,9 +13,10 @@
 import static org.jboss.messaging.core.remoting.impl.mina.FilterChainSupport.addMDCFilter;
 
 import java.net.InetSocketAddress;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.mina.common.DefaultIoFilterChainBuilder;
-import org.apache.mina.filter.executor.ExecutorFilter;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 import org.jboss.logging.Logger;
 import org.jboss.messaging.core.remoting.PacketDispatcher;
@@ -36,13 +37,17 @@
 
    // Attributes ----------------------------------------------------
 
-   private final int port;
+   private TransportType transport;
 
    private final String host;
+
+   private final int port;
    
+   private Map<String, String> parameters;
+   
    private NioSocketAcceptor acceptor;
 
-   private TransportType transport;
+   private int blockingRequestTimeout = 5;
 
    // Static --------------------------------------------------------
 
@@ -62,13 +67,21 @@
       this.transport = transport;
       this.host = host;
       this.port = port;
+      this.parameters = new HashMap<String, String>();
    }
 
    // Public --------------------------------------------------------
+   
+   public void setParameters(Map<String, String> parameters)
+   {
+      assert parameters != null;
+      
+      this.parameters = parameters;
+   }
 
    public ServerLocator getLocator()
    {
-      return new ServerLocator(transport, host, port);
+      return new ServerLocator(transport, host, port, parameters);
    }
    
    public void start() throws Exception

Modified: trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/ServerLocatorTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/ServerLocatorTest.java	2008-01-09 12:54:05 UTC (rev 3553)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/ServerLocatorTest.java	2008-01-09 14:01:33 UTC (rev 3554)
@@ -11,6 +11,7 @@
 import static org.jboss.messaging.core.remoting.TransportType.TCP;
 
 import java.net.URISyntaxException;
+import java.util.Map;
 
 import junit.framework.TestCase;
 
@@ -48,8 +49,7 @@
 
    public void testTCPTransport() throws Exception
    {
-      ServerLocator locator = new ServerLocator(
-            "tcp://localhost:9090");
+      ServerLocator locator = new ServerLocator("tcp://localhost:9090");
 
       assertEquals(TCP, locator.getTransport());
       assertEquals("localhost", locator.getHost());
@@ -58,8 +58,7 @@
 
    public void testHTTPTransport() throws Exception
    {
-      ServerLocator locator = new ServerLocator(
-            "http://localhost:9090");
+      ServerLocator locator = new ServerLocator("http://localhost:9090");
 
       assertEquals(HTTP, locator.getTransport());
       assertEquals("localhost", locator.getHost());
@@ -68,14 +67,50 @@
 
    public void testINVMTransport() throws Exception
    {
-      ServerLocator locator = new ServerLocator(
-            "invm://localhost:9090");
+      ServerLocator locator = new ServerLocator("invm://localhost:9090");
 
       assertEquals(INVM, locator.getTransport());
       assertEquals("localhost", locator.getHost());
       assertEquals(9090, locator.getPort());
    }
 
+   public void testValidQuery() throws Exception
+   {
+      ServerLocator locator = new ServerLocator(
+            "invm://localhost:9090?foo=FOO&bar=BAR");
+
+      Map<String, String> parameters = locator.getParameters();
+      assertEquals(2, parameters.size());
+      assertTrue(parameters.containsKey("foo"));
+      assertEquals("FOO", parameters.get("foo"));
+      assertTrue(parameters.containsKey("bar"));
+      assertEquals("BAR", parameters.get("bar"));
+      assertEquals("invm://localhost:9090?foo=FOO&bar=BAR", locator.getURI());
+   }
+
+   public void testEmptyQuery() throws Exception
+   {
+      ServerLocator locator = new ServerLocator("invm://localhost:9090?");
+
+      Map<String, String> parameters = locator.getParameters();
+      assertEquals(0, parameters.size());
+      assertEquals("invm://localhost:9090", locator.getURI());
+   }
+
+   public void testInvalidQuery() throws Exception
+   {
+      try
+      {
+         ServerLocator locator = new ServerLocator(
+               "invm://localhost?this is not a valid query");
+         fail("URISyntaxException");
+      } catch (URISyntaxException e)
+      {
+
+      }
+
+   }
+
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------




More information about the jboss-cvs-commits mailing list