如何在https地址的wsdl中生成Eclipse中的Web服务客户端?

时间:2012-09-19 13:08:05

标签: java eclipse ssl keystore

我可以从

生成一个客户端
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. 使用浏览器打开刚刚下载的依赖项并复制其新位置,例如

    文件:///path/to/my/schema/service.xsd

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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