summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/host-jetty/src/main
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-08-09 06:11:54 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-08-09 06:11:54 +0000
commita49037c45192b749c045cbd27798f146192fa8d5 (patch)
tree84744e23c21bdf1312b3200ef270681c9a479c49 /java/sca/modules/host-jetty/src/main
parentf30981d7dab6a6f9992bfd512b835cada3fa2d7f (diff)
Enable the https support for embedded tomcat and jetty with unit tests
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@684186 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/host-jetty/src/main')
-rw-r--r--java/sca/modules/host-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyServer.java66
1 files changed, 45 insertions, 21 deletions
diff --git a/java/sca/modules/host-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyServer.java b/java/sca/modules/host-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyServer.java
index 0e5cdf2183..dfb34f11a5 100644
--- a/java/sca/modules/host-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyServer.java
+++ b/java/sca/modules/host-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyServer.java
@@ -23,6 +23,9 @@ import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.net.UnknownHostException;
+import java.security.AccessController;
+import java.security.KeyStore;
+import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -62,9 +65,15 @@ public class JettyServer implements ServletHost {
private static final Logger logger = Logger.getLogger(JettyServer.class.getName());
private final Object joinLock = new Object();
- private String keystore;
- private String certPassword;
- private String keyPassword;
+ private String trustStore;
+ private String truststorePassword;
+ private String keyStore;
+ private String keyStorePassword;
+
+ private String keyStoreType;
+ private String trustStoreType;
+
+
private boolean sendServerVersion;
private WorkScheduler workScheduler;
private int defaultPort = 8080;
@@ -101,6 +110,18 @@ public class JettyServer implements ServletHost {
public JettyServer(WorkScheduler workScheduler) {
this.workScheduler = workScheduler;
+ AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ public Object run() {
+ trustStore = System.getProperty("javax.net.ssl.trustStore");
+ truststorePassword = System.getProperty("javax.net.ssl.trustStorePassword");
+ keyStore = System.getProperty("javax.net.ssl.keyStore");
+ keyStorePassword = System.getProperty("javax.net.ssl.keyStorePassword");
+
+ keyStoreType = System.getProperty("javax.net.ssl.keyStoreType", KeyStore.getDefaultType());
+ trustStoreType = System.getProperty("javax.net.ssl.trustStoreType", KeyStore.getDefaultType());
+ return null;
+ }
+ });
}
public void setDefaultPort(int port) {
@@ -115,18 +136,6 @@ public class JettyServer implements ServletHost {
this.sendServerVersion = sendServerVersion;
}
- public void setKeystore(String keystore) {
- this.keystore = keystore;
- }
-
- public void setCertPassword(String certPassword) {
- this.certPassword = certPassword;
- }
-
- public void setKeyPassword(String keyPassword) {
- this.keyPassword = keyPassword;
- }
-
/**
* Stop all the started servers.
*/
@@ -145,6 +154,23 @@ public class JettyServer implements ServletHost {
throw new ServletMappingException(e);
}
}
+
+ private void configureSSL(SslSocketConnector connector) {
+ connector.setProtocol("TLS");
+ connector.setKeystore(keyStore);
+ connector.setKeyPassword(keyStorePassword);
+ connector.setKeystoreType(keyStoreType);
+
+ connector.setTruststore(trustStore);
+ connector.setTrustPassword(truststorePassword);
+ connector.setTruststoreType(trustStoreType);
+
+ connector.setPassword(keyStorePassword);
+ if (trustStore != null) {
+ connector.setNeedClientAuth(true);
+ }
+
+ }
public void addServletMapping(String suri, Servlet servlet) throws ServletMappingException {
URI uri = URI.create(suri);
@@ -168,14 +194,12 @@ public class JettyServer implements ServletHost {
Server server = new Server();
server.setThreadPool(new WorkSchedulerThreadPool());
if ("https".equals(scheme)) {
- Connector httpConnector = new SelectChannelConnector();
- httpConnector.setPort(portNumber);
+// Connector httpConnector = new SelectChannelConnector();
+// httpConnector.setPort(portNumber);
SslSocketConnector sslConnector = new SslSocketConnector();
sslConnector.setPort(portNumber);
- sslConnector.setKeystore(keystore);
- sslConnector.setPassword(certPassword);
- sslConnector.setKeyPassword(keyPassword);
- server.setConnectors(new Connector[] {httpConnector, sslConnector});
+ configureSSL(sslConnector);
+ server.setConnectors(new Connector[] {sslConnector});
} else {
SelectChannelConnector selectConnector = new SelectChannelConnector();
selectConnector.setPort(portNumber);