我正在使用https服务网址。我用SAAJ编写了java客户端。但我得到以下例外: -
java.security.PrivilegedActionException:com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:消息发送失败 sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径
我从服务URL导出证书(使用浏览器。)并保存为jssecacerts 然后使用以下命令来实现这个 - > keytool -import -file jssecacerts -keystore cacerts
现在我使用SAAJ编写了java客户端,如下所示: -
System.setProperty("javax.net.ssl.keyStore", "C:/Program Files/Java/jre6/lib/security/cacerts");
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
URL url = new URL("https://whatever.com/service");
SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
connection = scf.createConnection();
response = connection.call(message, url);
我不知道我错在哪里...请帮助......我......我遇到了麻烦...... 在此先感谢..
答案 0 :(得分:1)
您无需设置这些系统属性。如果您成功将证书导入jre的cacerts文件中,那么它们应该是好的。我假设您正在使用“C:/ Program Files / Java / jre6 / bin / java.exe”中的“java”来实际运行您的程序。
不过,为什么你会收到PrivilegedActionException?这意味着您正在使用某种SecurityManager或在PrivilegedAction调用中运行吗?