java - 当我在 https URL 上运行 WDSL2Java 时出现异常

标签 java web-services apache-axis keytool

我尝试在 https webservice 上运行 wsdl2java 命令,但出现此异常:

C:\axis2-1.6.2\bin>wsdl2java.bat -uri https://myserver.ad:8443/PAS/services/WSCentralService?wsdl
Using AXIS2_HOME:   C:\axis2-1.6.2
Using JAVA_HOME:    C:\Program Files\Java\jdk1.7.0_21
log4j:WARN No appenders could be found for logger (org.apache.axis2.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException: Error parsing WSDL
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerationEngine.java:181)
        at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
        at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886)
        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:515)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1299)
        at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerationEngine.java:99)
        ... 2 more
Caused by: java.security.cert.CertificateException: No subject alternative names present
        at sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:142)
        at sun.security.util.HostnameChecker.match(HostnameChecker.java:91)
        at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:347)
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:203)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1323)
        ... 15 more

我运行了 keytool 命令来导入/导出 myserver url 的证书,但是我仍然收到此错误!

请帮忙!

谢谢。

最佳答案

我不熟悉 wsdl2java,但如果您愿意接受其他选择,请考虑尝试 Apache's XMLBeans 。 使用scomp (Schema Compiler)您可以根据 Web 服务 WSDL url 生成 Java 类。

例如,您将运行以下命令:

scomp -dl schema -src [generated source folder name] -out [generated jar name].jar [WSDL URL] -compiler C:\Java\jdk1.7.0_13\bin\javac.exe

该命令将采用您提供的[WSDL URL],生成一个包含 java 源文件和 .jar 的文件夹。 当然你必须将它定向到你的java安装路径。

关于java - 当我在 https URL 上运行 WDSL2Java 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20030464/

相关文章:

Java nio 连接正在创建多个套接字级连接,为什么?

java - 方法完成后将进度条重置为零 java swing

java - 使用 Metro 的 Ws-Security header

java - 区别: 'sec:authentication' & 'sec:authentication property'

java - 在 Java Swing 中显示运动图像

java - Tomcat 服务器需要重新启动才能获取更新的 Neo4J 数据库

java - 向linux服务器发送http请求

c# - System.PlatformNotSupportedException : Speech Recognition is not available on this system. 找不到 SAPI 和语音识别引擎

php - PHP SoapServer 是否受最大执行时间影响?

web-services - org.apache.axis2.AxisFault : Transport error: 403 Error: Forbidden