我对SOAP web服务使用CXF。是否存在结果SOAP响应不符合WSDL的情况?我让CXF通过wsdl2java从WSDL生成代码。
例如,我有一个具有minOccurs=1
的实体。CXF会强制相应的Java元素不为空吗?
还有其他差异吗?
示例:我有以下WSDL类型:
<xsd:complexType name="PropertyList">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" name="property"
type="pms-xsd:Property" />
</xsd:sequence>
</xsd:complexType>
被翻译成:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "PropertyList", propOrder = {
"property"
})
public class PropertyList {
@XmlElement(required = true)
protected List<Property> property;
...
根据我的理解,这要求List property
存在(以XmlElement的形式),但不要求至少存在一个属性,这是WSDL所要求的。这是一个可能的问题,还是我理解错了?
要执行模式,您需要启用模式验证。请检查此处以启用模式验证。示例代码片段如下所示。
<jaxws:endpoint name="{http://apache.org/hello_world_soap_http}SoapPort"
wsdlLocation="wsdl/hello_world.wsdl"
createdFromAPI="true">
<jaxws:properties>
<entry key="schema-validation-enabled" value="true" />
</jaxws:properties>
</jaxws:endpoint>
注意:为了工作,您需要正确设置wsdl位置。以便在模式验证期间引用WSDL文件。