如何通过 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
我需要从 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