我實現了利用CXF(2.7.1)與WSDL & XSD,其中包括,除其他事項外,下列類型的工作Web服務:爲什麼這個XSD元素通過默認的ValidationEventHandler?
<xs:simpleType name="SimpleIdType">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Za-z0-9:\.\-]{20}"/>
</xs:restriction>
</xs:simpleType>
我解釋這是:只接受20字符串其中只包含字母數字字符和':','。'和' - '。
當我發送一個SOAP消息到我的web服務並且相應的元素包含FAAAAAAAAAAAAAAAAAAA
時,服務當然可以正確接受,沒有任何錯誤。
然而,如果我發送相同的SOAP消息與#
代替F
(即#AAAAAAAAAAAAAAAAAAA
),服務仍然接受消息,而不會發出任何驗證錯誤(解組或其他方式)。
爲什麼?
是不是default ValidationEventHandler應該通過拋出「Unmarshalling Error」來處理?
哇。 +1已經。我會徹底閱讀你的文章,並讓你知道,如果這對我有用。我是否理解正確,這意味着也設置我自己的[ValidationEventHandler](https://jaxb.java.net/jaxb20-ed/api/javax/xml/bind/ValidationEventHandler.html)? – Withheld
好的,我試着實現你的解決方案,但是我在[我的CXF生成的代碼](http://stackoverflow.com/q/19184721/1864054)中沒有'main()'。 [哪裏](http://stackoverflow.com/q/19184721/1864054)鉤我的綱領和Unmarshaller代碼? – Withheld
看起來我正在接近這個錯誤的方式(因爲涉及到CXF):根據[this](http://svn.apache.org/repos/asf/cxf/trunk/distribution/src/main/release/samples/wsdl_first_xmlbeans /),類路徑(及其內容)上的cxf.xml配置文件的存在會更改CXF的默認行爲,即消息參數不會被驗證。這是令人困惑的,因爲如果我發送「?」,我肯定會得到「解組錯誤」(默認爲!)而不是'xs:timestamp' ...我錯過了什麼? – Withheld