如何通过 ssl 从 wsdl 生成 jax ws 工件

How to generate jax ws artifacts from wsdl over ssl

我需要从 wsdl 为我的 jaxws 客户端生成 jax ws 工件 我的代码如下:

String keystore = "D:\mycert/mr.jks";
String storepass = "changeit";
String storetype = "JKS";

String[][] props = {
    {"javax.net.ssl.trustStore", keystore},
    {"javax.net.ssl.keyStore", keystore},
    {"javax.net.ssl.keyStorePassword", storepass},
    {"javax.net.ssl.keyStoreType", storetype}
};
for (String[] prop : props) {
    System.getProperties().setProperty(prop[0], prop[1]);
}
ProcessBuilder builder = new ProcessBuilder(
    "cmd.exe", "/c", "wsimport -keep -verbose https://some.sw.somewhere.az:5555/?wsdl");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
    line = r.readLine();
    if (line == null) {
        break;
    }
    System.out.println(line);
}

正在解析 WSDL...

[ERROR] sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Failed to read the WSDL document: https://some.sw.somwhere.com:5555/?wsdl, because 1) could not find the document; /2) the document could not be read; 3) the root element of the document is not <wsdl:definitions>.
[ERROR] failed.noservice=Could not find wsdl:service in the provided WSDL(s): 

至少需要提供一个 WSDL,其中至少有一个服务定义。 未能解析 WSDL。

我用SOAPUI解决了这个问题,source