// 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);
// 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\">" +
getUniqueServerSocketFactoryClass().getName() +
"</attribute>");
buf.append(" <attribute name=\"socketFactory\">");
buf.append( getUniqueCallbackSocketFactoryClass().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();
// Verify ServerSocketFactory is the one passed in config map.
ServerInvoker serverInvoker = connector.getServerInvoker();
assertTrue(getUniqueServerSocketFactoryClass() ==
serverInvoker.getServerSocketFactory().getClass());
/////////////////////////////////////
///// Do client side test. ////
/////////////////////////////////////
HashMap cconfig = new HashMap();
// Put SocketFactory class name in config map.
cconfig.put(Remoting.SOCKET_FACTORY_NAME, getUniqueSocketFactoryClass().getName());
// 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();
// Verify SocketFactory is the one passed in config map.
ClientInvoker clientInvoker = client.getInvoker();
assertTrue(getUniqueSocketFactoryClass() == clientInvoker.getSocketFactory().getClass());
//////////////////////////////////////////////
///// Do server side callback test. ////
//////////////////////////////////////////////
Thread.sleep(500);
freeport = PortUtil.findFreePort(getHostName());
InvokerLocator callbackLocator = new InvokerLocator(getTransport() + "://" + getHostName() + ":" + freeport);
HashMap config = new HashMap();
addExtraCallbackConfig(config);
Connector callbackConnector = new Connector(callbackLocator.getLocatorURI(), config);
ServerSocketFactory ssf3 = getDefaultCallbackServerSocketFactory();
callbackConnector.setServerSocketFactory(ssf3);
callbackConnector.create();
callbackConnector.addInvocationHandler("sample", new SampleInvocationHandler());
callbackConnector.start();