You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2016/11/01 20:42:20 UTC
svn commit: r1767568 -
/openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java
Author: rmannibucau
Date: Tue Nov 1 20:42:20 2016
New Revision: 1767568
URL: http://svn.apache.org/viewvc?rev=1767568&view=rev
Log:
better http2 handling with SslHostConfig instantiation - test to do asap
Modified:
openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java
Modified: openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java?rev=1767568&r1=1767567&r2=1767568&view=diff
==============================================================================
--- openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java (original)
+++ openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java Tue Nov 1 20:42:20 2016
@@ -55,6 +55,7 @@ import org.apache.tomcat.JarScanFilter;
import org.apache.tomcat.util.descriptor.web.LoginConfig;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
+import org.apache.tomcat.util.net.SSLHostConfig;
import org.apache.xbean.finder.ResourceFinder;
import org.apache.xbean.recipe.ObjectRecipe;
import org.xml.sax.Attributes;
@@ -434,9 +435,6 @@ public class Microwave implements AutoCl
if (connector.getAttribute("connectionTimeout") == null) {
connector.setAttribute("connectionTimeout", "3000");
}
- if (configuration.http2) { // would likely need SSLHostConfig programmatically
- connector.addUpgradeProtocol(new Http2Protocol());
- }
tomcat.getService().addConnector(connector);
tomcat.setConnector(connector);
@@ -460,14 +458,11 @@ public class Microwave implements AutoCl
if (configuration.clientAuth != null) {
httpsConnector.setAttribute("clientAuth", configuration.clientAuth);
}
+
if (configuration.keyAlias != null) {
httpsConnector.setAttribute("keyAlias", configuration.keyAlias);
}
- if (configuration.http2) { // would likely need SSLHostConfig programmatically
- httpsConnector.addUpgradeProtocol(new Http2Protocol());
- }
-
tomcat.getService().addConnector(httpsConnector);
if (configuration.skipHttp) {
@@ -475,6 +470,15 @@ public class Microwave implements AutoCl
}
}
+ if (configuration.http2) {
+ final Connector c = configuration.ssl ?
+ tomcat.getService().findConnectors()[tomcat.getService().findConnectors().length - 1] :
+ ofNullable(tomcat.getRawConnector()).orElse(tomcat.getService().findConnectors()[0]);
+
+ c.addUpgradeProtocol(new Http2Protocol());
+ c.addSslHostConfig(buildSslHostConfig());
+ }
+
for (final Connector c : configuration.connectors) {
tomcat.getService().addConnector(c);
}
@@ -515,6 +519,18 @@ public class Microwave implements AutoCl
return this;
}
+ private SSLHostConfig buildSslHostConfig() {
+ final ObjectRecipe recipe = new ObjectRecipe(SSLHostConfig.class);
+ for (final String key : configuration.properties.stringPropertyNames()) {
+ if (!key.startsWith("connector.sslhostconfig.")) {
+ continue;
+ }
+ final String substring = key.substring("connector.sslhostconfig.".length());
+ recipe.setProperty(substring, configuration.properties.getProperty(key));
+ }
+ return SSLHostConfig.class.cast(recipe.create());
+ }
+
protected void beforeStart() {
// no-op
}
@@ -576,7 +592,12 @@ public class Microwave implements AutoCl
if (!key.startsWith("connector.")) {
continue;
}
+
final String substring = key.substring("connector.".length());
+ if (substring.startsWith("sslhostconfig.")) {
+ continue;
+ }
+
if (!substring.startsWith("attributes.")) {
recipe.setProperty(substring, properties.getProperty(key));
} else {