我用来wsimport
从特定的WSDL
. 我尝试了 Java 10,但握手失败,然后我尝试了 Java 9,一切正常。
我观察了使用wireshark
的通信,原因很清楚,我通信的服务器仍然使用 TLSv1,我猜 Java 10wsimport
不再容忍这种情况(至少默认情况下不会),尽管 9 可以。
我对服务器无能为力,所以问题变成了如何运行具有 TLSv1 容差的 Java 10 wsimport?
进行了更多调查,最有用的测试是使用ssl labs完成的。事实证明,服务器支持弱密码套件:TLS_RSA_WITH_3DES_EDE_CBC_SHA
.
通过添加以下 java 选项解决了该问题:
-Dhttps.cipherSuites=SSL_RSA_WITH_3DES_EDE_CBC_SHA
无法将密码套件指定为TLS_RSA_WITH_3DES_EDE_CBC_SHA
。Java 的命名约定要求它被称为SSL_RSA_WITH_3DES_EDE_CBC_SHA
.
旁注:上面@nullpointer 评论中提到的错误在我尝试的所有三个版本中都已解决:Java 9/10/11。