【问题标题】:Current directory 'dot slash' (./) in WSDL (XSD path)WSDL(XSD 路径)中的当前目录“点斜杠”(./)
【发布时间】:2012-10-22 08:13:50
【问题描述】:

我正在使用的 wsdl 中的 xsd 使用以“点斜杠”(./) 开头的路径进行引用。

<xsd:schema>
    <xsd:import namespace="urn:my.name.space.be" schemaLocation="http://fictive.url.be:11001/path/to/wsdl/my-service?XSD=./xsd/my-service.xsd"/>
</xsd:schema>

路径有效,可以在浏览器中访问xsd;例如,它也适用于 Soap UI。但是当我尝试使用 Jdeveloper 生成代理时,我遇到了“WebServiceException: : Error creating model from wsdl: 'ExampleType' is already defined”。

如果我删除“点斜线” (XSD=xsd/my-service.xsd),则异常不会再发生,一切正常。

这是一个错误吗?为什么会这样?有什么方法可以避免这种情况,而不必修改 wsdl?

谢谢。

【问题讨论】:

    标签: path xsd jaxb wsdl


    【解决方案1】:

    发生这种情况的原因与您的 JDeveloper 工具如何组合 XML Schema 集有关。 'ExampleType' is already defined'. 表示两种情况之一:

    • 定义ExampleType相同 XSD被加载两次或更多使用不同的基本URIs:不同的“字符串”表示,但是当在服务器上取消引用时,它指向相同的资源;

    • ExampleType两个或更多(不同的)XSD“位置”中定义:可以在 WSDL 类型/架构部分和/或外部 XSD 文件中。

    当您更改 URL 时,它要么使其无效(不再有额外的引用),要么 JDeveloper URI 比较能够正确执行。

    要进行诊断,您必须首先弄清楚从哪里下载了哪些资源。

    在运行 JDeveloper 和其他工具时使用 HTTP 调试器(例如,使用 tcpmon 作为代理并通过它监控流量)。比较跟踪并查找每个工具试图解析的 URL。

    比较 GET 标头值以查看工具之间的差异。然后查看下载的内容。它应该让您对下一步做什么有一个好主意。如果您仍然无法弄清楚,请使用其他信息更新问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 2012-07-10
      相关资源
      最近更新 更多