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的主要内容,如果未能解决你的问题,请参考以下文章
OpenJDK 在 jar 中找不到主类,而 OracleJDK 可以