当前目录'点斜杠' WSDL中的(./)(XSD路径)

时间:2012-10-22 08:13:51

标签: path xsd jaxb wsdl

我正在使用的wsdl中的xsd引用了一个以'dot slash'开头的路径(./).

<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 ::从wsdl创建模型时出错:'ExampleType'已经定义'。

如果我删除'dot slash'(XSD=xsd/my-service.xsd),则不会再发生异常,一切正常。

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

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

当您更改URL时,它会使其无效(不再需要额外的引用)或者JDeveloper URI compare能够正确执行。

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

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

比较GET标头值以查看工具之间的差异。然后查看下载的内容。它应该让你知道下一步该做什么。如果您仍然无法解决问题,请使用其他信息更新问题。