public void testSslStub() throws Exception { File keyStoreFile = File.createTempFile("keystore", "ks"); keyStoreFile.deleteOnExit(); decodeHexToFile(keyStoreFile, keyStoreHex); System.setProperty("javax.net.ssl.keyStore", keyStoreFile.getAbsolutePath()); System.setProperty("javax.net.ssl.keyStorePassword", "password"); File trustStoreFile = File.createTempFile("truststore", "ks"); trustStoreFile.deleteOnExit(); decodeHexToFile(trustStoreFile, trustStoreHex); System.setProperty("javax.net.ssl.trustStore", trustStoreFile.getAbsolutePath()); System.setProperty("javax.net.ssl.trustStorePassword", "trustword"); // System.setProperty("javax.net.debug", "all"); RMIClientSocketFactory csf = new SslRMIClientSocketFactory(); RMIServerSocketFactory ssf = new SslRMIServerSocketFactory(); Registry reg = LocateRegistry.createRegistry(0, csf, ssf); int port = getRegistryPort(reg); System.out.println("Port is " + port); // Server Map<String, Object> env = new HashMap<String, Object>(); env.put(RMIConnectorServer.RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE, csf); env.put(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, ssf); MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///"); RMIServerImpl rmiServerImpl = new RMIJRMPServerImpl(port, csf, ssf, null); RMIConnectorServer cs = new RMIConnectorServer(url, null, rmiServerImpl, mbs); cs.start(); reg.bind("jmxrmi", rmiServerImpl); // Client Registry creg = LocateRegistry.getRegistry( InetAddress.getLocalHost().getHostAddress(), port, csf); RMIServer rmiServerStub = (RMIServer) creg.lookup("jmxrmi"); assertEquals(RMIServerImpl_Stub.class, rmiServerStub.getClass()); SObject sstub = (SObject) SerialScan.examine(rmiServerStub); List<SEntity> annots = sstub.getAnnotations(); /* The annotations consist of the data written for a UnicastRef2 * before the client socket factory; the client socket factory; * and the data written after the factory. */ assertEquals(3, annots.size()); SObject factory = (SObject) annots.get(1); assertEquals(SslRMIClientSocketFactory.class.getName(), factory.getType()); }