1 7 package org.jboss.test.remoting.transport.socket.ssl.custom; 8 9 import java.io.IOException ; 10 import java.security.KeyManagementException ; 11 import java.security.KeyStoreException ; 12 import java.security.NoSuchAlgorithmException ; 13 import java.security.UnrecoverableKeyException ; 14 import java.security.cert.CertificateException ; 15 import java.util.Iterator ; 16 import java.util.Map ; 17 import java.util.Set ; 18 import javax.net.ServerSocketFactory; 19 import org.jboss.jrunit.extensions.ServerTestCase; 20 import org.jboss.logging.Logger; 21 import org.jboss.remoting.InvokerLocator; 22 import org.jboss.remoting.ServerInvocationHandler; 23 import org.jboss.remoting.security.SSLSocketBuilder; 24 import org.jboss.remoting.transport.Connector; 25 import org.jboss.remoting.transport.socket.ssl.SSLSocketServerInvoker; 26 import org.jboss.test.remoting.TestUtil; 27 import org.jboss.test.remoting.transport.mock.MockServerInvocationHandler; 28 import org.jboss.test.remoting.transport.socket.ssl.SSLInvokerConstants; 29 30 35 public class InvokerServerTest extends ServerTestCase implements SSLInvokerConstants 36 { 37 private int serverPort = port; 38 private Connector connector = null; 39 40 private static final Logger log = Logger.getLogger(InvokerServerTest.class); 41 42 public void init(Map metatdata) throws Exception 43 { 44 if(serverPort < 0) 45 { 46 serverPort = TestUtil.getRandomPort(); 47 } 48 log.debug("port = " + serverPort); 49 50 Connector connector = new Connector(); 51 InvokerLocator locator = new InvokerLocator(buildLocatorURI(metatdata)); 52 connector.setInvokerLocator(locator.getLocatorURI()); 53 connector.create(); 54 55 ServerSocketFactory svrSocketFactory = createServerSocketFactory(); 56 SSLSocketServerInvoker socketSvrInvoker = (SSLSocketServerInvoker) connector.getServerInvoker(); 57 socketSvrInvoker.setServerSocketFactory(svrSocketFactory); 58 59 connector.addInvocationHandler(getSubsystem(), getServerInvocationHandler()); 60 connector.start(); 61 } 62 63 private ServerSocketFactory createServerSocketFactory() 64 throws NoSuchAlgorithmException , KeyManagementException , IOException , 65 CertificateException , UnrecoverableKeyException , KeyStoreException 66 { 67 ServerSocketFactory serverSocketFactory = null; 68 69 SSLSocketBuilder server = new SSLSocketBuilder(); 70 server.setUseSSLServerSocketFactory(false); 71 72 server.setSecureSocketProtocol("SSL"); 73 server.setKeyManagementAlgorithm("SunX509"); 74 75 server.setKeyStoreType("JKS"); 76 String keyStoreFilePath = this.getClass().getResource("../.keystore").getFile(); 77 server.setKeyStoreURL(keyStoreFilePath); 78 server.setKeyStorePassword("opensource"); 79 83 85 serverSocketFactory = server.createSSLServerSocketFactory(); 86 87 return serverSocketFactory; 88 } 89 90 private String buildLocatorURI(Map metadata) 91 { 92 if(metadata == null || metadata.size() == 0) 93 { 94 return transport + "://localhost:" + serverPort; 95 } 96 else 97 { 98 StringBuffer uriBuffer = new StringBuffer (transport + "://localhost:" + serverPort); 99 100 Set keys = metadata.keySet(); 101 Iterator itr = keys.iterator(); 102 while(itr.hasNext()) 103 { 104 String key = (String ) itr.next(); 105 String value = (String ) metadata.get(key); 106 uriBuffer.append(key + "=" + value + ","); 107 } 108 return uriBuffer.substring(0, uriBuffer.length() - 1); 109 } 110 } 111 112 protected String getSubsystem() 113 { 114 return "mock"; 115 } 116 117 protected ServerInvocationHandler getServerInvocationHandler() 118 { 119 return new MockServerInvocationHandler(); 120 } 121 122 protected void setUp() throws Exception 123 { 124 init(null); 125 } 126 127 protected void tearDown() throws Exception 128 { 129 if(connector != null) 130 { 131 connector.stop(); 132 connector.destroy(); 133 } 134 } 135 136 137 } 138 | Popular Tags |