WSDL is incorrectly generated with JAX-WS annotations when configuring custom Header class
Issue
- Created a custom Header class that we will be including in the soap request.
-
It seems that in the generated WSDL, the header element is duplicated for each different operation, instead of being defined only once.
-
Here's where the issue lie in the generated wsdl,
<xs:element name="MyHeader" type="myHeader"/>
<xs:element name="myOperation2Response" type="myOperation2Response"/>
<xs:complexType name="myOperation2Response">
<xs:sequence>
<xs:element form="qualified" minOccurs="0" name="MyOperation2Out" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="myOperation1" type="myOperation1"/>
<xs:complexType name="myOperation1">
<xs:sequence>
<xs:element form="qualified" minOccurs="0" name="MyOperation1In" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="MyHeader" type="myHeader"/>
<xs:element name="myOperation1Response" type="myOperation1Response"/>
<xs:complexType name="myOperation1Response">
<xs:sequence>
<xs:element form="qualified" minOccurs="0" name="MyOperation1Out" type="xs:string"/>
</xs:sequence>
- What we expect is to have something to get generated like the below,
<xs:element name="myOperation1" type="tns:myOperation1"/>
<xs:element name="myOperation1Response" type="tns:myOperation1Response"/>
<xs:element name="myOperation2" type="tns:myOperation2"/>
<xs:element name="myOperation2Response" type="tns:myOperation2Response"/>
<xs:complexType name="myOperation2">
<xs:sequence>
<xs:element form="qualified" minOccurs="0" name="MyOperation2In" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType final="extension restriction" name="myHeader">
<xs:sequence>
<xs:element form="qualified" name="MyText" type="xs:string"/>
<xs:element form="qualified" name="MyUser" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="myOperation2Response">
<xs:sequence>
<xs:element form="qualified" minOccurs="0" name="MyOperation2Out" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="myOperation1">
<xs:sequence>
<xs:element form="qualified" minOccurs="0" name="MyOperation1In" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="myOperation1Response">
<xs:sequence>
<xs:element form="qualified" minOccurs="0" name="MyOperation1Out" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="MyHeader" nillable="true" type="tns:myHeader"/>
Environment
- JBoss Enterprise Application Platform (EAP)
- 6.1.0
- JBossWS-CXF
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.