[jboss-cvs] JBoss Messaging SVN: r1617 - in branches/Branch_HTTP_Experiment: docs/examples/http/etc src/etc/server/default/deploy src/main/org/jboss/jms/client/remoting tests/src/org/jboss/test/messaging/jms tests/src/org/jboss/test/messaging/tools/jmx

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Nov 21 22:18:54 EST 2006


Author: ovidiu.feodorov at jboss.com
Date: 2006-11-21 22:18:49 -0500 (Tue, 21 Nov 2006)
New Revision: 1617

Modified:
   branches/Branch_HTTP_Experiment/docs/examples/http/etc/messaging-http-service.xml
   branches/Branch_HTTP_Experiment/src/etc/server/default/deploy/remoting-service.xml
   branches/Branch_HTTP_Experiment/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java
   branches/Branch_HTTP_Experiment/tests/src/org/jboss/test/messaging/jms/RemotingConnectionConfigurationTest.java
   branches/Branch_HTTP_Experiment/tests/src/org/jboss/test/messaging/tools/jmx/ServiceContainer.java
Log:
the HTTP callback period can be configured now on client (system property) and also in the HTTP connector configuration

Modified: branches/Branch_HTTP_Experiment/docs/examples/http/etc/messaging-http-service.xml
===================================================================
--- branches/Branch_HTTP_Experiment/docs/examples/http/etc/messaging-http-service.xml	2006-11-22 02:29:19 UTC (rev 1616)
+++ branches/Branch_HTTP_Experiment/docs/examples/http/etc/messaging-http-service.xml	2006-11-22 03:18:49 UTC (rev 1617)
@@ -30,6 +30,7 @@
                <attribute name="serverBindPort">4458</attribute>
                <attribute name="leasePeriod">20000</attribute>
                <attribute name="callbackStore">org.jboss.remoting.callback.CallbackStore</attribute>
+               <attribute name="callbackPollPeriod" isParam="true">100</attribute>
             </invoker>
             <handlers>
                <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>

Modified: branches/Branch_HTTP_Experiment/src/etc/server/default/deploy/remoting-service.xml
===================================================================
--- branches/Branch_HTTP_Experiment/src/etc/server/default/deploy/remoting-service.xml	2006-11-22 02:29:19 UTC (rev 1616)
+++ branches/Branch_HTTP_Experiment/src/etc/server/default/deploy/remoting-service.xml	2006-11-22 03:18:49 UTC (rev 1617)
@@ -54,6 +54,7 @@
                <attribute name="serverBindPort">4458</attribute>
                <attribute name="leasePeriod">20000</attribute>
                <attribute name="callbackStore">org.jboss.remoting.callback.CallbackStore</attribute>
+               <attribute name="callbackPollPeriod" isParam="true">100</attribute>
             </invoker>
             <handlers>
                <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>

Modified: branches/Branch_HTTP_Experiment/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java
===================================================================
--- branches/Branch_HTTP_Experiment/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java	2006-11-22 02:29:19 UTC (rev 1616)
+++ branches/Branch_HTTP_Experiment/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java	2006-11-22 03:18:49 UTC (rev 1617)
@@ -51,6 +51,7 @@
    // Constants -----------------------------------------------------
 
    public static final String CALLBACK_POLL_PERIOD_DEFAULT = "100";
+
    private static final Logger log = Logger.getLogger(JMSRemotingConnection.class);
 
    // Static --------------------------------------------------------
@@ -125,13 +126,22 @@
       else
       {
          if (log.isTraceEnabled()) log.trace("simulating push callbacks");
+
          HashMap metadata = new HashMap();
 
+         // "jboss.messaging.callback.pollPeriod" system property, if set, has the highest priority ...
          String callbackPollPeriod = System.getProperty("jboss.messaging.callback.pollPeriod");
          if (callbackPollPeriod == null)
          {
-            callbackPollPeriod = CALLBACK_POLL_PERIOD_DEFAULT;
+            // followed by the value configured on the HTTP connector ("callbackPollPeriod") ...
+            callbackPollPeriod = (String)serverLocator.getParameters().get("callbackPollPeriod");
+            if (callbackPollPeriod == null)
+            {
+               // followed by the hardcoded value.
+               callbackPollPeriod = CALLBACK_POLL_PERIOD_DEFAULT;
+            }
          }
+
          metadata.put(CallbackPoller.CALLBACK_POLL_PERIOD, callbackPollPeriod);
 
          String reportPollingStatistics =

Modified: branches/Branch_HTTP_Experiment/tests/src/org/jboss/test/messaging/jms/RemotingConnectionConfigurationTest.java
===================================================================
--- branches/Branch_HTTP_Experiment/tests/src/org/jboss/test/messaging/jms/RemotingConnectionConfigurationTest.java	2006-11-22 02:29:19 UTC (rev 1616)
+++ branches/Branch_HTTP_Experiment/tests/src/org/jboss/test/messaging/jms/RemotingConnectionConfigurationTest.java	2006-11-22 03:18:49 UTC (rev 1617)
@@ -39,21 +39,21 @@
 import org.jboss.remoting.transport.PortUtil;
 import org.jboss.test.messaging.MessagingTestCase;
 import org.jboss.test.messaging.tools.ServerManagement;
+import org.jboss.test.messaging.tools.jmx.ServiceContainer;
 
 /**
  *  
  * @author <a href="ron.sigal at jboss.com">Ron Sigal</a>
- * @version $Revision: 1.1 $
- * <p>
- * Copyright Nov 21, 2006
- * </p>
+ * @author <a href="ovidiu at jboss.org">Ovidiu Feodorov</a>
+ *
+ * $Id$
  */
 public class RemotingConnectionConfigurationTest extends MessagingTestCase
 {
    // Constants -----------------------------------------------------
 
    // Static --------------------------------------------------------
-   
+
    // Attributes ----------------------------------------------------
 
    protected ConnectionFactory cf;
@@ -87,9 +87,66 @@
    /**
     * It only makes sense to run remote. Exclude it from "invm-tests" target configuration.
     */
+   public void testDefaultHTTPCallbackPollPeriod() throws Exception
+   {
+      if (!ServerManagement.isRemote())
+      {
+         return;
+      }
+
+      JBossConnection connection = null;
+
+      try
+      {
+         connection = (JBossConnection)cf.createConnection();
+         connection.start();
+
+         ClientConnectionDelegate delegate = (ClientConnectionDelegate)connection.getDelegate();
+         JMSRemotingConnection remotingConnection = delegate.getRemotingConnection();
+         Client client = remotingConnection.getInvokingClient();
+
+         Field field = JMSRemotingConnection.class.getDeclaredField("serverLocator");
+         field.setAccessible(true);
+         InvokerLocator locator = (InvokerLocator)field.get(remotingConnection);
+         String transport = locator.getProtocol();
+
+         if (!"http".equals(transport))
+         {
+            // not interesting
+            return;
+         }
+
+         field = Client.class.getDeclaredField("callbackPollers");
+         field.setAccessible(true);
+         Map callbackPollers = (Map)field.get(client);
+         assertEquals(1, callbackPollers.size());
+
+         CallbackPoller callbackPoller = (CallbackPoller)callbackPollers.values().iterator().next();
+
+         field = CallbackPoller.class.getDeclaredField("pollPeriod");
+         field.setAccessible(true);
+         Long pollPeriod = (Long)field.get(callbackPoller);
+         assertEquals(ServiceContainer.HTTP_CONNECTOR_CALLBACK_POLL_PERIOD, pollPeriod.longValue());
+      }
+      finally
+      {
+         if (connection != null)
+         {
+            connection.close();
+         }
+      }
+   }
+
+
+   /**
+    * It only makes sense to run remote. Exclude it from "invm-tests" target configuration.
+    */
    public void testConnectionConfiguration() throws Exception
    {
-      log.info("entering " + getName());
+      if (!ServerManagement.isRemote())
+      {
+         return;
+      }
 
       JBossConnection connection = null;
 
@@ -100,7 +157,7 @@
 
          String pollPeriod = "654";
          System.setProperty("jboss.messaging.callback.pollPeriod", pollPeriod);
-         
+
          connection = (JBossConnection)cf.createConnection();
          connection.start();
 
@@ -112,7 +169,7 @@
          field.setAccessible(true);
          InvokerLocator locator = (InvokerLocator)field.get(remotingConnection);
          String transport = locator.getProtocol();
-         
+
          if ("socket".equals(transport))
          {
             field = Client.class.getDeclaredField("callbackConnectors");

Modified: branches/Branch_HTTP_Experiment/tests/src/org/jboss/test/messaging/tools/jmx/ServiceContainer.java
===================================================================
--- branches/Branch_HTTP_Experiment/tests/src/org/jboss/test/messaging/tools/jmx/ServiceContainer.java	2006-11-22 02:29:19 UTC (rev 1616)
+++ branches/Branch_HTTP_Experiment/tests/src/org/jboss/test/messaging/tools/jmx/ServiceContainer.java	2006-11-22 03:18:49 UTC (rev 1617)
@@ -124,6 +124,8 @@
    public static String USER_TRANSACTION_JNDI_NAME = "UserTransaction";
    public static String JCA_JMS_CONNECTION_FACTORY_JNDI_NAME = "java:/JCAConnectionFactory";
 
+   public static long HTTP_CONNECTOR_CALLBACK_POLL_PERIOD = 102;
+
    static
    {
       try
@@ -977,6 +979,8 @@
               
       RemotingJMXWrapper mbean;
 
+      // TODO - use remoting-service.xml parameters, not these ...
+
       //String serializationType = config.getSerializationType();
       String serializationType = "jms";
       String transport = config.getRemotingTransport();
@@ -990,9 +994,18 @@
                       "clientLeasePeriod=20000&" +
                       "callbackStore=org.jboss.remoting.callback.BlockingCallbackStore";
 
+      // specific parameters per transport
+
+      if ("http".equals(transport))
+      {
+         params += "&callbackPollPeriod=" + HTTP_CONNECTOR_CALLBACK_POLL_PERIOD;
+      }
+
 //      int freePort = PortUtil.findFreePort(ipAddressOrHostName);
+
       int freePort = 9111;
       String locatorURI = transport + "://" + ipAddressOrHostName + ":" + freePort + params;
+
       log.debug("Using locator uri: " + locatorURI);
 
       InvokerLocator locator = new InvokerLocator(locatorURI);




More information about the jboss-cvs-commits mailing list