我创建了一个CXF Web服务。从WSDL和wsdl2java我已经生成了java类,特别是我有这个枚举:
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Unmarshalling Error: cvc-enumeration-valid: Value 'P3' is not facet-valid with respect to enumeration '[P, P2]'. It must be a value from the enumeration.</faultstring>
</soap:Fault>
Web服务运行良好,但我需要进行架构验证。 使用CXF 2.7.14,当我使用错误的PType值(例如P3)调用该方法时,我得到了结果:
<HTML>
<HEAD>
<TITLE>HELLO</TITLE>
</HEAD>
<BODY ID="testbody" onload="testbody.style.display = '';" style="display: none;">
<div align="CENTER">
HELLO WORLD!
</div>
</BODY>
</HTML>
如果我在调用方法时将CXF版本更新到3.1.8,结果是CXF将字段PType转换为null并且我没有解组错误。
两种情况下的所有代码完全相同......怎么可能?感谢。