CXF能产生不符合WSDL的SOAP响应吗?



我对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文件。

最新更新