JBoss Remoting SVN: r5075 - remoting2/branches/2.x/src/main/org/jboss/remoting.
by jboss-remoting-commits@lists.jboss.org
Author: ron.sigal(a)jboss.com
Date: 2009-04-21 01:29:34 -0400 (Tue, 21 Apr 2009)
New Revision: 5075
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/Remoting.java
Log:
JBREM-1121: Added USE_ALL_SOCKET_FACTORY_PARAMS constant.
Modified: remoting2/branches/2.x/src/main/org/jboss/remoting/Remoting.java
===================================================================
--- remoting2/branches/2.x/src/main/org/jboss/remoting/Remoting.java 2009-04-21 05:28:50 UTC (rev 5074)
+++ remoting2/branches/2.x/src/main/org/jboss/remoting/Remoting.java 2009-04-21 05:29:34 UTC (rev 5075)
@@ -106,4 +106,10 @@
* values in configuration map.
*/
public static final String CONFIG_OVERRIDES_LOCATOR = "configOverridesLocator";
+
+ /**
+ * A flag indicating that RemoteClientInvoker should use parameters in the InvokerLocator as
+ * well as the configuration map when creating a SocketFactory.
+ */
+ public static final String USE_ALL_SOCKET_FACTORY_PARAMS = "useAllSocketFactoryParams";
}
15 years, 8 months
JBoss Remoting SVN: r5074 - remoting2/branches/2.x/src/main/org/jboss/remoting.
by jboss-remoting-commits@lists.jboss.org
Author: ron.sigal(a)jboss.com
Date: 2009-04-21 01:28:50 -0400 (Tue, 21 Apr 2009)
New Revision: 5074
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/RemoteClientInvoker.java
Log:
JBREM-1121: Added optional behavior for getting SocketFactory parameters from InvokerLocator.
Modified: remoting2/branches/2.x/src/main/org/jboss/remoting/RemoteClientInvoker.java
===================================================================
--- remoting2/branches/2.x/src/main/org/jboss/remoting/RemoteClientInvoker.java 2009-04-21 02:41:41 UTC (rev 5073)
+++ remoting2/branches/2.x/src/main/org/jboss/remoting/RemoteClientInvoker.java 2009-04-21 05:28:50 UTC (rev 5074)
@@ -25,6 +25,8 @@
import java.util.Map;
+import org.jboss.logging.Logger;
+
/**
* This class extends the MicroRemoteClientInvoker and adds extra
* functionality that can not be included in a J2ME envrionment, such as
@@ -35,6 +37,8 @@
*/
public abstract class RemoteClientInvoker extends MicroRemoteClientInvoker
{
+ private static Logger log = Logger.getLogger(RemoteClientInvoker.class);
+
public RemoteClientInvoker(InvokerLocator locator)
{
super(locator);
@@ -52,6 +56,35 @@
configuration.put(Remoting.SOCKET_FACTORY_CLASS_NAME, socketFactoryClassName);
}
}
- socketFactory = createSocketFactory(configuration);
+ if (useAllParams(getConfiguration()))
+ {
+ // getConfiguration() returns combination of InvokerLocator and configuration parameters.
+ socketFactory = createSocketFactory(getConfiguration());
+ }
+ else
+ {
+ socketFactory = createSocketFactory(configuration);
+ }
}
+
+ protected boolean useAllParams(Map configuration)
+ {
+ boolean result = false;
+ if (configuration != null)
+ {
+ Object o = configuration.get(Remoting.USE_ALL_SOCKET_FACTORY_PARAMS);
+ if (o != null)
+ {
+ if (o instanceof String)
+ {
+ result = Boolean.valueOf((String) o).booleanValue();
+ }
+ else
+ {
+ log.warn("Value of " + Remoting.USE_ALL_SOCKET_FACTORY_PARAMS + " must be a String: " + o);
+ }
+ }
+ }
+ return result;
+ }
}
15 years, 8 months
JBoss Remoting SVN: r5073 - remoting2/branches/2.x/docs/guide/en.
by jboss-remoting-commits@lists.jboss.org
Author: ron.sigal(a)jboss.com
Date: 2009-04-20 22:41:41 -0400 (Mon, 20 Apr 2009)
New Revision: 5073
Modified:
remoting2/branches/2.x/docs/guide/en/chap5.xml
Log:
JBREM-1124: Added discussion of "configOverridesLocator" parameter.
Modified: remoting2/branches/2.x/docs/guide/en/chap5.xml
===================================================================
--- remoting2/branches/2.x/docs/guide/en/chap5.xml 2009-04-19 07:06:12 UTC (rev 5072)
+++ remoting2/branches/2.x/docs/guide/en/chap5.xml 2009-04-21 02:41:41 UTC (rev 5073)
@@ -90,7 +90,7 @@
locatorURI += params;
InvokerLocator locator = new InvokerLocator(locatorURI);
HashMap config = new HashMap();
-config.put(ServerInvoker.TIMEOUT, 120000);
+config.put(ServerInvoker.TIMEOUT, "120000");
config.put(ServerInvoker.SERVER_SOCKET_FACTORY, new MyServerSocketFactory());
Connector connector = new Connector(locator, config);
connector.create();
@@ -119,7 +119,7 @@
locatorURI += params;
InvokerLocator locator = new InvokerLocator(locatorURI);
HashMap config = new HashMap();
-config.put(ServerInvoker.TIMEOUT, 120000);
+config.put(ServerInvoker.TIMEOUT, "120000");
Connector connector = new Connector(locator, config);
connector.create();
ServerInvoker serverInvoker = connector.getServerInvoker();
@@ -144,7 +144,7 @@
above.</para>
<programlisting>HashMap config = new HashMap();
-config.put(ServerInvoker.TIMEOUT, 120000);
+config.put(ServerInvoker.TIMEOUT, "120000");
Connector connector = new Connector(config);
// Set xml configuration element.
@@ -189,7 +189,7 @@
examples above.</para>
<programlisting>HashMap config = new HashMap();
-config.put(ServerInvoker.TIMEOUT, 120000);
+config.put(ServerInvoker.TIMEOUT, "120000");
Connector connector = new Connector(config);
// Create ServerConfiguration object for socket transport
@@ -496,7 +496,7 @@
locatorURI += params;
InvokerLocator locator = new InvokerLocator(locatorURI);
HashMap config = new HashMap();
-config.put(ServerInvoker.TIMEOUT, 360000);
+config.put(ServerInvoker.TIMEOUT, "360000");
config.put(Remoting.CUSTOM_SOCKET_FACTORY, new MySocketFactory());
Client client = new Client(locator, config);
client.connect();</programlisting>
@@ -520,17 +520,51 @@
locatorURI += params;
InvokerLocator locator = new InvokerLocator(locatorURI);
HashMap config = new HashMap();
-config.put(ServerInvoker.TIMEOUT, 360000);
+config.put(ServerInvoker.TIMEOUT, "360000");
Client client = new Client(locator, config);
client.connect();
SocketFactory sf = new MySocketFactory();
ClientInvoker clientInvoker = client.getInvoker();
-clientInvoker.setSocketFactory(sf);</programlisting>
+clientInvoker.setSocketFactory(sf);
+ </programlisting>
<para><emphasis role="bold">Note.</emphasis> The
<classname>Client</classname> creates the client invoker during the call
to <methodname>Client.connect()</methodname>, so this option only works
after that method has been called.</para>
+
+ <para><emphasis role="bold">Note.</emphasis> Preference is given to values
+ in the <classname>InvokerLocator</classname>. For example, in</para>
+
+ <programlisting>String locatorURI = "socket://test.somedomain.com:8084/?clientMaxPoolSize=10";
+InvokerLocator locator = new InvokerLocator(locatorURI);
+HashMap config = new HashMap();
+config.put("clientMaxPoolSize", "20");
+Client client = new Client(locator, config);
+ </programlisting>
+
+ <para>the value of the variable <code>clientMaxPoolSize</code> would be set to 10.
+ As of release 2.5.2, that behavior can be reversed by setting the parameter
+ <code>org.jboss.remoting.Remoting.CONFIG_OVERRIDES_LOCATOR</code> (actual
+ value "configOverridesLocator") to true. As always, in determining the
+ value of the variable <code>configOverridesLocator</code>, preference is
+ given to the <classname>InvokerLocator</classname>. But if the value of
+ "configOverridesLocator" is set to true in the <classname>InvokerLocator</classname>,
+ or if "configOverridesLocator" is absent from the
+ <classname>InvokerLocator</classname> but it is set to "true" in
+ the configuration map, then preference will be given to values in
+ the configuration map. For example, in</para>
+
+ <programlisting>String locatorURI = "socket://test.somedomain.com:8084/?clientMaxPoolSize=10";
+InvokerLocator locator = new InvokerLocator(locatorURI);
+HashMap config = new HashMap();
+config.put("clientMaxPoolSize", "20");
+config.put("configOverridesLocator", "true");
+Client client = new Client(locator, config);
+ </programlisting>
+
+ <para>the value of the variable <code>clientMaxPoolSize</code> would be set to 20.</para>
+
</section>
</section>
@@ -5953,6 +5987,12 @@
<methodname>java.security.AccessController.doPrivileged()</methodname>
calls..</para>
+ <para><emphasis role="bold">CONFIG_OVERRIDES_LOCATOR</emphasis> (actual value is
+ "configOverridesLocator") - key for indicating that parameter values found
+ in the configuration map passed to an <classname>org.jboss.remoting.Client</classname>
+ constructor should take precedence over values found in the
+ <classname>InvokerLocator</classname>.</para>
+
</section>
<section>
15 years, 8 months
JBoss Remoting SVN: r5072 - remoting2/branches/2.x/src/tests/org/jboss/test/remoting/configuration.
by jboss-remoting-commits@lists.jboss.org
Author: ron.sigal(a)jboss.com
Date: 2009-04-19 03:06:12 -0400 (Sun, 19 Apr 2009)
New Revision: 5072
Added:
remoting2/branches/2.x/src/tests/org/jboss/test/remoting/configuration/ConfigOverridesLocatorTestCase.java
Log:
JBREM-1124: New unit tests.
Added: remoting2/branches/2.x/src/tests/org/jboss/test/remoting/configuration/ConfigOverridesLocatorTestCase.java
===================================================================
--- remoting2/branches/2.x/src/tests/org/jboss/test/remoting/configuration/ConfigOverridesLocatorTestCase.java (rev 0)
+++ remoting2/branches/2.x/src/tests/org/jboss/test/remoting/configuration/ConfigOverridesLocatorTestCase.java 2009-04-19 07:06:12 UTC (rev 5072)
@@ -0,0 +1,486 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.remoting.configuration;
+
+import java.net.InetAddress;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.management.MBeanServer;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.jboss.remoting.Client;
+import org.jboss.remoting.InvocationRequest;
+import org.jboss.remoting.InvokerLocator;
+import org.jboss.remoting.Remoting;
+import org.jboss.remoting.ServerInvocationHandler;
+import org.jboss.remoting.ServerInvoker;
+import org.jboss.remoting.callback.Callback;
+import org.jboss.remoting.callback.HandleCallbackException;
+import org.jboss.remoting.callback.InvokerCallbackHandler;
+import org.jboss.remoting.transport.Connector;
+import org.jboss.remoting.transport.PortUtil;
+import org.jboss.remoting.transport.socket.MicroSocketClientInvoker;
+import org.jboss.remoting.transport.socket.SocketServerInvoker;
+
+
+/**
+ * Unit test for JBREM-1124.
+ *
+ * @author <a href="ron.sigal(a)jboss.com">Ron Sigal</a>
+ * @version $Rev$
+ * <p>
+ * Copyright Apr 19, 2009
+ * </p>
+ */
+public class ConfigOverridesLocatorTestCase extends TestCase
+{
+ private static Logger log = Logger.getLogger(ConfigOverridesLocatorTestCase.class);
+
+ private static boolean firstTime = true;
+ private static int LOCATOR_VALUE_CONNECTION_WAIT = 123;
+ private static String LOCATOR_VALUE_CONNECTION_WAIT_STRING = "123";
+ private static int CONFIG_VALUE_CONNECTION_WAIT = 789;
+ private static String CONFIG_VALUE_CONNECTION_WAIT_STRING = "789";
+ private static int LOCATOR_VALUE_BACKLOG = 321;
+ private static String LOCATOR_VALUE_BACKLOG_STRING = "321";
+ private static int CONFIG_VALUE_BACKLOG = 987;
+ private static String CONFIG_VALUE_BACKLOG_STRING = "987";
+
+ protected String host;
+ protected int port;
+ protected String locatorURI;
+ protected InvokerLocator serverLocator;
+ protected Connector connector;
+ protected TestInvocationHandler invocationHandler;
+
+
+ public void setUp() throws Exception
+ {
+ if (firstTime)
+ {
+ firstTime = false;
+ Logger.getLogger("org.jboss.remoting").setLevel(Level.INFO);
+ Logger.getLogger("org.jboss.test.remoting").setLevel(Level.INFO);
+ String pattern = "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n";
+ PatternLayout layout = new PatternLayout(pattern);
+ ConsoleAppender consoleAppender = new ConsoleAppender(layout);
+ Logger.getRootLogger().addAppender(consoleAppender);
+ }
+ }
+
+
+ public void tearDown()
+ {
+ }
+
+
+ public void testDefault() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(false, false, "", "");
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ clientConfig.put(MicroSocketClientInvoker.CONNECTION_WAIT, CONFIG_VALUE_CONNECTION_WAIT_STRING);
+ addExtraClientConfig(clientConfig);
+ log.info("client config: " + clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connection.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ //Test configuration.
+ MicroSocketClientInvoker clientInvoker = (MicroSocketClientInvoker) client.getInvoker();
+ SocketServerInvoker serverInvoker = (SocketServerInvoker) connector.getServerInvoker();
+ assertEquals(LOCATOR_VALUE_CONNECTION_WAIT, clientInvoker.getConnectionWait());
+ assertEquals(LOCATOR_VALUE_BACKLOG, serverInvoker.getBacklog());
+
+ client.disconnect();
+ shutdownServer();
+ log.info(getName() + " PASSES");
+ }
+
+
+ public void testLocatorNoneConfigFalse() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(false, true, "", "false");
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ clientConfig.put(MicroSocketClientInvoker.CONNECTION_WAIT, CONFIG_VALUE_CONNECTION_WAIT_STRING);
+ clientConfig.put(Remoting.CONFIG_OVERRIDES_LOCATOR, "false");
+ addExtraClientConfig(clientConfig);
+ log.info("client config: " + clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connection.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ //Test configuration.
+ MicroSocketClientInvoker clientInvoker = (MicroSocketClientInvoker) client.getInvoker();
+ SocketServerInvoker serverInvoker = (SocketServerInvoker) connector.getServerInvoker();
+ assertEquals(LOCATOR_VALUE_CONNECTION_WAIT, clientInvoker.getConnectionWait());
+ assertEquals(LOCATOR_VALUE_BACKLOG, serverInvoker.getBacklog());
+
+ client.disconnect();
+ shutdownServer();
+ log.info(getName() + " PASSES");
+ }
+
+
+ public void testLocatorNoneConfigTrue() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(false, true, "", "true");
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ clientConfig.put(MicroSocketClientInvoker.CONNECTION_WAIT, CONFIG_VALUE_CONNECTION_WAIT_STRING);
+ clientConfig.put(Remoting.CONFIG_OVERRIDES_LOCATOR, "true");
+ addExtraClientConfig(clientConfig);
+ log.info("client config: " + clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connection.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ //Test configuration.
+ MicroSocketClientInvoker clientInvoker = (MicroSocketClientInvoker) client.getInvoker();
+ SocketServerInvoker serverInvoker = (SocketServerInvoker) connector.getServerInvoker();
+ assertEquals(CONFIG_VALUE_CONNECTION_WAIT, clientInvoker.getConnectionWait());
+ assertEquals(CONFIG_VALUE_BACKLOG, serverInvoker.getBacklog());
+
+ client.disconnect();
+ shutdownServer();
+ log.info(getName() + " PASSES");
+ }
+
+
+ public void testLocatorFalseConfigNone() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(true, false, "false", "");
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ clientConfig.put(MicroSocketClientInvoker.CONNECTION_WAIT, CONFIG_VALUE_CONNECTION_WAIT_STRING);
+ clientConfig.put(Remoting.CONFIG_OVERRIDES_LOCATOR, "true");
+ addExtraClientConfig(clientConfig);
+ log.info("client config: " + clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connection.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ //Test configuration.
+ MicroSocketClientInvoker clientInvoker = (MicroSocketClientInvoker) client.getInvoker();
+ SocketServerInvoker serverInvoker = (SocketServerInvoker) connector.getServerInvoker();
+ assertEquals(LOCATOR_VALUE_CONNECTION_WAIT, clientInvoker.getConnectionWait());
+ assertEquals(LOCATOR_VALUE_BACKLOG, serverInvoker.getBacklog());
+
+ client.disconnect();
+ shutdownServer();
+ log.info(getName() + " PASSES");
+ }
+
+
+ public void testLocatorFalseConfigFalse() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(true, true, "false", "false");
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ clientConfig.put(MicroSocketClientInvoker.CONNECTION_WAIT, CONFIG_VALUE_CONNECTION_WAIT_STRING);
+ clientConfig.put(Remoting.CONFIG_OVERRIDES_LOCATOR, "false");
+ addExtraClientConfig(clientConfig);
+ log.info("client config: " + clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connection.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ //Test configuration.
+ MicroSocketClientInvoker clientInvoker = (MicroSocketClientInvoker) client.getInvoker();
+ SocketServerInvoker serverInvoker = (SocketServerInvoker) connector.getServerInvoker();
+ assertEquals(LOCATOR_VALUE_CONNECTION_WAIT, clientInvoker.getConnectionWait());
+ assertEquals(LOCATOR_VALUE_BACKLOG, serverInvoker.getBacklog());
+
+ client.disconnect();
+ shutdownServer();
+ log.info(getName() + " PASSES");
+ }
+
+
+ public void testLocatorFalseConfigTrue() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(true, true, "false", "true");
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ clientConfig.put(MicroSocketClientInvoker.CONNECTION_WAIT, CONFIG_VALUE_CONNECTION_WAIT_STRING);
+ clientConfig.put(Remoting.CONFIG_OVERRIDES_LOCATOR, "true");
+ addExtraClientConfig(clientConfig);
+ log.info("client config: " + clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connection.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ //Test configuration.
+ MicroSocketClientInvoker clientInvoker = (MicroSocketClientInvoker) client.getInvoker();
+ SocketServerInvoker serverInvoker = (SocketServerInvoker) connector.getServerInvoker();
+ assertEquals(LOCATOR_VALUE_CONNECTION_WAIT, clientInvoker.getConnectionWait());
+ assertEquals(LOCATOR_VALUE_BACKLOG, serverInvoker.getBacklog());
+
+ client.disconnect();
+ shutdownServer();
+ log.info(getName() + " PASSES");
+ }
+
+
+ public void testLocatorTrueConfigNone() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(true, false, "true", "");
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ clientConfig.put(MicroSocketClientInvoker.CONNECTION_WAIT, CONFIG_VALUE_CONNECTION_WAIT_STRING);
+ addExtraClientConfig(clientConfig);
+ log.info("client config: " + clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connection.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ //Test configuration.
+ MicroSocketClientInvoker clientInvoker = (MicroSocketClientInvoker) client.getInvoker();
+ SocketServerInvoker serverInvoker = (SocketServerInvoker) connector.getServerInvoker();
+ assertEquals(CONFIG_VALUE_CONNECTION_WAIT, clientInvoker.getConnectionWait());
+ assertEquals(CONFIG_VALUE_BACKLOG, serverInvoker.getBacklog());
+
+ client.disconnect();
+ shutdownServer();
+ log.info(getName() + " PASSES");
+ }
+
+
+ public void testLocatorTrueConfigFalse() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(true, true, "true", "false");
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ clientConfig.put(MicroSocketClientInvoker.CONNECTION_WAIT, CONFIG_VALUE_CONNECTION_WAIT_STRING);
+ clientConfig.put(Remoting.CONFIG_OVERRIDES_LOCATOR, "false");
+ addExtraClientConfig(clientConfig);
+ log.info("client config: " + clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connection.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ //Test configuration.
+ MicroSocketClientInvoker clientInvoker = (MicroSocketClientInvoker) client.getInvoker();
+ SocketServerInvoker serverInvoker = (SocketServerInvoker) connector.getServerInvoker();
+ assertEquals(CONFIG_VALUE_CONNECTION_WAIT, clientInvoker.getConnectionWait());
+ assertEquals(CONFIG_VALUE_BACKLOG, serverInvoker.getBacklog());
+
+ client.disconnect();
+ shutdownServer();
+ log.info(getName() + " PASSES");
+ }
+
+
+ public void testLocatorTrueConfigTrue() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(true, true, "true", "true");
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ clientConfig.put(MicroSocketClientInvoker.CONNECTION_WAIT, CONFIG_VALUE_CONNECTION_WAIT_STRING);
+ clientConfig.put(Remoting.CONFIG_OVERRIDES_LOCATOR, "true");
+ addExtraClientConfig(clientConfig);
+ log.info("client config: " + clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connection.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ //Test configuration.
+ MicroSocketClientInvoker clientInvoker = (MicroSocketClientInvoker) client.getInvoker();
+ SocketServerInvoker serverInvoker = (SocketServerInvoker) connector.getServerInvoker();
+ assertEquals(CONFIG_VALUE_CONNECTION_WAIT, clientInvoker.getConnectionWait());
+ assertEquals(CONFIG_VALUE_BACKLOG, serverInvoker.getBacklog());
+
+ client.disconnect();
+ shutdownServer();
+ log.info(getName() + " PASSES");
+ }
+
+
+ protected String getTransport()
+ {
+ return "socket";
+ }
+
+
+ protected void addExtraClientConfig(Map config) {}
+ protected void addExtraServerConfig(Map config) {}
+
+
+ protected void setupServer(boolean addToLocator, boolean addToConfig, String locatorValue, String configValue) throws Exception
+ {
+ host = InetAddress.getLocalHost().getHostAddress();
+ port = PortUtil.findFreePort(host);
+ locatorURI = getTransport() + "://" + host + ":" + port + "/?" + MicroSocketClientInvoker.CONNECTION_WAIT + "=" + LOCATOR_VALUE_CONNECTION_WAIT_STRING;
+ String metadata = System.getProperty("remoting.metadata");
+ if (metadata != null)
+ {
+ locatorURI += "&" + metadata;
+ }
+ locatorURI += "&" + "backlog=" + LOCATOR_VALUE_BACKLOG_STRING;
+ if (addToLocator)
+ {
+ locatorURI += "&" + Remoting.CONFIG_OVERRIDES_LOCATOR + "=" + locatorValue;
+ }
+ serverLocator = new InvokerLocator(locatorURI);
+ log.info("Starting remoting server with locator uri of: " + locatorURI);
+ HashMap config = new HashMap();
+ config.put(InvokerLocator.FORCE_REMOTE, "true");
+ config.put("backlog", CONFIG_VALUE_BACKLOG_STRING);
+ addExtraServerConfig(config);
+ if (addToConfig)
+ {
+ config.put(Remoting.CONFIG_OVERRIDES_LOCATOR, configValue);
+ }
+ log.info("server config: " + config);
+ connector = new Connector(serverLocator, config);
+ connector.create();
+ invocationHandler = new TestInvocationHandler();
+ connector.addInvocationHandler("test", invocationHandler);
+ connector.start();
+ }
+
+
+ protected void shutdownServer() throws Exception
+ {
+ if (connector != null)
+ connector.stop();
+ }
+
+
+ static class TestInvocationHandler implements ServerInvocationHandler
+ {
+ public void addListener(InvokerCallbackHandler callbackHandler) {}
+ public Object invoke(final InvocationRequest invocation) throws Throwable
+ {
+ return invocation.getParameter();
+ }
+ public void removeListener(InvokerCallbackHandler callbackHandler) {}
+ public void setMBeanServer(MBeanServer server) {}
+ public void setInvoker(ServerInvoker invoker) {}
+ }
+
+
+ static class TestCallbackHandler implements InvokerCallbackHandler
+ {
+ public void handleCallback(Callback callback) throws HandleCallbackException
+ {
+ log.info("received callback");
+ }
+ }
+}
\ No newline at end of file
15 years, 8 months
JBoss Remoting SVN: r5071 - remoting2/branches/2.x/src/main/org/jboss/remoting.
by jboss-remoting-commits@lists.jboss.org
Author: ron.sigal(a)jboss.com
Date: 2009-04-19 03:05:27 -0400 (Sun, 19 Apr 2009)
New Revision: 5071
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/ServerInvoker.java
Log:
JBREM-1124: Removed redundant parameter handling from constructor.
Modified: remoting2/branches/2.x/src/main/org/jboss/remoting/ServerInvoker.java
===================================================================
--- remoting2/branches/2.x/src/main/org/jboss/remoting/ServerInvoker.java 2009-04-19 06:23:32 UTC (rev 5070)
+++ remoting2/branches/2.x/src/main/org/jboss/remoting/ServerInvoker.java 2009-04-19 07:05:27 UTC (rev 5071)
@@ -293,17 +293,6 @@
public ServerInvoker(InvokerLocator locator, Map configuration)
{
super(locator, configuration);
-
- if (configuration != null)
- {
- this.configuration.putAll(configuration);
- }
-
- Map locatorParams = locator.getParameters();
- if(locatorParams != null)
- {
- this.configuration.putAll(locator.getParameters());
- }
}
// Public ---------------------------------------------------------------------------------------
15 years, 8 months
JBoss Remoting SVN: r5070 - remoting2/branches/2.x/src/main/org/jboss/remoting.
by jboss-remoting-commits@lists.jboss.org
Author: ron.sigal(a)jboss.com
Date: 2009-04-19 02:23:32 -0400 (Sun, 19 Apr 2009)
New Revision: 5070
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/Remoting.java
Log:
JBREM-1124: Added CONFIG_OVERRIDES_LOCATOR constant.
Modified: remoting2/branches/2.x/src/main/org/jboss/remoting/Remoting.java
===================================================================
--- remoting2/branches/2.x/src/main/org/jboss/remoting/Remoting.java 2009-04-19 06:22:45 UTC (rev 5069)
+++ remoting2/branches/2.x/src/main/org/jboss/remoting/Remoting.java 2009-04-19 06:23:32 UTC (rev 5070)
@@ -100,4 +100,10 @@
* org.jboss.remoting.ServerInvoker.InvalidStateException to an org.jboss.remoting.CannotConnectException.
*/
public static final String CHANGE_INVALID_STATE_TO_CANNOT_CONNECT = "changeInvalidStateToCannotConnect";
+
+ /**
+ * A flag indicating that AbstractInvoker should give priority to values in InvokerLocator over
+ * values in configuration map.
+ */
+ public static final String CONFIG_OVERRIDES_LOCATOR = "configOverridesLocator";
}
15 years, 8 months
JBoss Remoting SVN: r5069 - remoting2/branches/2.x/src/main/org/jboss/remoting.
by jboss-remoting-commits@lists.jboss.org
Author: ron.sigal(a)jboss.com
Date: 2009-04-19 02:22:45 -0400 (Sun, 19 Apr 2009)
New Revision: 5069
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/AbstractInvoker.java
Log:
JBREM-1124: Added option for configuration map parameter values to override InvokerLocator parameter values.
Modified: remoting2/branches/2.x/src/main/org/jboss/remoting/AbstractInvoker.java
===================================================================
--- remoting2/branches/2.x/src/main/org/jboss/remoting/AbstractInvoker.java 2009-04-19 04:35:10 UTC (rev 5068)
+++ remoting2/branches/2.x/src/main/org/jboss/remoting/AbstractInvoker.java 2009-04-19 06:22:45 UTC (rev 5069)
@@ -94,12 +94,22 @@
}
this.locator = locator;
- if (configuration != null)
- this.configuration.putAll(configuration);
+ if (checkConfigOverridesLocator(locator, configuration))
+ {
+ if (locator.getParameters() != null)
+ this.configuration.putAll(locator.getParameters());
+
+ if (configuration != null)
+ this.configuration.putAll(configuration);
+ }
+ else
+ {
+ if (configuration != null)
+ this.configuration.putAll(configuration);
- if (locator.getParameters() != null)
- this.configuration.putAll(locator.getParameters());
-
+ if (locator.getParameters() != null)
+ this.configuration.putAll(locator.getParameters());
+ }
try
{
InvokerLocator loaderLocator = MarshallLoaderFactory.convertLocator(locator);
@@ -396,6 +406,44 @@
{
return configuration;
}
+
+ protected boolean checkConfigOverridesLocator(InvokerLocator locator, Map config)
+ {
+ boolean result = false;
+ if (config != null)
+ {
+ Object o = config.get(Remoting.CONFIG_OVERRIDES_LOCATOR);
+ if (o != null)
+ {
+ if (o instanceof String)
+ {
+ result = Boolean.valueOf((String) o).booleanValue();
+ }
+ else
+ {
+ log.warn("value of " + Remoting.CONFIG_OVERRIDES_LOCATOR + " in configuration Map should be a String instead of: " + o);
+ }
+ }
+ }
+ Map map = locator.parameters;
+ if (map != null)
+ {
+ Object o = map.get(Remoting.CONFIG_OVERRIDES_LOCATOR);
+ if (o != null)
+ {
+ if (o instanceof String)
+ {
+ result = Boolean.valueOf((String) o).booleanValue();
+ }
+ else
+ {
+ log.warn("value of " + Remoting.CONFIG_OVERRIDES_LOCATOR + " in " + locator + " should be a String");
+ }
+ }
+ }
+
+ return result;
+ }
static public SocketFactory wrapSocketFactory(SocketFactory socketFactory, Map config)
{
15 years, 8 months
JBoss Remoting SVN: r5068 - remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/bisocket.
by jboss-remoting-commits@lists.jboss.org
Author: ron.sigal(a)jboss.com
Date: 2009-04-19 00:35:10 -0400 (Sun, 19 Apr 2009)
New Revision: 5068
Added:
remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/bisocket/BisocketImmediateShutdownTestCase.java
Log:
JBREM-1123: New unit test.
Added: remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/bisocket/BisocketImmediateShutdownTestCase.java
===================================================================
--- remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/bisocket/BisocketImmediateShutdownTestCase.java (rev 0)
+++ remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/bisocket/BisocketImmediateShutdownTestCase.java 2009-04-19 04:35:10 UTC (rev 5068)
@@ -0,0 +1,20 @@
+package org.jboss.test.remoting.transport.bisocket;
+
+import org.jboss.test.remoting.transport.socket.shutdown.SocketImmediateShutdownTestCase;
+
+/**
+ * Unit test for JBREM-1123.
+ *
+ * @author <a href="ron.sigal(a)jboss.com">Ron Sigal</a>
+ * @version $Rev$
+ * <p>
+ * Copyright Apr 19, 2009
+ * </p>
+ */
+public class BisocketImmediateShutdownTestCase extends SocketImmediateShutdownTestCase
+{
+ protected String getTransport()
+ {
+ return "bisocket";
+ }
+}
15 years, 8 months
JBoss Remoting SVN: r5067 - remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/socket/shutdown.
by jboss-remoting-commits@lists.jboss.org
Author: ron.sigal(a)jboss.com
Date: 2009-04-19 00:34:33 -0400 (Sun, 19 Apr 2009)
New Revision: 5067
Modified:
remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/socket/shutdown/SocketImmediateShutdownTestCase.java
Log:
JBREM-1123: Added javadoc.
Modified: remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/socket/shutdown/SocketImmediateShutdownTestCase.java
===================================================================
--- remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/socket/shutdown/SocketImmediateShutdownTestCase.java 2009-04-19 04:31:35 UTC (rev 5066)
+++ remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/socket/shutdown/SocketImmediateShutdownTestCase.java 2009-04-19 04:34:33 UTC (rev 5067)
@@ -43,6 +43,15 @@
import org.jboss.remoting.transport.PortUtil;
+/**
+ * Unit test for JBREM-1123.
+ *
+ * @author <a href="ron.sigal(a)jboss.com">Ron Sigal</a>
+ * @version $Rev$
+ * <p>
+ * Copyright Apr 19, 2009
+ * </p>
+ */
public class SocketImmediateShutdownTestCase extends TestCase
{
private static Logger log = Logger.getLogger(SocketImmediateShutdownTestCase.class);
15 years, 8 months
JBoss Remoting SVN: r5066 - remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/socket/shutdown.
by jboss-remoting-commits@lists.jboss.org
Author: ron.sigal(a)jboss.com
Date: 2009-04-19 00:31:35 -0400 (Sun, 19 Apr 2009)
New Revision: 5066
Added:
remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/socket/shutdown/SocketImmediateShutdownTestCase.java
Log:
JBREM-1123: Added immediateShutdown property.
Added: remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/socket/shutdown/SocketImmediateShutdownTestCase.java
===================================================================
--- remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/socket/shutdown/SocketImmediateShutdownTestCase.java (rev 0)
+++ remoting2/branches/2.x/src/tests/org/jboss/test/remoting/transport/socket/shutdown/SocketImmediateShutdownTestCase.java 2009-04-19 04:31:35 UTC (rev 5066)
@@ -0,0 +1,289 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.remoting.transport.socket.shutdown;
+
+import java.net.InetAddress;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.management.MBeanServer;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.jboss.remoting.Client;
+import org.jboss.remoting.InvocationRequest;
+import org.jboss.remoting.InvokerLocator;
+import org.jboss.remoting.ServerInvocationHandler;
+import org.jboss.remoting.ServerInvoker;
+import org.jboss.remoting.callback.InvokerCallbackHandler;
+import org.jboss.remoting.transport.Connector;
+import org.jboss.remoting.transport.PortUtil;
+
+
+public class SocketImmediateShutdownTestCase extends TestCase
+{
+ private static Logger log = Logger.getLogger(SocketImmediateShutdownTestCase.class);
+
+ private static boolean firstTime = true;
+ private static String SLEEP = "sleep";
+
+ protected String host;
+ protected int port;
+ protected String locatorURI;
+ protected InvokerLocator serverLocator;
+ protected Connector connector;
+ protected TestInvocationHandler invocationHandler;
+
+
+ public void setUp() throws Exception
+ {
+ if (firstTime)
+ {
+ firstTime = false;
+ Logger.getLogger("org.jboss.remoting").setLevel(Level.INFO);
+ Logger.getLogger("org.jboss.test.remoting").setLevel(Level.INFO);
+ String pattern = "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n";
+ PatternLayout layout = new PatternLayout(pattern);
+ ConsoleAppender consoleAppender = new ConsoleAppender(layout);
+ Logger.getRootLogger().addAppender(consoleAppender);
+ }
+ }
+
+
+ public void tearDown()
+ {
+ }
+
+
+ public void testNoImmediateShutdownByDefault() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(false, false);
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ addExtraClientConfig(clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connections.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ // Test immediate shutdown.
+ client.invokeOneway(SLEEP, null, true);
+ Thread.sleep(4000);
+ ServerInvoker serverInvoker = connector.getServerInvoker();
+ new Thread()
+ {
+ public void run()
+ {
+ setName("shutdownServer:" + getName());
+ try
+ {
+ shutdownServer();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }.start();
+ Thread.sleep(4000);
+ log.info("testing server");
+ assertTrue(serverInvoker.isStarted());
+ Thread.sleep(8000);
+ assertFalse(serverInvoker.isStarted());
+ log.info(getName() + " PASSES");
+ }
+
+
+ public void testNoImmediateShutdownByConfig() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(true, false);
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ addExtraClientConfig(clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connections.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ // Test immediate shutdown.
+ client.invokeOneway(SLEEP, null, true);
+ Thread.sleep(4000);
+ ServerInvoker serverInvoker = connector.getServerInvoker();
+ new Thread()
+ {
+ public void run()
+ {
+ try
+ {
+ setName("shutdownServer:" + getName());
+ shutdownServer();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }.start();
+ Thread.sleep(4000);
+ log.info("testing server");
+ assertTrue(serverInvoker.isStarted());
+ Thread.sleep(8000);
+ assertFalse(serverInvoker.isStarted());
+ log.info(getName() + " PASSES");
+ }
+
+
+ public void testImmediateShutdown() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer(true, true);
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ addExtraClientConfig(clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connections.
+ assertEquals("abc", client.invoke("abc"));
+ log.info("connection is good");
+
+ // Test immediate shutdown.
+ client.invokeOneway(SLEEP, null, true);
+ Thread.sleep(4000);
+ ServerInvoker serverInvoker = connector.getServerInvoker();
+ new Thread()
+ {
+ public void run()
+ {
+ try
+ {
+ setName("shutdownServer:" + getName());
+ shutdownServer();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }.start();
+ Thread.sleep(4000);
+ log.info("testing server");
+ assertFalse(serverInvoker.isStarted());
+ log.info(getName() + " PASSES");
+ }
+
+
+ protected String getTransport()
+ {
+ return "socket";
+ }
+
+
+ protected void addExtraClientConfig(Map config) {}
+ protected void addExtraServerConfig(Map config) {}
+
+
+ protected void setupServer(boolean setImmediateShutdown, boolean immediateShutdown) throws Exception
+ {
+ host = InetAddress.getLocalHost().getHostAddress();
+ port = PortUtil.findFreePort(host);
+ locatorURI = getTransport() + "://" + host + ":" + port;
+ String metadata = System.getProperty("remoting.metadata");
+ if (metadata != null)
+ {
+ locatorURI += "/?" + metadata;
+ }
+ serverLocator = new InvokerLocator(locatorURI);
+ log.info("Starting remoting server with locator uri of: " + locatorURI);
+ HashMap config = new HashMap();
+ if (setImmediateShutdown)
+ {
+ config.put("immediateShutdown", Boolean.toString(immediateShutdown));
+ log.info("immediateShutdown: " + immediateShutdown);
+ }
+ config.put(InvokerLocator.FORCE_REMOTE, "true");
+ addExtraServerConfig(config);
+ connector = new Connector(serverLocator, config);
+ connector.create();
+ invocationHandler = new TestInvocationHandler();
+ connector.addInvocationHandler("test", invocationHandler);
+ connector.start();
+ }
+
+
+ protected void shutdownServer() throws Exception
+ {
+ if (connector != null)
+ log.info("stopping Connector");
+ connector.stop();
+ log.info("stopped Connector");
+ }
+
+
+ static class TestInvocationHandler implements ServerInvocationHandler
+ {
+ public void addListener(InvokerCallbackHandler callbackHandler) {}
+ public Object invoke(final InvocationRequest invocation) throws Throwable
+ {
+ String request = (String) invocation.getParameter();
+ log.info("request: " + request);
+ if (SLEEP.equals(request))
+ {
+ log.info("GOING TO SLEEP");
+ Thread.sleep(12000);
+ log.info("WOKE UP");
+ }
+ return invocation.getParameter();
+ }
+ public void removeListener(InvokerCallbackHandler callbackHandler) {}
+ public void setMBeanServer(MBeanServer server) {}
+ public void setInvoker(ServerInvoker invoker) {}
+ }
+}
\ No newline at end of file
15 years, 8 months