[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