【问题标题】:XSD file path in WSDL include is wrongWSDL 包含中的 XSD 文件路径错误
【发布时间】:2011-08-26 11:28:32
【问题描述】:

我或多或少是 Web 服务的初学者,但我尝试在谷歌上搜索,但没有任何结果。

我有一个使用 Metro 堆栈用 Java 编写的 Web 服务,当我在本地 JBoss 5.1.0 实例上运行它时运行良好,但是当我将它移到我们的测试服务器时,我开始遇到问题。

服务部署正确,我可以照常查看 WSDL:https://myserver.myorg/path/service?wsdl

但是,wsimport 无法从这里生成客户端存根,当我仔细查看 WSDL 时,我看到了:

<xsd:schema>
  <xsd:import namespace="http://mynamespace/" schemaLocation="https://testserver.myorg:443/path/Service?null"/>
</xsd:schema>

而不是我在本地运行它时看到的,它的 schemaLocation 设置为 http://localhost:8080/path/Service?xsd=1

当我尝试在网络浏览器中手动输入 xsd=1 而不是 null 时,我收到 404 错误。

有谁知道这可能是什么原因以及如何解决它?

谢谢, 拉吉。

【问题讨论】:

  • 你的测试服务器是什么?我假设另一个 JBoss 服务器?你如何部署你的应用程序?是否有应用程序/Web 服务器的“管理”页面/控制台供您进入并进行更改?
  • 是的,测试服务器是JBoss 5.1.0,和dev版本一样。我像往常一样使用 JBoss/Tomcat 部署它,方法是将 war 文件放入 server/default/deploy 目录。

标签: java web-services soap xsd java-metro-framework


【解决方案1】:

我认为问题在于您的 XSD 位于 SSL 连接后面,因此您的 wsimport 需要知道并信任服务器 SSL 证书。

为了实现这一点,您需要设置一个新的 Java Keystore 文件(.jks 文件),或者重用现有的,如果您已经拥有它,添加服务器 SSL 证书(为此,您可以使用keytool 随 JDK 提供),并在 wsimport 调用中使用下一个 JVM 参数将 Keystore 声明为 Trustore:

-Djavax.net.ssl.trustStore=${truststore.location} -Djavax.net.ssl.trustStorePassword=${ssl.password}

【讨论】:

  • 但问题是在我使用 wsimport 之前 - 服务器似乎没有为 WSDL 正确生成 XSD。
【解决方案2】:

测试 JBoss 服务器每周重启一次,重启后 XSD 文件正常显示。抱歉打扰了 - 我应该学会在发帖前将其关闭再打开 :)。

【讨论】:

    猜你喜欢
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2014-10-21
    • 2021-07-11
    相关资源
    最近更新 更多