HashMap sconfig = new HashMap();
// Put ServerSocketFactory and SocketFactory in config map.
ServerSocketFactory ssf1 = getDefaultServerSocketFactory();
sconfig.put(Remoting.CUSTOM_SERVER_SOCKET_FACTORY, ssf1);
SocketFactory sf1 = getDefaultCallbackSocketFactory();
sconfig.put(Remoting.CUSTOM_SOCKET_FACTORY, sf1);
// Make callback Client use remote invoker.
sconfig.put(InvokerLocator.FORCE_REMOTE, "true");
// Special case: tell HTTPSClientInvoker to ignore hostname in certificates.
// This is because InvokerLocator turns "localhost" into "127.0.0.1". Should
// be fixed by JBREM-497.
sconfig.put(HTTPSClientInvoker.IGNORE_HTTPS_HOST, "true");
// Put ServerSocketFactory MBean name in config map.
ServerSocketFactory serverSocketService = getDefaultServerSocketFactory();
String serverSocketFactoryName = "jboss:type=serversocketfactory";
ObjectName objName = new ObjectName(serverSocketFactoryName);
MBeanServer mbeanServer = MBeanServerFactory.createMBeanServer();
mbeanServer.registerMBean(serverSocketService, objName);
sconfig.put(ServerInvoker.SERVER_SOCKET_FACTORY, serverSocketFactoryName);
// Put SSL keystore parameters in config map.
sconfig.put(SSLSocketBuilder.REMOTING_SERVER_SOCKET_USE_CLIENT_MODE, "true");
sconfig.put(SSLSocketBuilder.REMOTING_KEY_STORE_TYPE, "JKS");
String keyStoreFilePath = getKeystoreFilePath();
sconfig.put(SSLSocketBuilder.REMOTING_KEY_STORE_FILE_PATH, keyStoreFilePath);
sconfig.put(SSLSocketBuilder.REMOTING_KEY_STORE_PASSWORD, "unit-tests-server");
// Put SSL truststore parameters in config map.
sconfig.put(SSLSocketBuilder.REMOTING_SOCKET_USE_CLIENT_MODE, "true");
sconfig.put(SSLSocketBuilder.REMOTING_TRUST_STORE_TYPE, "JKS");
String trustStoreFilePath = getTruststoreFilePath();
sconfig.put(SSLSocketBuilder.REMOTING_TRUST_STORE_FILE_PATH, trustStoreFilePath);
sconfig.put(SSLSocketBuilder.REMOTING_TRUST_STORE_PASSWORD, "unit-tests-client");
Connector connector = new Connector(sconfig);
mbeanServer.registerMBean(connector, new ObjectName("test:type=connector"));
// Create and set xml configuration document.
int freeport = PortUtil.findFreePort(getHostName());
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( getUniqueServerSocketFactoryClass());
buf.append(" </attribute>");
buf.append(" <attribute name=\"socketFactory\">");
buf.append( getUniqueSocketFactoryClass());
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();
// Set ServerSocketFactory and SocketFactory in ServerInvoker.
ServerInvoker serverInvoker = connector.getServerInvoker();
ServerSocketFactory ssf2 = getDefaultServerSocketFactory();
serverInvoker.setServerSocketFactory(ssf2);
SocketFactory sf2 = getDefaultCallbackSocketFactory();
serverInvoker.setSocketFactory(sf2);
connector.addInvocationHandler("sample", new SampleInvocationHandler());
connector.start();
// Verify ServerSocketFactory is the one set in ServerInvoker.
assertTrue(ssf2 == serverInvoker.getServerSocketFactory());
/////////////////////////////////////
///// Do client side test. ////
/////////////////////////////////////
HashMap cconfig = new HashMap();
// Put SocketFactory in config map.
SocketFactory sf3 = getDefaultSocketFactory();
cconfig.put(Remoting.CUSTOM_SOCKET_FACTORY, sf3);
// Make Client use remote invoker.
cconfig.put(InvokerLocator.FORCE_REMOTE, "true");
// Put SSL parameters in config map.
cconfig.put(SSLSocketBuilder.REMOTING_SOCKET_USE_CLIENT_MODE, "true");
cconfig.put(SSLSocketBuilder.REMOTING_TRUST_STORE_TYPE, "JKS");
trustStoreFilePath = getTruststoreFilePath();
cconfig.put(SSLSocketBuilder.REMOTING_TRUST_STORE_FILE_PATH, trustStoreFilePath);
cconfig.put(SSLSocketBuilder.REMOTING_TRUST_STORE_PASSWORD, "unit-tests-client");
InvokerLocator locator = new InvokerLocator(getTransport() + "://" + getHostName() + ":" + freeport);
Client client = new Client(locator, cconfig);
client.connect();
// Set SocketFactory in ClientInvoker.
SocketFactory sf4 = getDefaultSocketFactory();
ClientInvoker clientInvoker = client.getInvoker();
clientInvoker.setSocketFactory(sf4);
// Verify SocketFactory is the one set in ClientInvoker.
assertTrue(sf4 == clientInvoker.getSocketFactory());