java - 从 wsdl 到客户端 java web 服务(服务器有自签名证书)

标签 java eclipse web-services ssl wsdl

我需要创建网络服务客户端,提供服务的公司向我们发送 wsdl 文件。我有 wsdl 文件、用户名和密码、服务 url 和 txt 文件,其中包含一些键,如“20 a9 38 4e 82 3a 94 d1 ...”。服务器具有自签名证书,我尝试通过 InstallCert.java 获取证书,使用 keytool 生成 keystore 等。当我使用 axis2 wsdl2java 从 wsdl 生成客户端时,它会生成客户端,但在生成过程结束时会出现端口 443 错误。当我在 eclipse 中通过 Web 服务资源管理器测试服务时,我得到了 javax.net.ssl.SSLHandshakeException sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 错误。我也检查了这个错误,但我找不到解决方案。

谁能告诉我我应该如何在带有 jdk 1.6 的 eclipse apache tomcat 中生成客户端,普通客户端有什么区别。

最佳答案

首先,URL端点应该是httpS而不是http 并使您的信任库/ keystore 可用于 JVM。

参见:http://blog.technogemsinc.com/2008/02/https-connection-in-java.html

我也用过https://code.google.com/p/misc-utils/wiki/JavaHttpsUrl 大约一年前..

从以下两个选项中使用对您来说更方便的选项

  1. 让 truststore 对 jvm 可用

    -Djavax.net.ssl.trustStore="<%PATH_TO_TRUST_STORE%>\testkeys"

  2. 告诉您的 Java/套接字工厂使用这个“信任库”:

    System.setProperty( "javax.net.ssl.trustStore", "keystore_file");

    System.setProperty( "javax.net.ssl.trustStorePassword", "somepass");

关于java - 从 wsdl 到客户端 java web 服务(服务器有自签名证书),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22655661/

相关文章:

Javac - 编译不同目录中的.java文件

java - 如何更改为 case 语句

java - 从 adt 使用 eclipse 后,在 mac 上创建纯 java 项目时出错

macos - 如何让 AppleScript SOAP 与现有的 SOAP 网络服务一起工作(例如 W3Schools 的CelsiusToFarenheit 示例)?

c# - 具有多个 IP 地址的网络接口(interface)上的 WCF Web 服务发现

java - 检查通用函数android java中的对象类型

java - 覆盖子类实体中@MappedSuperclass 的继承属性(例如继承关系表名、列名...等)

java - org.eclipse.jst.ws.util.JspUtils.markup(String text) 方法的目的是什么

android - 无法调用 native 方法 eclipse

java - 如何计算RESTful Web服务的响应时间