Java 如何接受SOAP头部件上的mustUnderstand和其他属性?
我有一个用于基于soap的web服务的WSDL,其中包含一个自定义头:Java 如何接受SOAP头部件上的mustUnderstand和其他属性?,java,web-services,soap,wsdl,Java,Web Services,Soap,Wsdl,我有一个用于基于soap的web服务的WSDL,其中包含一个自定义头: <message name="Request"> <part element="common:Request" name="Request"></part> <part element="common:myHeader" name="Header"></part> </message> <operation name="proce
<message name="Request">
<part element="common:Request" name="Request"></part>
<part element="common:myHeader" name="Header"></part>
</message>
<operation name="processRequest">
<soap:operation soapAction=""/>
<input>
<soap:body parts="Request" use="literal"/>
<soap:header message="tns:Request" part="Header" use="literal"></soap:header>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
由于我的消费者正在使用的工具,修改Axis生成的存根以忽略这些属性是不可行的,正如其他地方所建议的那样。此外,如果我要声明自己是soap服务,那么我的服务似乎应该允许这些属性。我的问题是,如何修改标题定义以适应这些可选属性,并在理想情况下规划我可能没有预料到的属性。是否有一个标准类型可以扩展用于标题类型定义,或者有一个通用的最佳实践用于此情况?是的,您可以使用编辑器进行修改。功能性使用30天。是的,您可以使用编辑器进行修改。功能性使用30天。今天我找到了解决问题的两种方法。它们都解决了问题,但我不确定哪一个更好,所以我将在这里介绍它们 这两种解决方案都以修改
myHeaderType
的定义为中心,以便它能够容纳意外的SOAP定义的属性
tExtensibleAttributesDocumented
的类型,包括以下非常灵活的属性定义:
<xs:anyAttribute namespace="##other" processContents="lax"/>
据我所知,这基本上有相同的效果如果我不知道这些解决方案之间有什么细微的差别,我很乐意听听。如果对这种情况有一个公认的标准,我就找不到。这个解决方案的另一个缺点是,我无法根据模式中的属性定义来验证属性。将
processContents
属性更改为strict
,即使是定义良好的mustUnderstand
和actor
属性也无法被处理。我今天能够找到解决问题的两个方法。它们都解决了问题,但我不确定哪一个更好,所以我将在这里介绍它们
这两种解决方案都以修改myHeaderType
的定义为中心,以便它能够容纳意外的SOAP定义的属性
tExtensibleAttributesDocumented
的类型,包括以下非常灵活的属性定义:
<xs:anyAttribute namespace="##other" processContents="lax"/>
据我所知,这基本上有相同的效果如果我不知道这些解决方案之间有什么细微的差别,我很乐意听听。如果对这种情况有一个公认的标准,我就找不到。这个解决方案的另一个缺点是,我无法根据模式中的属性定义来验证属性。将
processContents
属性更改为strict
,即使是定义良好的mustUnderstand
和actor
属性也无法被处理。我真的在寻找一个指针,说明如何更好地编写XML以适应这种情况,而不是生成它或将它隐藏在GUI后面的工具。我今天取得了一些成功,所以我将为后人发布我的答案。我实际上是在寻找如何更好地编写XML以适应这种情况的指针,而不是生成XML或将其隐藏在GUI后面的工具。我今天取得了一些成功,所以我将把我的答案留给后人。
<xs:anyAttribute namespace="##other" processContents="lax"/>
<xs:complexType name="myHeaderType">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleAttributesDocumented">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="JobID" type="tns:JobIDType" minOccurs="1" maxOccurs="1"/>
<xs:element name="TransactionID" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="myHeaderType">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="JobID" type="tns:JobIDType" minOccurs="1" maxOccurs="1"/>
<xs:element name="TransactionID" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>