Community
Participate
Working Groups
customer requirement
Based on my initial investigation of "document/wrapped" I have determined that we currently do support the "Wrapped Document/Literal" pattern. Note that there is no "Document/Literal" format/style, only RPC encoded/literal and Document encoded/literal. The wrapped pattern makes use of the positive aspects of both document/literal and rpc/literal. The following points are considered required to satisfy the wrapped pattern: 1 - Only one Part Definition in the Input & Output Messages in WSDL 2 - "Part" Definitions are wrapper elements 3 - Child Elements of "Part" Element Type will be SEI Method parameter 4 - Input Wrapper Element name should match with Operation name 5 - <Output Wrapper Element Name> = <Operation Name> + "Response" (not required) 6 - In the WSDL Binding section, soap:binding style = "document" 7 - soap:body definitions must specify use="literal" and nothing else
Following is the WSDL that was generated from our P1testWebServiceSuite with comments indicating where each of the above-mentioned points are present in the document: <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="p1TestService" targetNamespace="urn:p1TestService" xmlns:ns1="urn:p1Test" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:p1TestService" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types> <xsd:schema xmlns:tns="urn:p1TestService" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:p1TestService" elementFormDefault="qualified"> <xsd:import schemaLocation="eclipselink-dbws-schema.xsd" namespace="urn:p1Test"/> <xsd:complexType name="p1TestResponseType"> <xsd:sequence> <xsd:element name="result" type="xsd:int"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="p1TestRequestType"> <xsd:sequence> <!-- Child Elements of "Part" Element Type will be SEI Method parameter --> <xsd:element name="SIMPLARRAY" type="ns1:SOMEPACKAGE_TBL1"/> <xsd:element name="FOO" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <!-- <Output Wrapper Element Name> = <Operation Name> + "Response" --> <xsd:element name="p1TestResponse" type="tns:p1TestResponseType"/> <!-- Input Wrapper Element name should match with Operation name --> <xsd:element name="p1Test" type="tns:p1TestRequestType"/> </xsd:schema> </wsdl:types> <wsdl:message name="p1TestRequest"> <!-- Only "One" Part Definition in the Input & Output Messages in WSDL --> <!-- "Part" Definitions are wrapper elements --> <wsdl:part name="p1TestRequest" element="tns:p1Test"></wsdl:part> </wsdl:message> <wsdl:message name="p1TestResponse"> <!-- Only "One" Part Definition in the Input & Output Messages in WSDL --> <!-- "Part" Definitions are wrapper elements --> <wsdl:part name="p1TestResponse" element="tns:p1TestResponse"></wsdl:part> </wsdl:message> <wsdl:portType name="p1TestService_Interface"> <wsdl:operation name="p1Test"> <wsdl:input message="tns:p1TestRequest"></wsdl:input> <wsdl:output message="tns:p1TestResponse"></wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="p1TestService_SOAP_HTTP" type="tns:p1TestService_Interface"> <!-- In the WSDL Binding section, soap:binding style = "document" --> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="p1Test"> <soap:operation soapAction="urn:p1TestService:p1Test"/> <wsdl:input> <!-- soap:body definitions must specify use="literal" and nothing else --> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="p1TestService"> <wsdl:port name="p1TestServicePort" binding="tns:p1TestService_SOAP_HTTP"> <soap:address location="REPLACE_WITH_ENDPOINT_ADDRESS"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
As far as I am concerned, at this point we implement the wrapped doc/literal pattern correctly, and this is not a bug. Closing accordingly.
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink