[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/samples/config/factories ...
Ron Sigal
ron_sigal at yahoo.com
Mon Jul 24 01:46:16 EDT 2006
User: rsigal
Date: 06/07/24 01:46:16
Modified: src/main/org/jboss/remoting/samples/config/factories
FactoryConfigSample.java
FactoryConfigSSLSample.java
Log:
JBREM-521: Added sample cases for configuring by passing xml document to Connector.
Revision Changes Path
1.2 +122 -1 JBossRemoting/src/main/org/jboss/remoting/samples/config/factories/FactoryConfigSample.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: FactoryConfigSample.java
===================================================================
RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/samples/config/factories/FactoryConfigSample.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- FactoryConfigSample.java 23 Jul 2006 03:44:52 -0000 1.1
+++ FactoryConfigSample.java 24 Jul 2006 05:46:16 -0000 1.2
@@ -22,6 +22,7 @@
package org.jboss.remoting.samples.config.factories;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
@@ -32,6 +33,7 @@
import javax.management.MBeanServer;
import javax.net.ServerSocketFactory;
import javax.net.SocketFactory;
+import javax.xml.parsers.DocumentBuilderFactory;
import junit.framework.TestCase;
@@ -48,6 +50,7 @@
import org.jboss.remoting.transport.ClientInvoker;
import org.jboss.remoting.transport.Connector;
import org.jboss.remoting.transport.PortUtil;
+import org.w3c.dom.Document;
/**
* These methods illustrate configuring socket factories and server socket factories
@@ -349,6 +352,124 @@
* <tr><td align="center"><b>side<td align="center"><b>factory<td><b>option</tr>
* <tr><td>server side<td align="center">server socket<td align="center">5</tr>
* <tr><td>server side<td align="center">socket <td align="center">5</tr>
+ * <tr><td>client side<td align="center">server socket<td align="center">5</tr>
+ * <tr><td>client side<td align="center">socket <td align="center">1</tr>
+ * </table>
+ */
+ public void testFactoriesByPassingClassnameInXml()
+ {
+ try
+ {
+ /////////////////////////////////////
+ ///// Set up server side. ////
+ /////////////////////////////////////
+ HashMap sconfig = new HashMap();
+
+ // Make callback Client use remote invoker.
+ sconfig.put(InvokerLocator.FORCE_REMOTE, "true");
+
+ // Get Connector.
+ int freeport = PortUtil.findFreePort(getHostName());
+ InvokerLocator locator = new InvokerLocator(getTransport() + "://" + getHostName() + ":" + freeport);
+ Connector connector = new Connector(sconfig);
+
+ // Set xml configuration element.
+ StringBuffer buf = new StringBuffer();
+ buf.append("<?xml version=\"1.0\"?>\n");
+ buf.append("<config>");
+ buf.append( "<invoker transport=\"" + getTransport() +"\">");
+ buf.append( "<attribute name=\"serverBindAddress\">" + getHostName() + "</attribute>");
+ buf.append( "<attribute name=\"serverBindPort\">" + freeport + "</attribute>");
+ buf.append( "<attribute name=\"serverSocketFactory\">" );
+ buf.append( getDefaultServerSocketFactoryClass().getName());
+ buf.append( "</attribute>");
+ buf.append( "<attribute name=\"socketFactory\">" );
+ buf.append( getDefaultSocketFactoryClass().getName());
+ buf.append( "</attribute>");
+ buf.append( "</invoker>");
+ buf.append("</config>");
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(buf.toString().getBytes());
+ Document xml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(bais);
+ connector.setConfiguration(xml.getDocumentElement());
+
+ connector.create();
+ connector.addInvocationHandler("sample", new SampleInvocationHandler());
+ connector.start();
+
+
+ /////////////////////////////////////
+ ///// Set up client side. ////
+ /////////////////////////////////////
+ HashMap cconfig = new HashMap();
+
+ // Make Client use remote invoker.
+ cconfig.put(InvokerLocator.FORCE_REMOTE, "true");
+
+ // Create Client.
+ Client client = new Client(locator, cconfig);
+
+ // Set SocketFactory in Client.
+ // Note. There is no provision for using xml configuration on client side.
+ SocketFactory sf = getDefaultSocketFactory();
+ client.setSocketFactory(sf);
+ client.connect();
+ System.out.println(getName() + ": " + client.invoke("test invoke()"));
+
+
+ //////////////////////////////////////////////
+ ///// Set up callback handling. ////
+ //////////////////////////////////////////////
+
+ // Get callback Connector.
+ freeport = PortUtil.findFreePort(getHostName());
+ InvokerLocator callbackLocator = new InvokerLocator(getTransport() + "://" + getHostName() + ":" + freeport);
+ Connector callbackConnector = new Connector();
+
+ // Set xml configuration element.
+ buf = new StringBuffer();
+ buf.append("<?xml version=\"1.0\"?>\n");
+ buf.append("<config>");
+ buf.append( "<invoker transport=\"" + getTransport() +"\">");
+ buf.append( "<attribute name=\"serverBindAddress\">" + getHostName() + "</attribute>");
+ buf.append( "<attribute name=\"serverBindPort\">" + freeport + "</attribute>");
+ buf.append( "<attribute name=\"serverSocketFactory\">" );
+ buf.append( getDefaultCallbackServerSocketFactoryClass().getName());
+ buf.append( "</attribute>");
+ buf.append( "</invoker>");
+ buf.append("</config>");
+ bais = new ByteArrayInputStream(buf.toString().getBytes());
+ xml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(bais);
+ callbackConnector.setConfiguration(xml.getDocumentElement());
+
+ callbackConnector.create();
+ callbackConnector.addInvocationHandler("sample", new SampleInvocationHandler());
+ callbackConnector.start();
+
+ // Add callback handler.
+ CallbackHandler callbackHandler = new CallbackHandler();
+ String callbackHandleObject = "myCallbackHandleObject";
+ client.addListener(callbackHandler, callbackLocator, callbackHandleObject);
+
+ client.disconnect();
+ callbackConnector.stop();
+ connector.stop();
+ }
+ catch (Throwable t)
+ {
+ log.error(t);
+ t.printStackTrace();
+ fail();
+ }
+ }
+
+
+ /** This test illustrates the following set of configuration options:
+ * <p>
+ * <table border cellpadding="5">
+ * <tr><td align="center"><b>side<td align="center"><b>factory<td><b>option</tr>
+ * <tr><td>server side<td align="center">server socket<td align="center">7</tr>
+ * <tr><td>server side<td align="center">socket <td align="center">7</tr>
* <tr><td>client side<td align="center">server socket<td align="center">4</tr>
* <tr><td>client side<td align="center">socket <td align="center">4</tr>
* </table>
1.2 +117 -4 JBossRemoting/src/main/org/jboss/remoting/samples/config/factories/FactoryConfigSSLSample.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: FactoryConfigSSLSample.java
===================================================================
RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/samples/config/factories/FactoryConfigSSLSample.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- FactoryConfigSSLSample.java 23 Jul 2006 03:44:52 -0000 1.1
+++ FactoryConfigSSLSample.java 24 Jul 2006 05:46:16 -0000 1.2
@@ -21,6 +21,7 @@
*/
package org.jboss.remoting.samples.config.factories;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.util.HashMap;
@@ -29,6 +30,7 @@
import javax.management.ObjectName;
import javax.net.ServerSocketFactory;
import javax.net.SocketFactory;
+import javax.xml.parsers.DocumentBuilderFactory;
import junit.framework.TestCase;
@@ -37,11 +39,13 @@
import org.jboss.remoting.InvokerLocator;
import org.jboss.remoting.ServerInvoker;
import org.jboss.remoting.samples.config.factories.FactoryConfigSample.CallbackHandler;
+import org.jboss.remoting.samples.config.factories.FactoryConfigSample.SampleInvocationHandler;
import org.jboss.remoting.security.SSLServerSocketFactoryService;
import org.jboss.remoting.security.SSLSocketBuilder;
import org.jboss.remoting.security.SSLSocketFactoryService;
import org.jboss.remoting.transport.Connector;
import org.jboss.remoting.transport.PortUtil;
+import org.w3c.dom.Document;
/**
* These methods illustrate configuring socket factories and server socket factories
@@ -70,6 +74,7 @@
private static Logger log = Logger.getLogger(FactoryConfigSSLSample.class);
+
/** This test illustrates the following set of configuration options:
* <p>
* <table border cellpadding="5">
@@ -79,6 +84,114 @@
* <tr><td>client side<td align="center">server socket<td align="center">1</tr>
* <tr><td>client side<td align="center">socket <td align="center">1</tr>
* </table>
+ */
+ public void testFactoriesByPassingMBeanInXml()
+ {
+ try
+ {
+ /////////////////////////////////////
+ ///// Set up server side. ////
+ /////////////////////////////////////
+ HashMap sconfig = new HashMap();
+
+ // Make callback Client use remote invoker.
+ sconfig.put(InvokerLocator.FORCE_REMOTE, "true");
+
+ // Create ServerSocketFactory MBean.
+ ServerSocketFactory service = getDefaultServerSocketFactory();
+ String serverSocketFactoryName = "jboss:type=serversocketfactory";
+ ObjectName objName = new ObjectName(serverSocketFactoryName);
+ MBeanServer mbeanServer = MBeanServerFactory.createMBeanServer();
+ mbeanServer.registerMBean(service, objName);
+
+ // Get Connector.
+ int freeport = PortUtil.findFreePort(getHostName());
+ InvokerLocator locator = new InvokerLocator(getTransport() + "://" + getHostName() + ":" + freeport);
+ Connector connector = new Connector(sconfig);
+ mbeanServer.registerMBean(connector, new ObjectName("test:type=connector"));
+
+ // Set xml configuration element.
+ StringBuffer buf = new StringBuffer();
+ buf.append("<?xml version=\"1.0\"?>\n");
+ buf.append("<config>");
+ buf.append( "<invoker transport=\"" + getTransport() +"\">");
+ buf.append( "<attribute name=\"serverBindAddress\">" + getHostName() + "</attribute>");
+ buf.append( "<attribute name=\"serverBindPort\">" + freeport + "</attribute>");
+ buf.append( "<attribute name=\"serverSocketFactory\">" );
+ buf.append( serverSocketFactoryName);
+ buf.append( "</attribute>");
+ buf.append( "</invoker>");
+ buf.append("</config>");
+ ByteArrayInputStream bais = new ByteArrayInputStream(buf.toString().getBytes());
+ Document xml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(bais);
+ connector.setConfiguration(xml.getDocumentElement());
+
+ connector.create();
+ connector.addInvocationHandler("sample", new SampleInvocationHandler());
+ connector.start();
+
+
+ /////////////////////////////////////
+ ///// Set up client side. ////
+ /////////////////////////////////////
+ HashMap cconfig = new HashMap();
+
+ // Make Client use remote invoker.
+ cconfig.put(InvokerLocator.FORCE_REMOTE, "true");
+
+ // Create Client.
+ Client client = new Client(locator, cconfig);
+
+ // Set SocketFactory in Client.
+ // Note. There is no provision for using xml configuration on client side.
+ SocketFactory sf = getDefaultSocketFactory();
+ client.setSocketFactory(sf);
+ client.connect();
+ System.out.println(getName() + ": " + client.invoke("test invoke()"));
+
+
+ //////////////////////////////////////////////
+ ///// Set up callback handling. ////
+ //////////////////////////////////////////////
+
+ // Start callback Connector.
+ // Note: there is no provision for using MBeanServer on client side.
+ freeport = PortUtil.findFreePort(getHostName());
+ InvokerLocator callbackLocator = new InvokerLocator(getTransport() + "://" + getHostName() + ":" + freeport);
+ Connector callbackConnector = new Connector(callbackLocator.getLocatorURI());
+ ServerSocketFactory ssf = getDefaultCallbackServerSocketFactory();
+ callbackConnector.setServerSocketFactory(ssf);
+ callbackConnector.create();
+ callbackConnector.addInvocationHandler("sample", new FactoryConfigSample.SampleInvocationHandler());
+ callbackConnector.start();
+
+ // Add callback handler.
+ CallbackHandler callbackHandler = new FactoryConfigSample.CallbackHandler();
+ String callbackHandleObject = "myCallbackHandleObject";
+ client.addListener(callbackHandler, callbackLocator, callbackHandleObject);
+
+ client.disconnect();
+ callbackConnector.stop();
+ connector.stop();
+ }
+ catch (Throwable t)
+ {
+ log.error(t);
+ t.printStackTrace();
+ fail();
+ }
+ }
+
+
+ /** This test illustrates the following set of configuration options:
+ * <p>
+ * <table border cellpadding="5">
+ * <tr><td align="center"><b>side<td align="center"><b>factory<td><b>option</tr>
+ * <tr><td>server side<td align="center">server socket<td align="center">6</tr>
+ * <tr><td>server side<td align="center">socket <td align="center">6</tr>
+ * <tr><td>client side<td align="center">server socket<td align="center">1</tr>
+ * <tr><td>client side<td align="center">socket <td align="center">1</tr>
+ * </table>
* <p>
* <b>Note.</b> There is no provision for using an <code>MBeanServer</code> on
* the client side.
@@ -169,8 +282,8 @@
* <p>
* <table border cellpadding="5">
* <tr><td align="center"><b>side<td align="center"><b>factory<td><b>option</tr>
- * <tr><td>server side<td align="center">server socket<td align="center">6</tr>
- * <tr><td>server side<td align="center">socket <td align="center">6</tr>
+ * <tr><td>server side<td align="center">server socket<td align="center">8</tr>
+ * <tr><td>server side<td align="center">socket <td align="center">8</tr>
* <tr><td>client side<td align="center">server socket<td align="center">5</tr>
* <tr><td>client side<td align="center">socket <td align="center">5</tr>
* </table>
@@ -266,8 +379,8 @@
* <p>
* <table border cellpadding="5">
* <tr><td align="center"><b>side<td align="center"><b>factory<td><b>option</tr>
- * <tr><td>server side<td align="center">server socket<td align="center">7</tr>
- * <tr><td>server side<td align="center">socket <td align="center">7</tr>
+ * <tr><td>server side<td align="center">server socket<td align="center">9</tr>
+ * <tr><td>server side<td align="center">socket <td align="center">9</tr>
* <tr><td>client side<td align="center">server socket<td align="center">6</tr>
* <tr><td>client side<td align="center">socket <td align="center">6</tr>
* </table>
More information about the jboss-cvs-commits
mailing list