簡體   English   中英

對由Apache CXF創建的Wsdl施加限制

[英]Imposing limits on Wsdl created by Apache CXF

我目前正在從事開發一些Web服務的項目,並且我們選擇了Apache CXF作為首選技術。 我們正在使用后契約的方法(我們正在對服務進行編碼,並允許CXF為我們生成wsdl。)雖然我們已經能夠使用Java-WS批注根據需要設置某些字段,但是我們無法弄清楚如何對wsdl中的字符串元素施加字符限制。 雖然這不是什么大問題(我們與正在與之合作的供應商關系相當密切,所以暫時達成一項協議,即不要讓收到的請求超出上述長度就足夠了),但我們很好奇是否存在一種做到這一點的方法。

有沒有辦法使用CFX對輸入字符串施加20個字符的限制?

這不是JAXB提供的。 但是,有一個項目已經分叉了jaxb-ri,它為此添加了支持:

https://github.com/whummer/jaxb-facets

如果不需要在WSDL中反映該方面,則可以將驗證作為JAXB bean的setter方法的一部分進行。

setName(String s) {
   if (s.length() > 20) thrown new Exception(....);
   name = s;
}

在解組可驗證內容的位置后,JAXB bean還可能響應一些事件。 請參閱Javadoc中的afterUnmarshall描述: http ://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.html

當您對Web服務進行自下而上的方法時(例如,首先實現,之后才是WSDL),您會受到Web服務引擎對數據類型的限制的束縛。

但是,如果您采用自上而下的方法(首先使用WSDL,之后引入),則可以消除此類問題,但是需要您知道如何開發WSDL和應用構面(限制)。

幸運的是,CXF支持這兩種方式,您可以嘗試wsdl2java

還要記住,添加構面並不意味着它將由Webservice引擎強制實施。 盡管我不確定CXF,但大多數引擎都忽略了它。

暫無
暫無

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

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