2012-10-22 38 views
1

我正在使用的wsdl中的xsd引用了以'dot slash'(./)開頭的路徑。WSDL中的當前目錄'dot slash'(./)(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::從wsdl創建模型的錯誤:'ExampleType'已經被定義'。

如果我刪除'dot slsh'(XSD=xsd/my-service.xsd),則不會再發生異常,並且一切正常。

這是一個錯誤?爲什麼會發生?有沒有辦法避免這種情況,而不必修改wsdl?

謝謝。

回答

1

它發生的原因與您的JDeveloper工具如何將XML Schema集放在一起。 'ExampleType' is already defined'.裝置的兩件事情之一:

  • 相同 XSD限定ExampleType加載兩次使用不同基URI小號或多種:不同的「字符串」表示,然而,當在服務器上解除引用它指向相同的資源;

  • ExampleType在或多個(不同的)XSD「地點」定義爲:可以是WSDL類型/模式部分內,和/或外部XSD文件。

當你改變了URL,它要麼使它無效(額外的參考是沒有更多)OR JDeveloper的URI比較能夠正確地執行。

要進行診斷,您必須先確定從哪裏下載哪些資源。

在運行JDeveloper和其他工具時,使用HTTP調試器(例如,使用tcpmon作爲代理並監視通過它的流量)。比較跟蹤並查找每個工具正在嘗試解析的URL。

比較GET標頭值以查看工具之間的差異。然後看看下載的內容。它應該給你一個好主意,接下來該做什麼。如果您仍然無法弄清楚,請使用其他信息更新問題。

相關問題