You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2012/07/04 11:56:42 UTC
svn commit: r1357201 - in
/activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport:
./ http/ https/
Author: dejanb
Date: Wed Jul 4 09:56:41 2012
New Revision: 1357201
URL: http://svn.apache.org/viewvc?rev=1357201&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-3880 - wss transport - first some refactoring for https transport so we can reuse stuff
Added:
activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/SecureSocketConnectorFactory.java (contents, props changed)
- copied, changed from r1356431, activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/HttpsTransportServer.java
activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/SocketConnectorFactory.java
Modified:
activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java
activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/HttpsTransportServer.java
activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/Krb5AndCertsSslSocketConnector.java
Copied: activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/SecureSocketConnectorFactory.java (from r1356431, activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/HttpsTransportServer.java)
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/SecureSocketConnectorFactory.java?p2=activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/SecureSocketConnectorFactory.java&p1=activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/HttpsTransportServer.java&r1=1356431&r2=1357201&rev=1357201&view=diff
==============================================================================
--- activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/HttpsTransportServer.java (original)
+++ activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/SecureSocketConnectorFactory.java Wed Jul 4 09:56:41 2012
@@ -14,17 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.activemq.transport.https;
+package org.apache.activemq.transport;
-import java.net.URI;
-
-import javax.net.ssl.SSLContext;
+import org.apache.activemq.spring.SpringSslContext;
+import org.apache.activemq.transport.https.Krb5AndCertsSslSocketConnector;
+import org.apache.activemq.util.IntrospectionSupport;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.apache.activemq.broker.SslContext;
-import org.apache.activemq.transport.http.HttpTransportServer;
-import org.eclipse.jetty.util.ssl.SslContextFactory;
-public class HttpsTransportServer extends HttpTransportServer {
+import javax.net.ssl.SSLContext;
+import java.util.Map;
+
+public class SecureSocketConnectorFactory extends SocketConnectorFactory {
private String keyPassword = System.getProperty("javax.net.ssl.keyPassword");
private String keyStorePassword = System.getProperty("javax.net.ssl.keyStorePassword");
@@ -35,64 +38,64 @@ public class HttpsTransportServer extend
private String keyCertificateAlgorithm;
private String protocol;
private String auth;
+
private SslContext context;
- public HttpsTransportServer(URI uri, HttpsTransportFactory factory, SslContext context) {
- super(uri, factory);
+ public SecureSocketConnectorFactory(SslContext context) {
this.context = context;
}
- public void doStart() throws Exception {
+ @Override
+ public Connector createConnector() throws Exception {
Krb5AndCertsSslSocketConnector sslConnector = new Krb5AndCertsSslSocketConnector();
SSLContext sslContext = context == null ? null : context.getSSLContext();
-
- // Get a reference to the current ssl context factory...
- SslContextFactory factory = sslConnector.getSslContextFactory();
-
- if (context != null) {
-
- // Should not be using this method since it does not use all of the values
- // from the passed SslContext instance.....
- factory.setSslContext(sslContext);
-
- } else {
-
- if (auth != null) {
- sslConnector.setMode(auth);
- }
-
- if (keyStore != null) {
- factory.setKeyStorePath(keyStore);
- }
- if (keyStorePassword != null) {
- factory.setKeyStorePassword(keyStorePassword);
- }
- // if the keyPassword hasn't been set, default it to the
- // key store password
- if (keyPassword == null && keyStorePassword != null) {
- factory.setKeyStorePassword(keyStorePassword);
- }
- if (keyStoreType != null) {
- factory.setKeyStoreType(keyStoreType);
- }
- if (secureRandomCertficateAlgorithm != null) {
- factory.setSecureRandomAlgorithm(secureRandomCertficateAlgorithm);
- }
- if (keyCertificateAlgorithm != null) {
- factory.setSslKeyManagerFactoryAlgorithm(keyCertificateAlgorithm);
- }
- if (trustCertificateAlgorithm != null) {
- factory.setTrustManagerFactoryAlgorithm(trustCertificateAlgorithm);
- }
- if (protocol != null) {
- factory.setProtocol(protocol);
- }
- }
-
- setConnector(sslConnector);
- super.doStart();
+ // Get a reference to the current ssl context factory...
+ SslContextFactory factory = sslConnector.getSslContextFactory();
+
+ if (context != null) {
+
+ // Should not be using this method since it does not use all of the values
+ // from the passed SslContext instance.....
+ factory.setSslContext(sslContext);
+
+ } else {
+ IntrospectionSupport.setProperties(this, getTransportOptions());
+
+ if (auth != null) {
+ sslConnector.setMode(auth);
+ }
+
+ if (keyStore != null) {
+ factory.setKeyStorePath(keyStore);
+ }
+ if (keyStorePassword != null) {
+ factory.setKeyStorePassword(keyStorePassword);
+ }
+ // if the keyPassword hasn't been set, default it to the
+ // key store password
+ if (keyPassword == null && keyStorePassword != null) {
+ factory.setKeyStorePassword(keyStorePassword);
+ }
+ if (keyStoreType != null) {
+ factory.setKeyStoreType(keyStoreType);
+ }
+ if (secureRandomCertficateAlgorithm != null) {
+ factory.setSecureRandomAlgorithm(secureRandomCertficateAlgorithm);
+ }
+ if (keyCertificateAlgorithm != null) {
+ factory.setSslKeyManagerFactoryAlgorithm(keyCertificateAlgorithm);
+ }
+ if (trustCertificateAlgorithm != null) {
+ factory.setTrustManagerFactoryAlgorithm(trustCertificateAlgorithm);
+ }
+ if (protocol != null) {
+ factory.setProtocol(protocol);
+ }
+ }
+
+ return sslConnector;
}
// Properties
@@ -175,5 +178,4 @@ public class HttpsTransportServer extend
public void setAuth(String auth) {
this.auth = auth;
}
-
}
Propchange: activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/SecureSocketConnectorFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/SocketConnectorFactory.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/SocketConnectorFactory.java?rev=1357201&view=auto
==============================================================================
--- activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/SocketConnectorFactory.java (added)
+++ activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/SocketConnectorFactory.java Wed Jul 4 09:56:41 2012
@@ -0,0 +1,40 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.transport;
+
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.nio.SelectChannelConnector;
+
+import java.util.Map;
+
+public class SocketConnectorFactory {
+
+ private Map<String, Object> transportOptions;
+
+ public Connector createConnector() throws Exception {
+ return new SelectChannelConnector();
+ }
+
+ public Map<String, Object> getTransportOptions() {
+ return transportOptions;
+ }
+
+ public void setTransportOptions(Map<String, Object> transportOptions) {
+ this.transportOptions = transportOptions;
+ }
+}
Modified: activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java?rev=1357201&r1=1357200&r2=1357201&view=diff
==============================================================================
--- activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java (original)
+++ activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java Wed Jul 4 09:56:41 2012
@@ -17,6 +17,7 @@
package org.apache.activemq.transport.http;
import org.apache.activemq.command.BrokerInfo;
+import org.apache.activemq.transport.SocketConnectorFactory;
import org.apache.activemq.transport.TransportServerSupport;
import org.apache.activemq.transport.util.TextWireFormat;
import org.apache.activemq.transport.xstream.XStreamWireFormat;
@@ -24,12 +25,12 @@ import org.apache.activemq.util.ServiceS
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.GzipHandler;
-import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import java.net.InetSocketAddress;
import java.net.URI;
+import java.util.Map;
public class HttpTransportServer extends TransportServerSupport {
@@ -38,11 +39,13 @@ public class HttpTransportServer extends
private Server server;
private Connector connector;
private HttpTransportFactory transportFactory;
+ protected SocketConnectorFactory socketConnectorFactory;
public HttpTransportServer(URI uri, HttpTransportFactory factory) {
super(uri);
this.bindAddress = uri;
this.transportFactory = factory;
+ socketConnectorFactory = new SocketConnectorFactory();
}
public void setBrokerInfo(BrokerInfo brokerInfo) {
@@ -74,7 +77,7 @@ public class HttpTransportServer extends
protected void doStart() throws Exception {
server = new Server();
if (connector == null) {
- connector = new SelectChannelConnector();
+ connector = socketConnectorFactory.createConnector();
}
connector.setHost(bindAddress.getHost());
connector.setPort(bindAddress.getPort());
@@ -110,4 +113,10 @@ public class HttpTransportServer extends
public InetSocketAddress getSocketAddress() {
return null;
}
+
+ @Override
+ public void setTransportOption(Map<String, Object> transportOptions) {
+ socketConnectorFactory.setTransportOptions(transportOptions);
+ super.setTransportOption(transportOptions);
+ }
}
Modified: activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/HttpsTransportServer.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/HttpsTransportServer.java?rev=1357201&r1=1357200&r2=1357201&view=diff
==============================================================================
--- activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/HttpsTransportServer.java (original)
+++ activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/HttpsTransportServer.java Wed Jul 4 09:56:41 2012
@@ -16,164 +16,28 @@
*/
package org.apache.activemq.transport.https;
-import java.net.URI;
-
-import javax.net.ssl.SSLContext;
-
import org.apache.activemq.broker.SslContext;
+import org.apache.activemq.transport.SecureSocketConnectorFactory;
import org.apache.activemq.transport.http.HttpTransportServer;
-import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.server.Connector;
-public class HttpsTransportServer extends HttpTransportServer {
+import java.net.URI;
- private String keyPassword = System.getProperty("javax.net.ssl.keyPassword");
- private String keyStorePassword = System.getProperty("javax.net.ssl.keyStorePassword");
- private String keyStore = System.getProperty("javax.net.ssl.keyStore");
- private String keyStoreType;
- private String secureRandomCertficateAlgorithm;
- private String trustCertificateAlgorithm;
- private String keyCertificateAlgorithm;
- private String protocol;
- private String auth;
+public class HttpsTransportServer extends HttpTransportServer {
private SslContext context;
public HttpsTransportServer(URI uri, HttpsTransportFactory factory, SslContext context) {
super(uri, factory);
this.context = context;
+ this.socketConnectorFactory = new SecureSocketConnectorFactory(context);
}
public void doStart() throws Exception {
- Krb5AndCertsSslSocketConnector sslConnector = new Krb5AndCertsSslSocketConnector();
-
- SSLContext sslContext = context == null ? null : context.getSSLContext();
-
- // Get a reference to the current ssl context factory...
- SslContextFactory factory = sslConnector.getSslContextFactory();
-
- if (context != null) {
-
- // Should not be using this method since it does not use all of the values
- // from the passed SslContext instance.....
- factory.setSslContext(sslContext);
-
- } else {
-
- if (auth != null) {
- sslConnector.setMode(auth);
- }
-
- if (keyStore != null) {
- factory.setKeyStorePath(keyStore);
- }
- if (keyStorePassword != null) {
- factory.setKeyStorePassword(keyStorePassword);
- }
- // if the keyPassword hasn't been set, default it to the
- // key store password
- if (keyPassword == null && keyStorePassword != null) {
- factory.setKeyStorePassword(keyStorePassword);
- }
- if (keyStoreType != null) {
- factory.setKeyStoreType(keyStoreType);
- }
- if (secureRandomCertficateAlgorithm != null) {
- factory.setSecureRandomAlgorithm(secureRandomCertficateAlgorithm);
- }
- if (keyCertificateAlgorithm != null) {
- factory.setSslKeyManagerFactoryAlgorithm(keyCertificateAlgorithm);
- }
- if (trustCertificateAlgorithm != null) {
- factory.setTrustManagerFactoryAlgorithm(trustCertificateAlgorithm);
- }
- if (protocol != null) {
- factory.setProtocol(protocol);
- }
- }
+ Connector sslConnector = socketConnectorFactory.createConnector();
setConnector(sslConnector);
super.doStart();
}
- // Properties
- // --------------------------------------------------------------------------------
-
- public String getKeyStore() {
- return keyStore;
- }
-
- public void setKeyStore(String keyStore) {
- this.keyStore = keyStore;
- }
-
- public String getKeyPassword() {
- return keyPassword;
- }
-
- public void setKeyPassword(String keyPassword) {
- this.keyPassword = keyPassword;
- }
-
- public String getKeyStoreType() {
- return keyStoreType;
- }
-
- public void setKeyStoreType(String keyStoreType) {
- this.keyStoreType = keyStoreType;
- }
-
- public String getKeyStorePassword() {
- return keyStorePassword;
- }
-
- public void setKeyStorePassword(String keyStorePassword) {
- this.keyStorePassword = keyStorePassword;
- }
-
- public String getProtocol() {
- return protocol;
- }
-
- public void setProtocol(String protocol) {
- this.protocol = protocol;
- }
-
- public String getSecureRandomCertficateAlgorithm() {
- return secureRandomCertficateAlgorithm;
- }
-
- public void setSecureRandomCertficateAlgorithm(String secureRandomCertficateAlgorithm) {
- this.secureRandomCertficateAlgorithm = secureRandomCertficateAlgorithm;
- }
-
- public String getKeyCertificateAlgorithm() {
- return keyCertificateAlgorithm;
- }
-
- public void setKeyCertificateAlgorithm(String keyCertificateAlgorithm) {
- this.keyCertificateAlgorithm = keyCertificateAlgorithm;
- }
-
- public String getTrustCertificateAlgorithm() {
- return trustCertificateAlgorithm;
- }
-
- public void setTrustCertificateAlgorithm(String trustCertificateAlgorithm) {
- this.trustCertificateAlgorithm = trustCertificateAlgorithm;
- }
-
- /**
- * @return the auth
- */
- public String getAuth() {
- return auth;
- }
-
- /**
- * @param auth the auth to set
- */
- public void setAuth(String auth) {
- this.auth = auth;
- }
-
}
Modified: activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/Krb5AndCertsSslSocketConnector.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/Krb5AndCertsSslSocketConnector.java?rev=1357201&r1=1357200&r2=1357201&view=diff
==============================================================================
--- activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/Krb5AndCertsSslSocketConnector.java (original)
+++ activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/https/Krb5AndCertsSslSocketConnector.java Wed Jul 4 09:56:41 2012
@@ -86,20 +86,6 @@ public class Krb5AndCertsSslSocketConnec
}
}
- // @Override
- // protected SSLServerSocketFactory createFactory() throws Exception {
- // if(useCerts)
- // return super.createFactory();
- //
- // SSLContext context = super.getProvider()==null
- // ? SSLContext.getInstance(super.getProtocol())
- // :SSLContext.getInstance(super.getProtocol(), super.getProvider());
- // context.init(null, null, null);
- //
- // System.err.println("Creating socket factory");
- // return context.getServerSocketFactory();
- // }
-
@Override
public SslContextFactory getSslContextFactory() {
final SslContextFactory factory = super.getSslContextFactory();
@@ -130,7 +116,6 @@ public class Krb5AndCertsSslSocketConnec
*/
@Override
protected ServerSocket newServerSocket(String host, int port, int backlog) throws IOException {
- System.err.println("Creating new KrbServerSocket for: " + host);
logIfDebug("Creating new KrbServerSocket for: " + host);
SSLServerSocket ss = null;
@@ -160,7 +145,6 @@ public class Krb5AndCertsSslSocketConnec
ss.setEnabledCipherSuites(combined);
}
- System.err.println("New socket created");
return ss;
};
@@ -186,7 +170,6 @@ public class Krb5AndCertsSslSocketConnec
if (useCerts)
super.customize(endpoint, request);
- System.err.println();
}
private void logIfDebug(String s) {