1 Reply Latest reply on May 30, 2008 11:42 AM by JPatSoco

    Problems with OC4J Web services and Flex SOAPEncoder

    AtonJanne
      Hello!

      I got a problem trying to execute a web service running in Oracle OC4j 10.1.3.3, and a client side with Flex3. I generated the scripts for using the web service using Flex builder 3, but it's not making a valid call to web service. I debugged the call operation to the Flex SOAPEncoder which seems to generate an invalid soap message. The SOAPEncoder generates the following message;

      <SOAP-ENV:Envelope xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope/" xmlns=" http://www.w3.org/2001/XMLSchema"
      xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance">
      <SOAP-ENV:Body>
      <tns:getDocuments xmlns:tns=" http://modultek.atonpdm.document/">
      <tns:getDocuments>
      <tns:String_1>service manual</tns:String_1>
      </tns:getDocuments>
      </tns:getDocuments>
      </SOAP-ENV:Body>
      </SOAP-ENV:Envelope>

      Where the correct working soap message should be;

      <SOAP-ENV:Envelope xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope/" xmlns=" http://www.w3.org/2001/XMLSchema"
      xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance">
      <SOAP-ENV:Body>
      <tns:getDocuments xmlns:tns=" http://modultek.atonpdm.document/">
      <tns:String_1>service manaual</tns:String_1>
      </tns:getDocuments>
      </SOAP-ENV:Body>
      </SOAP-ENV:Envelope>

      Problem in the first message is that Flex SOAPEncoder generates an extra <tns:getDocuments> child tag, and Oracle app server can't handle it.

      Has someone any idea why SOAPEncoder is generating the extra operation tag, and is this behaviour configurable somehow or is the soapencoder broken?

      The wsdl is included in the following;

      <?xml version="1.0" encoding="UTF-8" ?>
      - <definitions xmlns=" http://schemas.xmlsoap.org/wsdl/" xmlns:soap12=" http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soap=" http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:mime=" http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns=" http://modultek.atonpdm.document/" name="DocumentOperationsService" targetNamespace=" http://modultek.atonpdm.document/">
      - <types>
      - <schema xmlns=" http://www.w3.org/2001/XMLSchema" xmlns:wsdl=" http://schemas.xmlsoap.org/wsdl/" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xmlns:soap11-enc=" http://schemas.xmlsoap.org/soap/encoding/" targetNamespace=" http://modultek.atonpdm.document/" elementFormDefault="qualified">
      - <complexType name="SimpleDocumentDM">
      - <sequence>
      <element name="docGroupDesc" type="string" nillable="true" />
      <element name="docRev" type="string" nillable="true" />
      <element name="docId" type="string" nillable="true" />
      <element name="docGroup" type="string" nillable="true" />
      <element name="docDesc1" type="string" nillable="true" />
      <element name="docDesc2" type="string" nillable="true" />
      <element name="docCode" type="string" nillable="true" />
      <element name="docDesc3" type="string" nillable="true" />
      <element name="docDesc4" type="string" nillable="true" />
      </sequence>
      </complexType>
      <element name="getDocuments" type="tns:getDocuments" />
      - <complexType name="getDocuments">
      - <sequence>
      <element name="String_1" type="string" nillable="true" />
      </sequence>
      </complexType>
      <element name="getDocumentsResponse" type="tns:getDocumentsResponse" />
      - <complexType name="getDocumentsResponse">
      - <sequence>
      <element name="return" type="tns:CollectionOfSimpleDocumentDM" nillable="true" />
      </sequence>
      </complexType>
      - <complexType name="CollectionOfSimpleDocumentDM">
      - <sequence>
      <element name="item" type="tns:SimpleDocumentDM" minOccurs="0" maxOccurs="unbounded" />
      </sequence>
      </complexType>
      <element name="getSimpleDocumentInformation" type="tns:getSimpleDocumentInformation" />
      - <complexType name="getSimpleDocumentInformation">
      - <sequence>
      <element name="String_1" type="string" nillable="true" />
      </sequence>
      </complexType>
      <element name="getSimpleDocumentInformationResponse" type="tns:getSimpleDocumentInformationResponse" />
      - <complexType name="getSimpleDocumentInformationResponse">
      - <sequence>
      <element name="return" type="tns:SimpleDocumentDM" nillable="true" />
      </sequence>
      </complexType>
      </schema>
      </types>
      - <message name="DocumentOperations_getDocuments">
      <part name="parameters" element="tns:getDocuments" />
      </message>
      - <message name="DocumentOperations_getDocumentsResponse">
      <part name="parameters" element="tns:getDocumentsResponse" />
      </message>
      - <message name="DocumentOperations_getSimpleDocumentInformation">
      <part name="parameters" element="tns:getSimpleDocumentInformation" />
      </message>
      - <message name="DocumentOperations_getSimpleDocumentInformationResponse">
      <part name="parameters" element="tns:getSimpleDocumentInformationResponse" />
      </message>
      - <portType name="DocumentOperations">
      - <operation name="getDocuments">
      <input message="tns:DocumentOperations_getDocuments" />
      <output message="tns:DocumentOperations_getDocumentsResponse" />
      </operation>
      - <operation name="getSimpleDocumentInformation">
      <input message="tns:DocumentOperations_getSimpleDocumentInformation" />
      <output message="tns:DocumentOperations_getSimpleDocumentInformationResponse" />
      </operation>
      </portType>
      - <binding name="DocumentOperationsSoapHttp" type="tns:DocumentOperations">
      <soap:binding style="document" transport=" http://schemas.xmlsoap.org/soap/http" />
      - <operation name="getDocuments">
      <soap:operation soapAction="" />
      - <input>
      <soap:body use="literal" />
      </input>
      - <output>
      <soap:body use="literal" />
      </output>
      </operation>
      - <operation name="getSimpleDocumentInformation">
      <soap:operation soapAction="" />
      - <input>
      <soap:body use="literal" />
      </input>
      - <output>
      <soap:body use="literal" />
      </output>
      </operation>
      </binding>
      - <service name="DocumentOperationsService">
      - <port name="DocumentOperationsBean" binding="tns:DocumentOperationsSoapHttp">
      <soap:address location=" http://procyon:8888/atonpdm/DocumentOperationsBean" />
      </port>
      </service>
      </definitions>

      Best regards, Janne