| Summary: | DBWS should support doc/wrapped in addition to doc/literal | ||
|---|---|---|---|
| Product: | z_Archived | Reporter: | Mike Norman <michael.norman> |
| Component: | Eclipselink | Assignee: | Nobody - feel free to take it <nobody> |
| Status: | CLOSED INVALID | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | david.mccann, eclipselink.dbws-inbox |
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | All | ||
| Whiteboard: | |||
|
Description
Mike Norman
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 |