java8(openjdk 1.8.0_101)和wildfly 10.1环境中jaxws-maven-plugin生成的soap客户端缺少SNI

Posted

技术标签:

【中文标题】java8(openjdk 1.8.0_101)和wildfly 10.1环境中jaxws-maven-plugin生成的soap客户端缺少SNI【英文标题】:SNI missing with jaxws-maven-plugin generated soap client in java8(openjdk 1.8.0_101) and wildfly 10.1 environement 【发布时间】:2018-08-08 14:13:34 【问题描述】:

问题来了

我有一个 jaxws-maven-plugin(版本 2.5,jaxws-tools 2.3.0)为 wsdl(用于肥皂服务)生成代码

它使用@WebServiceClient (javax.xml.ws java1.8) 客户端生成代码。

当我在 Junit 中针对站点运行此客户端时,一切正常,我得到了正确的 ssl 连接,并收到了响应。但是,当我在 wildfly 10.1 中使用此客户端向同一站点运行应用程序时,我实际上得到了 SSLHandshakeException,unrecognized_name,这表明 SNI 缺失。我有一个使用 HttpsURLConnection 编写的自己的客户端,它运行良好。所以我真的很困惑为什么会这样。

maven 生成的代码如下(我只能有伪代码)

@WebServiceClient(name = "service_name", targetNamespace = "https://namespace.com/xxxxxx/v2", wsdlLocation = "/wsdl/targetwsdl.wsdl")
public class DTServerModuleServiceV2
    extends Service



【问题讨论】:

【参考方案1】:

我只看到一个可以改变这种行为的参数。从JSSE Reference Guide 尝试-Djsse.enableSNIExtension=false,默认情况下它设置为true。 有一个很长的讨论和一个技术解释here,但你的问题并不是真的重复。 让我们知道它是否已解决。

顺便说一下,您的 Java 版本很旧并且已知存在 SSL 错误。

【讨论】:

我用的是java 8,找到了根本原因,cxf和java 8有一个bug导致SNI关闭...

以上是关于java8(openjdk 1.8.0_101)和wildfly 10.1环境中jaxws-maven-plugin生成的soap客户端缺少SNI的主要内容,如果未能解决你的问题,请参考以下文章

centos安装java8(一键安装)

OpenJDK 在 jar 中找不到主类,而 OracleJDK 可以

CENTOS7 下Android 开发- Android Studio安装

Linux中rpm和yum安装软件

linux 安装 ORACLE JDK 8

与 SSL 的 mysql jdbc 连接在 tls 握手级别失败