簡體   English   中英

CXF java2ws:如何包含外部 xsd 文件?

[英]CXF java2ws: how to include external xsd files?

我為幾個 web 服務(來自服務器服務定義)生成 WSDL 文件,其中我已經為用作參數的 bean 提供了 XML 模式(*.XSD)。 我如何告訴 java2ws 引用這些(包括外部 XSD)而不是在 WSDL 中生成自己的?

我已經嘗試過 -createxsdimports,但這確實會生成自己的 XSD 文件。

是否有一個 Java 注釋可以讓 CXF 知道每個文件/包的 XSD 在哪里?

嘗試@XmlSchema注釋。 它包含一個location參數,用於告訴 JAXB 存在一個真實的模式:

@XmlSchema(location="http://www.example.com/xsds/foo.xsd")
package com.example.foo;

我有一個導入外部模式文件的 CXF Web 服務。 當我建造它時; 我花了很多時間試圖找出你想要實現的確切場景。 不幸的是,在從 java 生成 WSDL 時,CXF 似乎不尊重 @XmlSchema(location="") 注釋。 CXF 的主要開發者 Daniel Kulp 當時告訴我,這是一個已知問題,但沒有足夠多的人抱怨它,所以它在他們的優先事項列表中並不高。

所以我最終手動編寫了 WSDL,然后從 WSDL 文件生成 SEI。 當然,如果您手寫 WSDL,您可以隨心所欲。

請記住,這樣做的一個副作用是外部模式文件需要通過 HTTP GET 訪問——在生成 SEI 時和當 web 服務應用程序啟動時——CXF 將在啟動時檢索模式文件。 當然,當您生成客戶端時也是如此。 這確實會產生一些混亂的架構依賴。 but there appears to be no way to tell CXF "myschema.xsd" is available at http://myurl.com/myschema.xsd but ALSO in /src/main/schema/myschema.xsd.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM