我正在使用的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?
感谢。
答案 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标头值以查看工具之间的差异。然后查看下载的内容。它应该让你知道下一步该做什么。如果您仍然无法解决问题,请使用其他信息更新问题。