【问题标题】:How to generate a web service client in Eclipse from a wsdl at an https address?如何在 Eclipse 中从 https 地址的 wsdl 生成 Web 服务客户端?
【发布时间】:2012-09-19 13:08:05
【问题描述】:

我可以从

生成一个客户端
http://localhost:8080/service?wsdl

很好,但现在我想从

生成一个客户端
https://localhost:8081/service?wsdl

Eclipse 说该位置无效,当 Eclipse 进行尝试时,我的 Jetty 服务器说

javax.net.ssl.SSLException:收到致命警报:certificate_unknown

确认安全异常后,我可以在浏览器中轻松导航到 wsdl,所以它肯定存在。

我尝试将 wsdl 下载到我的本地文件系统,但我仍然无法从那里生成它,因为 wsdl 包含对其他 https 位置的引用,例如。

<xsd:import namespace="http://my.service.namespace/" schemaLocation="https://localhost:8081/serviceSchema?xsd=1"/>

我已修改 eclipse.ini 以包含以下几行:

-Djavax.net.ssl.trustStore="/path/to/my/truststore/.keystore"
-Djavax.net.ssl.trustStorePassword="mytruststorepassword"
-Djavax.net.ssl.keyStore="/path/to/my/keystore/.keystore"
-Djavax.net.ssl.keyStorePassword="mykeystorepassword"

无济于事。 Eclipse 似乎也没有与此相关的任何首选项设置。有什么方法可以通过 eclipse 做到这一点,还是我必须使用一些外部工具?

编辑: 对于其他有同样问题的人,这是我的解决方法。

  1. 在浏览器中导航到 wsdl,然后将其下载到您的文件系统中。
  2. 导航到它所依赖的任何内容,并下载它。
  3. 用浏览器打开你刚刚下载的依赖并复制它的新位置,例如。

    file:///path/to/my/schema/service.xsd

  4. 将其粘贴到您下载的 wsdl 文件中,其 https 地址所在的位置,对任何其他架构重复此操作,然后保存。
  5. 复制你的wsdl文件的文件位置,如上
  6. 在 Eclipse 中,生成一个 New->Other...->Web Service Client 并将文件位置粘贴到服务定义中,它应该可以工作。感谢大家的帮助!

【问题讨论】:

  • 您应该下载 WSDL 和它所依赖的所有工件(例如 xsd)。修改架构位置并生成您的客户端...不要忘记将这些 WSDL 添加到您的版本控制系统(这是您的合同)
  • 但是如果我修改了schema位置,客户端会不会生成错误?
  • 为什么?您应该始终在代码中设置端点地址......其他一切都适用于“hello world”应用程序。在现实世界中,您可能有不同的端点地址用于生产、登台、测试等。
  • 在最好的情况下,服务提供者发布的 WSDL 和 XSD 没有绝对引用。
  • 我会试一试。我只是在(不正确的?)假设下,您永远不应该修改自动生成的文件,尤其是当它们将用于生成其他工件时。

标签: java eclipse ssl keystore


【解决方案1】:

将 wsdl 保存到本地文件系统并从那里生成,这似乎是 Eclipse 的一个错误,请检查this 链接。

【讨论】:

  • 如果您还保存任何依赖项(模式),这将有效,谢谢。
【解决方案2】:

我遇到了同样的问题,接受答案的链接对我不起作用,但我使用以下步骤生成了服务:

  1. 将 wsdl 保存为本地文件。 (如myService.wsdl)
  2. 将 wsdl 文件复制到项目中。
  3. 右键单击wsdl文件->[Web服务]->[生成客户端]

【讨论】:

    猜你喜欢
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2012-01-29
    • 2018-07-03
    • 2013-01-02
    • 1970-01-01
    相关资源
    最近更新 更多