From 7ac175f1da9220bc6565e129c2f3dce8ff03b077 Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Fri, 15 Jul 2022 13:23:32 +0200 Subject: Build vespa-feed-client as multi-release JAR Hardcode ALPN protcol name for JDK8 --- vespa-feed-client/pom.xml | 31 +++++++++++++++++++--- .../ai/vespa/feed/client/impl/ApacheCluster.java | 8 +++--- .../vespa/feed/client/impl/TlsDetailsFactory.java | 16 +++++++++++ .../vespa/feed/client/impl/TlsDetailsFactory.java | 20 ++++++++++++++ 4 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/TlsDetailsFactory.java create mode 100644 vespa-feed-client/src/main/java9/ai/vespa/feed/client/impl/TlsDetailsFactory.java diff --git a/vespa-feed-client/pom.xml b/vespa-feed-client/pom.xml index 536637bdce2..8b7b82573c4 100644 --- a/vespa-feed-client/pom.xml +++ b/vespa-feed-client/pom.xml @@ -53,10 +53,33 @@ org.apache.maven.plugins maven-compiler-plugin - - ${vespaClients.jdk.releaseVersion} - true - + + + compile-java-${vespaClients.jdk.releaseVersion} + + compile + + + ${vespaClients.jdk.releaseVersion} + true + + + + compile-java-9 + compile + + compile + + + 9 + + ${project.basedir}/src/main/java9 + + ${project.build.outputDirectory}/META-INF/versions/9 + true + + + org.codehaus.mojo diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/ApacheCluster.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/ApacheCluster.java index 62cd56f21ce..decb5021f8f 100644 --- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/ApacheCluster.java +++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/ApacheCluster.java @@ -15,7 +15,6 @@ import org.apache.hc.core5.http.message.BasicHeader; import org.apache.hc.core5.http2.config.H2Config; import org.apache.hc.core5.net.URIAuthority; import org.apache.hc.core5.reactor.IOReactorConfig; -import org.apache.hc.core5.reactor.ssl.TlsDetails; import org.apache.hc.core5.util.Timeout; import javax.net.ssl.SSLContext; @@ -131,10 +130,9 @@ class ApacheCluster implements Cluster { throw new IllegalStateException("No adequate SSL cipher suites supported by the JVM"); ClientTlsStrategyBuilder tlsStrategyBuilder = ClientTlsStrategyBuilder.create() - .setTlsDetailsFactory(sslEngine -> - new TlsDetails(sslEngine.getSession(), sslEngine.getApplicationProtocol())) - .setCiphers(allowedCiphers) - .setSslContext(sslContext); + .setTlsDetailsFactory(TlsDetailsFactory::create) + .setCiphers(allowedCiphers) + .setSslContext(sslContext); if (builder.hostnameVerifier != null) tlsStrategyBuilder.setHostnameVerifier(builder.hostnameVerifier); diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/TlsDetailsFactory.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/TlsDetailsFactory.java new file mode 100644 index 00000000000..5183ce61761 --- /dev/null +++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/TlsDetailsFactory.java @@ -0,0 +1,16 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package ai.vespa.feed.client.impl; + +import org.apache.hc.core5.reactor.ssl.TlsDetails; + +import javax.net.ssl.SSLEngine; + +/** + * @author bjorncs + */ +public class TlsDetailsFactory { + private TlsDetailsFactory() {} + + public static TlsDetails create(SSLEngine e) { return new TlsDetails(e.getSession(), "h2"); /*h2 == HTTP2*/ } +} + diff --git a/vespa-feed-client/src/main/java9/ai/vespa/feed/client/impl/TlsDetailsFactory.java b/vespa-feed-client/src/main/java9/ai/vespa/feed/client/impl/TlsDetailsFactory.java new file mode 100644 index 00000000000..f9903d9943d --- /dev/null +++ b/vespa-feed-client/src/main/java9/ai/vespa/feed/client/impl/TlsDetailsFactory.java @@ -0,0 +1,20 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package ai.vespa.feed.client.impl; + +import org.apache.hc.core5.reactor.ssl.TlsDetails; + +import javax.net.ssl.SSLEngine; + +/** + * {@link SSLEngine#getApplicationProtocol()} is not available on all JDK8 versions + * (https://bugs.openjdk.org/browse/JDK-8051498) + * + * @author bjorncs + */ +public class TlsDetailsFactory { + private TlsDetailsFactory() {} + + public static TlsDetails create(SSLEngine e) { + return new TlsDetails(e.getSession(), e.getApplicationProtocol()); + } +} -- cgit v1.2.3