++Custom Serialization with Complex Data type (Nested Classes)

Hi,
We have a scenario wherein we need to write CUSTOM SERIALIZERS for complex datatypes like INVOICE & ORDER (INVOICE inturn has ADDRESS type among others, ORDER has ADDRESS type, a COLLECTION of type ORDERITEM each of which are Java Classes in themselves)
The example of Custom Serializer given in the SOA AS Dev Guide http://download.oracle.com/docs/cd/B31017_01/web.1013/b28975/custserial.htm#CFHHIBCA)
shows only a simple java type used for serialization and deserialization.
Can anyone please help us out by sharing any example depicting the CUSTOM SERIALIZERs for COMPLEX DATA TYPES?
Thanks in advance,
Pavan.

Hello,
Could you please post the code of your classes in the forum (at least the interfaces) ?
Regards
Tugdual Grall

Similar Messages

  • Call a method with complex data type from a DLL file

    Hi,
    I have a win32 API with a dll file, and I am trying to call some methods from it in the labview. To do this, I used the import library wizard, and everything is working as expected. The only problem which I have is with a method with complex data type as return type (a vector). According to this link, import library wizard can not import methods with complex data type.
    The name of this method is this:   const std::vector< BlackfinInterfaces::Count > Counts ()
    where Count is a structure defined as below:
    struct Count
       Count() : countTime(0) {}
       std::vector<unsigned long> countLines;
       time_t countTime;
    It seems that I should manually use the Call Library Function Node. How can I configure parameters for the above method?

    You cannot configure Call Library Function Node to call this function.  LabVIEW has no way to pass a C++ class such as vector to a DLL.

  • Creating Web service for PL/SQL Procedure with Complex Data Types

    I need to created web service for PL/SQL Procedure with Complex Data types like table of records as parameters, how do we map the pl/sql table type parameters with web service, how to go about these?

    Hello,
    When you are creating a service from a Stored Procedure, the OracleAS WS tools will create necessary Java and PL wrapper code to handle the complex types (table of record) properly and make them compatible with XML format for SOAP messages.
    So what you should do is to use JDeveloper or WSA command line, to create a service from your store procedure and you will see that most of the work will be done for you.
    You can find more information in the:
    - Developing Web Services that Expose Database Resources
    chapter of the Web Service Developer's guide.
    Regards
    Tugdual Grall

  • Working with complex data types in web services ...

    Hi All,
    I have created a webservice and created an interface for that in ADF. Now as my web service returns a complex data type, i followed the steps given in this article "http://www.oracle.com/technology/products/jdev/howtos/1013/wsadf/adfcomplexwstypes.html" and it works fine, my results also get displayed. But only issue is i get a warning "JBO-25009: Cannot create an object of type:java.util.calendar with value:2008-09-23T23:51:30.000+05:30" and if i replace all the java.util.Date with oracle.jbo.domain.Date then i get a warning "JBO-25009: Cannot create an object of type:oracle.jbo.domain.Date with value:2008-09-23T23:51:30.000+05:30". Now i am unable to understand this although i believe it is a data type mapping issue, but not sure how to rectify it.
    Anybody knows the wayout?
    Regards
    Lokesh

    Andre,
    Thanks for youe response. I also tried makeing data type as string in place of date in data control.xml and it worked fine. So it confirms that i am facing with exactly similar issue as yours.
    I tried solution 2 mentioned in Frank's mail but its not helping[in fact i am already using web proxy as i am delaing with complex data types]. I created a web proxy and in java bean i placed break points to check the control flow[in order to check the root cause] but control never reaches the java bean!! I am not sure about the cause for it...control should pass through java bean isn't it??
    I am quite new to SOA...so can somebody just elaborate on how to rectify this using web proxy. I have been using this rl "http://www.oracle.com/technology/products/jdev/howtos/1013/wsadf/adfcomplexwstypes.html" to work with web proxies" to work with proxies.
    Regards
    Lokesh

  • Consuming an ASP web service which responds with complex data types...

    Here's my problem - I'm trying to consume a web service from a provider that uses complex data types.
    The starting part of the WSDL looks like this (I've not included the whole thing) - named have been changed to protect the innocent:
    <wsdl:definitions targetNamespace="http://domain_name">
    <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://domain_name">
    <s:element name="Authentication">
    <s:complexType>
    <s:sequence>
    <s:element minOccurs="0" maxOccurs="1" name="Username" type="s:string"/>
    <s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string"/>
    <s:element minOccurs="0" maxOccurs="1" name="Token"/>
    </s:sequence>
    </s:complexType>
    </s:element>
    <s:element name="AuthenticateResponse">
    <s:complexType>
    <s:sequence>
    <s:element minOccurs="1" maxOccurs="1" name="AuthOK" type="s:int"/>
    <s:element minOccurs="0" maxOccurs="1" name="Token"/>
    </s:sequence>
    </s:complexType>
    </s:element>
    Since it's a complexType return, with a sequence, I'd expect an array or structure returned, but instead I just get the "AuthOK" value, and no way to get anything else.
    Here are the ways I've tried calling it:
    <cfscript>
        WS = createObject("webservice", "https://WSDL_URL");
        WS_ret = WS.Authentication(Username = "username", Password = "password", Token = "");
    </cfscript>
    <cfdump var="#WS_ret#" />
    <cfinvoke webservice="WSDL_URL" method="Authentication" returnVariable="WS_ret">
        <cfinvokeargument name="userID" value="7253320" />
        <cfinvokeargument name="password" value="ctpjxs3" />
        <cfinvokeargument name="SecurityToken" value="" />
    </cfinvoke>
    <cfdump var="#WS_ret#" />
    Any ideas how I can get the other variables in the sequence? I have other calls after this that have a much larger amount of variables, and as such I can't use it without being about to get more of the

    Thanks for the reply.
    If I CFDUMP the variable it returns just "1", no XML tags, nothing at all around the data - according to the web service providers they say that they are supplying the Token part as long as the first variable is "1" (a logical true if the authentication passed). If it is "0" then no Token is returned, that is why it's optional.
    As for the CFdocs issue, look here:
    http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=webservices_25.html
    The paragraph before it (about 2/3 down the page) states:
    In this example, the operation updateEmployeeInfo takes a complex type as input and returns a complex type as output. To handle the input parameter, you create a structure. To handle the returned value, you write it to a ColdFusion variable, as the following example shows:
    It even states that you call "updateEmployeeInfo", and nowhere mentions "echoStruct" as a method - it's seemingly been put in as a random method name, or a function call for something else. The WSDL above the example only mentions "updateEmployeeInfo" and "updateEmployeeInfoSoapOut", again not mentioning "echoStruct".
    I see this as an error in the docs as it's calling a non-existant entity in the WSDL, which should cause a run-time error.

  • Search help for custome field with different data type

    Hi Friends,
    I have Created a  custom table in which i have created a field is
    ZMATLONG which stores material number.
    Now the data element is zdmat which is of char 40..
    Now i want to give search help for this field ZMATLONG..
    I have tried many ways giving search help to this field
    a) i Tried to attach the standard search help of MATNR ie : MAT1 but its showing me data type inconsistancy
    b) i created a zsearch help and in the selection method i have used database table mara , again here iam getting the same error data type inconsistancy...
    Now how can i give the search help like matnr field to my custom field ZMATLONG...
    How can i do it..?
    Thanks in Advance..
    Regards
    Kumar

    Hi,
    MATNR ahs length 18 and ZMATLONG has length 40.So due to this u cannot use MAT1 search help.
    best way would be cope MAT1 into Z search help. Then in the search help parameter change the data element of field
    MATNR as ZMATLONG.
    Now if you assign Z search help to ZMATLONG  it will work.
    I tried this its working fine.
    Shanmugavel Chandrasekaran

  • Web Services with Complex Data Types in ADF 11g

    Shay Shmeltzer's following blogpost can answer my questions but all the links there
    http://blogs.oracle.com/shay/2009/09/web_services_with_complex_data.html
    Can you please point us to the correct links for the following documents?
    http://www.oracle.com/technology/tech/fmw4apps/agile/pdf/adf11g-agile.pdf
    http://www.oracle.com/technology/products/jdev/tips/fnimphius/wsdccomplexinputtype/index.html

    Thanks. We are using a Java Proxy to consume the web service as we need to use JAX-WS handlers. We created data control from the service stub that was created by the proxy. Our issue is with the response XML which comes as a complex type. Also, the data control is understanding the complex type and is creating the structure right. The problem is when we drag that control on a JSF page. No data is displayed. We think that we are not traversing the complex object properly which is creating the issue.
    I understand that you answer related to the input is applicable to output as well. We can change the structure by flattening it but we thought that in 11G there is some new features where we can use the complex types out of the box without any change. Is that true? Also, any luck in finding the documents (broken links) on your blog page?

  • Manual WSDL creation with Complex data types

    I'm trying to manually generate a WSDL, for a bpel workflow, so the wsdl constructs do not come from a Java class file, or any of the other normal ways you might generate a WSDL.
    I have successfully created a Definition object from the WSDLFactory, with the code shown below, that appears to be correct, based on reverse engineering of a WS compliant WSDL. The reversed engineered WSDL was created by IONA Artix.
    When I use file WSDLFactoryImpl.WSDLWriterImpl.writeWSDL() to write the WSDL file I get the wsdl:types and wsdl:service definition objectsin the file, but not the wsdl:message, wsdl:portType or wsdl:binding objects.
    The reverse engineered WSDL file has been imported into objects via WSDLReaderImpl, and the resulting Definition object appears correct (based on all system.outs). This definition can be successfully written to file via the same WSDLFactoryImpl.WSDLWriterImpl.writeWSDL(). which results in a correct WSDL file.
    I'm hoping someone can spot my problem.
    Chris Yoerg
    WSDLFactory.java************************************************************************************************
    package com.dralasoft.bpel.util;
    import java.util.*;
    import java.io.*;
    import javax.xml.namespace.QName;
    import javax.xml.parsers.*;
    import javax.wsdl.WSDLException;
    import javax.wsdl.extensions.UnknownExtensibilityElement;
    import org.w3c.dom.*;
    import com.ibm.wsdl.*;
    import com.ibm.wsdl.factory.WSDLFactoryImpl;
    import com.ibm.wsdl.extensions.soap.*;
    /** This class generates a wsdl from scratch
    * the way the namespaces have been left seem to be correct in that the individual
    * porttype, binding and service objects pick up the message parts as seen in the
    * individual system.outs and in the system.out of the definition
    * if you use the tns prefix iteration as seen in the comment out "trial" code
    * you get an error that the tns namespace does not exist in the definition
    * even though it is definitely there
    * the non namespace "trial" code also behaves the same way as this iteration,
    * aka the stuff shows in the definition outputs, but never ends up outputed to
    * file */
    //import com.dralasoft.bpel.BPELWorkflow;
    public class WSDLFactory {
    public WSDLFactory() {
    public void makeWorkflowWSDL(){
    WSDLFactoryImpl factory = null;
    Constants constants = new Constants();
    SOAPConstants soapconstants = new SOAPConstants();
    try {
    factory = (WSDLFactoryImpl) WSDLFactoryImpl.newInstance();
    catch (WSDLException we) {
    System.out.println("wsdl excepiotn " + we.getMessage());
    // get a new definition from the factory
    DefinitionImpl definition = (DefinitionImpl) factory.newDefinition();
    // add target namespace and additional namespaces that might be there
    definition.setTargetNamespace("http://www.yoerg.net");
    definition.addNamespace("tns", "http://www.yoerg.net");
    definition.addNamespace("soap", "http://schemas.xmlsoap.org/wsdl/soap/");
    definition.addNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
    definition.addNamespace("wsdl", "http://schemas.xmlsoap.org/wsdl/");
    // added for generic purposes
    definition.addNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    // specify the service name
    QName qname = new QName("http://www.yoerg.net",
    "PurchaseOrderProcess");
    definition.setQName(qname);
    // create types **********************************************************
    TypesImpl types = (TypesImpl) definition.createTypes();
    // generate a schema in DOM to set into the types object
    javax.xml.parsers.DocumentBuilderFactory domfactory =
    javax.xml.parsers.DocumentBuilderFactory.newInstance();
    javax.xml.parsers.DocumentBuilder builder = null;
    try {
    builder = domfactory.newDocumentBuilder();
    catch (javax.xml.parsers.ParserConfigurationException pce) {
    System.out.println("parser config exception " + pce.getMessage());
    DOMImplementation dImpl = builder.getDOMImplementation();
    // namespace for the schema
    String namespaceURI = "http://www.w3.org/2001/XMLSchema";
    Document doc = dImpl.createDocument(namespaceURI, "schema", null);
    Element schema = doc.getDocumentElement();
    //schema.setPrefix("xsd");
    schema.setAttribute("xmlns", "http://www.w3.org/2001/XMLSchema");
    schema.setAttribute("targetNamespace", "http://www.yoerg.net");
    //set other namespaces on schema
    // this doesn't make it into the schema at final save, because there
    // are no wsdl elements inside the box
    schema.setAttribute("xmlns:wsdl", "http://schemas.xmlsoap.org/wsdl/");
    // this is not needed
    schema.setAttribute("tns", "http://www.yoerg.net");
    Element first = doc.createElement("element");
    first.setAttribute("name", "sendPurchaseOrder");
    first.setAttribute("type", "tns:sendPORequest");
    schema.appendChild(first);
    Element fourth = doc.createElement("element");
    fourth.setAttribute("name", "sendSchedule");
    fourth.setAttribute("type", "tns:sendScheduleRequest");
    schema.appendChild(fourth);
    Element fifth = doc.createElement("element");
    fifth.setAttribute("name", "sendInvoice");
    fifth.setAttribute("type", "tns:sendInvoiceRequest");
    schema.appendChild(fifth);
    // now add correlations
    Element corfirst = doc.createElement("element");
    corfirst.setAttribute("name", "correlations");
    corfirst.setAttribute("type", "tns:correlationset");
    schema.appendChild(corfirst);
    Element second = doc.createElement("element");
    second.setAttribute("name", "portType");
    second.setAttribute("type", "xsd:string");
    schema.appendChild(second);
    Element third = doc.createElement("element");
    third.setAttribute("name", "partnerLink");
    third.setAttribute("type", "xsd:string");
    schema.appendChild(third);
    // sequence element thats used over and over
    Element sequence = null;
    Element sixth = doc.createElement("complexType");
    sixth.setAttribute("name", "sendPORequest");
    sequence = doc.createElement("sequence");
    Element part1 = doc.createElement("element");
    part1.setAttribute("name", "customerId");
    part1.setAttribute("type", "xsd:long");
    sequence.appendChild(part1);
    Element part2 = doc.createElement("element");
    part2.setAttribute("name", "purchaseOrderNumber");
    part2.setAttribute("type", "xsd:long");
    sequence.appendChild(part2);
    Element part3 = doc.createElement("element");
    part3.setAttribute("name", "productId");
    part3.setAttribute("type", "xsd:long");
    sequence.appendChild(part3);
    Element part4 = doc.createElement("element");
    part4.setAttribute("name", "quantity");
    part4.setAttribute("type", "xsd:int");
    sequence.appendChild(part4);
    sixth.appendChild(sequence);
    schema.appendChild(sixth);
    Element seventh = doc.createElement("complexType");
    seventh.setAttribute("name", "sendScheduleRequest");
    sequence = doc.createElement("sequence");
    Element part6 = doc.createElement("element");
    part6.setAttribute("name", "shipDate");
    part6.setAttribute("type", "xsd:dateTime");
    sequence.appendChild(part6);
    Element part7 = doc.createElement("element");
    part7.setAttribute("name", "customerId");
    part7.setAttribute("type", "xsd:long");
    sequence.appendChild(part7);
    Element part8 = doc.createElement("element");
    part8.setAttribute("name", "purchaseOrderNumber");
    part8.setAttribute("type", "xsd:long");
    sequence.appendChild(part8);
    seventh.appendChild(sequence);
    schema.appendChild(seventh);
    Element eighth = doc.createElement("complexType");
    eighth.setAttribute("name", "sendInvoiceRequest");
    sequence = doc.createElement("sequence");
    Element part5 = doc.createElement("element");
    part5.setAttribute("name", "price");
    part5.setAttribute("type", "xsd:double");
    sequence.appendChild(part5);
    Element part9 = doc.createElement("element");
    part9.setAttribute("name", "customerId");
    part9.setAttribute("type", "xsd:long");
    sequence.appendChild(part9);
    Element part10 = doc.createElement("element");
    part10.setAttribute("name", "purchaseOrderNumber");
    part10.setAttribute("type", "xsd:long");
    sequence.appendChild(part10);
    eighth.appendChild(sequence);
    schema.appendChild(eighth);
    Element ninth = doc.createElement("complexType");
    ninth.setAttribute("name", "correlationset");
    sequence = doc.createElement("sequence");
    Element part11 = doc.createElement("element");
    part11.setAttribute("name", "PurchaseOrder");
    part11.setAttribute("type", "tns:correlationsetvalues");
    sequence.appendChild(part11);
    ninth.appendChild(sequence);
    schema.appendChild(ninth);
    Element tenth = doc.createElement("complexType");
    tenth.setAttribute("name", "correlationsetvalues");
    sequence = doc.createElement("sequence");
    Element part12 = doc.createElement("element");
    part12.setAttribute("name", "PurchaseOrderNumber");
    part12.setAttribute("type", "xsd:string");
    sequence.appendChild(part12);
    Element part13 = doc.createElement("element");
    part13.setAttribute("name", "customerID");
    part13.setAttribute("type", "xsd:string");
    sequence.appendChild(part13);
    tenth.appendChild(sequence);
    schema.appendChild(tenth);
    // show the schema w3c element via conversion JDOM Element and coversion to string
    org.jdom.input.DOMBuilder jdbuilder = new org.jdom.input.DOMBuilder();
    org.jdom.Element jelement = jdbuilder.build(schema);
    //System.out.println("\njelement " + jelement);
    org.jdom.output.XMLOutputter xmloutput = new org.jdom.output.XMLOutputter();
    xmloutput.setIndent(" ");
    xmloutput.setNewlines(true);
    xmloutput.setTrimAllWhite(true);
    xmloutput.setTextTrim(true);
    xmloutput.setEncoding("ISO-8859-1");
    String strelement = xmloutput.outputString(jelement);
    System.out.println("schema in jdom = \n " + strelement);
    UnknownExtensibilityElement extel = new UnknownExtensibilityElement();
    extel.setElement(schema);
    extel.setElementType(new QName(Constants.Q_ELEM_XSD_2001.getNamespaceURI(),
    schema.getLocalName()));
    types.addExtensibilityElement(extel);
    // the above is preferrable to this
    //types.setDocumentationElement(schema);
    //System.out.println("schema " + schema);
    // and set the types definiton back to the definition object
    definition.setTypes(types);
    // these lines all show null or empty on system.out.println
    //System.out.println("\ntypes " + types);
    // end of setting the types
    // add the messages*******************************************************
    MessageImpl message1 = (MessageImpl)definition.createMessage();
    QName messageqname= new QName("http://www.yoerg.net", "newMessage");
    message1.setQName(messageqname);
    PartImpl partma = (PartImpl)definition.createPart();
    partma.setName("sendPurchaseOrderBody");
    partma.setElementName(new QName("http://www.yoerg.net", "sendPurchaseOrder"));
    message1.addPart(partma);
    partma = (PartImpl)definition.createPart();
    partma.setName("correlationsBody");
    partma.setElementName(new QName("http://www.yoerg.net", "correlations"));
    message1.addPart(partma);
    partma = (PartImpl)definition.createPart();
    partma.setName("portTypeBody");
    partma.setElementName(new QName("http://www.yoerg.net", "portType"));
    message1.addPart(partma);
    partma = (PartImpl)definition.createPart();
    partma.setName("partnerLinkBody");
    partma.setElementName(new QName("http://www.yoerg.net", "partnerLink"));
    message1.addPart(partma);
    definition.addMessage(message1);
    // create new blank message for response, with no parts
    MessageImpl message2 = (MessageImpl)definition.createMessage();
    QName messageqname2= new QName("http://www.yoerg.net", "sendPurchaseOrderResponseMessage");
    message2.setQName(messageqname2);
    definition.addMessage(message2);
    System.out.println("\nmessage1 " + message1);
    System.out.println("\nmessage2 " + message2);
    //Map map = message.getParts();
    //Element mes = message.getDocumentationElement();
    //System.out.println("\nmessage map = " + map);
    // done adding messages
    // add the porttypes******************************************************
    PortTypeImpl porttype = (PortTypeImpl)definition.createPortType();
    porttype.setQName(new QName("http://www.yoerg.net", "purchaseOrderPortType"));
    OperationImpl operation = (OperationImpl)definition.createOperation();
    operation.setName("sendMyPurchaseOrder");
    operation.setStyle(javax.wsdl.OperationType.REQUEST_RESPONSE);
    InputImpl input = (InputImpl)definition.createInput();
    input.setName("sendPurchaseOrderRequest");
    input.setMessage(message1);
    operation.setInput(input);
    OutputImpl output = (OutputImpl)definition.createOutput();
    output.setName("sendPurchaseOrderResponse");
    output.setMessage(message2);
    operation.setOutput(output);
    porttype.addOperation(operation);
    System.out.println("\nporttype " + porttype);
    definition.addPortType(porttype);
    // done adding the porttypes
    // add the bindings*******************************************************
    BindingImpl binding = (BindingImpl)definition.createBinding();
    binding.setQName(new QName("http://www.yoerg.net",
    "purchaseOrderSOAPBinding"));
    binding.setPortType(porttype);
    SOAPBindingImpl bindingextension = new SOAPBindingImpl();
    bindingextension.setStyle("document");
    bindingextension.setTransportURI("http://schemas.xmlsoap.org/soap/http");
    //System.out.println("binding extension " + bindingextension);
    binding.addExtensibilityElement(bindingextension);
    BindingOperationImpl bindingoperation
    = (BindingOperationImpl)definition.createBindingOperation();
    bindingoperation.setName("sendMyPurchaseOrder");
    bindingoperation.setOperation(operation);
    // this is not present in the Imported correct version, and these lines of code
    // are not necessary, but they also do not hurt or help
    //SOAPOperationImpl operationextension = new SOAPOperationImpl();
    //operationextension.setStyle("document");
    //operationextension.setSoapActionURI("");
    ///////operationextension.setElementType(new QName("http://www.yoerg.net", "ListenerService"));
    //operationextension.setRequired(new Boolean(true));
    //bindingoperation.addExtensibilityElement(operationextension);
    BindingInputImpl bindinginput
    = (BindingInputImpl)definition.createBindingInput();
    bindinginput.setName("sendPurchaseOrderRequest");
    SOAPBodyImpl inputextension = new SOAPBodyImpl();
    inputextension.setUse("literal");
    inputextension.setRequired(new Boolean(true));
    inputextension.setNamespaceURI("http://www.yoerg.net");
    bindinginput.addExtensibilityElement(inputextension);
    //System.out.println("\ninputextension " + inputextension);
    bindingoperation.setBindingInput(bindinginput);
    BindingOutputImpl bindingoutput
    = (BindingOutputImpl)definition.createBindingOutput();
    bindingoutput.setName("sendPurchaseOrderResponse");
    SOAPBodyImpl outputextension = new SOAPBodyImpl();
    outputextension.setUse("literal");
    outputextension.setRequired(new Boolean(true));
    outputextension.setNamespaceURI("http://www.yoerg.net");
    bindingoutput.addExtensibilityElement(outputextension);
    //System.out.println("\noutputextension " + outputextension);
    bindingoperation.setBindingOutput(bindingoutput);
    binding.addBindingOperation(bindingoperation);
    System.out.println("\nbinding " + binding);
    definition.addBinding(binding);
    // done adding binding
    // adding service*********************************************************
    ServiceImpl service = (ServiceImpl)definition.createService();
    service.setQName(new QName("http://www.yoerg.net",
    "ListenerServiceService"));
    PortImpl port = (PortImpl)definition.createPort();
    port.setBinding(binding);
    port.setName("ListenerService");
    SOAPAddressImpl soapaddress = new SOAPAddressImpl();
    soapaddress
    .setLocationURI("http://localhost:8080/axis/services/ListenerService");
    port.addExtensibilityElement(soapaddress);
    service.addPort(port);
    definition.addService(service);
    System.out.println("\nService " + service);
    // done adding service
    // print def object, and you will see all objects, except types
    System.out.println("\ndefinition \n" + definition);
    // output to file, just like we would in bpel workflow environment
    com.ibm.wsdl.xml.WSDLWriterImpl writer
    = (com.ibm.wsdl.xml.WSDLWriterImpl)factory.newWSDLWriter();
    File file = new File("c:\\chris\\w.wsdl");
    FileOutputStream out = null;
    // this has been proven to be correct
    try{
    out = new FileOutputStream(file);
    writer.writeWSDL(definition, out);
    catch(FileNotFoundException fnfe){
    System.out.println("file not found " + fnfe.getMessage());
    catch(IOException ioe){
    System.out.println("file not found " + ioe.getMessage());
    catch(javax.wsdl.WSDLException we){
    System.out.println("wsdl exception " + we.getMessage());
    // now bring it back in just for fun
    FileInputStream in = null;
    byte[] inputfile = null;
    org.jdom.Document jdocument = null;
    try{
    in = new FileInputStream(file);
    inputfile = new byte[in.available()];
    in.read(inputfile, 0, in.available());
    org.jdom.input.SAXBuilder jdombuilder = new org.jdom.input.SAXBuilder();
    ByteArrayInputStream byteinput = new ByteArrayInputStream(inputfile);
    jdocument = jdombuilder.build(byteinput);
    catch(FileNotFoundException fnfe){
    System.out.println("file not found " + fnfe.getMessage());
    catch(org.jdom.JDOMException jde){
    System.out.println("jdom exception " + jde.getMessage());
    catch(IOException ioe){
    System.out.println("io exception " + ioe.getMessage());
    String strdocument = xmloutput.outputString(jdocument);
    System.out.println("\nJDOM beautified version \n" + strdocument);
    public static void main(String[] args){
    WSDLFactory factory = new WSDLFactory();
    factory.makeWorkflowWSDL();
    End ofWSDLFactory.java*********************************************************************
    Desired WSDL output to file******************************************************************
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions name="PurchaseOrderProcess" targetNamespace="http://www.yoerg.net"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:http-conf="http://schemas.iona.com/transports/http/configuration"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="http://www.yoerg.net" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <types>
    <schema targetNamespace="http://www.yoerg.net"
    xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <element name="sendPurchaseOrder" type="tns:sendPORequest"/>
    <element name="correlations" type="tns:correlationset"/>
    <element name="portType" type="xsd:string"/>
    <element name="partnerLink" type="xsd:string"/>
    <element name="sendSchedule" type="tns:sendScheduleRequest"/>
    <element name="sendInvoice" type="tns:sendInvoiceRequest"/>
    <complexType name="correlationsetvalues">
    <sequence>
    <element name="PurchaseOrderNumber" type="xsd:string"/>
    <element name="customerID" type="xsd:string"/>
    </sequence>
    </complexType>
    <complexType name="correlationset">
    <sequence>
    <element name="PurchaseOrder" type="tns:correlationsetvalues"/>
    </sequence>
    </complexType>
    <complexType name="sendPORequest">
    <sequence>
    <element name="customerId" type="xsd:long"/>
    <element name="purchaseOrderNumber" type="xsd:long"/>
    <element name="productId" type="xsd:long"/>
    <element name="quantity" type="xsd:int"/>
    </sequence>
    </complexType>
    <complexType name="sendScheduleRequest">
    <sequence>
    <element name="shipDate" type="xsd:dateTime"/>
    <element name="customerId" type="xsd:long"/>
    <element name="purchaseOrderNumber" type="xsd:long"/>
    </sequence>
    </complexType>
    <complexType name="sendInvoiceRequest">
    <sequence>
    <element name="price" type="xsd:double"/>
    <element name="customerId" type="xsd:long"/>
    <element name="purchaseOrderNumber" type="xsd:long"/>
    </sequence>
    </complexType>
    </schema>
    </types>
    <message name="newMessage">
    <part element="tns:sendPurchaseOrder" name="sendPurchaseOrderBody"/>
    <part element="tns:correlations" name="correlationsBody"/>
    <part element="tns:portType" name="portTypeBody"/>
    <part element="tns:partnerLink" name="partnerLinkBody"/>
    </message>
    <message name="sendPurchaseOrderResponseMessage"/>
    <message name="sendScheduleRequestMessage">
    <part element="tns:sendSchedule" name="sendScheduleBody"/>
    <part element="tns:correlations" name="correlationBody"/>
    <part element="tns:portType" name="portTypeBody"/>
    <part element="tns:partnerLink" name="partnerLinkBody"/>
    </message>
    <message name="sendInvoiceRequestMessage">
    <part element="tns:sendInvoice" name="sendInvoiceBody"/>
    <part element="tns:correlations" name="correlationsBody"/>
    <part element="tns:portType" name="portTypeBody"/>
    <part element="tns:partnerLink" name="partnerLinkBody"/>
    </message>
    <portType name="purchaseOrderPortType">
    <operation name="sendMyPurchaseOrder">
    <input message="tns:newMessage" name="sendPurchaseOrderRequest"/>
    <output message="tns:sendPurchaseOrderResponseMessage"
    name="sendPurchaseOrderResponse"/>
    </operation>
    <operation name="sendMySchedule">
    <input message="tns:sendScheduleRequestMessage" name="sendMySchedule"/>
    </operation>
    <operation name="sendInvoice">
    <input message="tns:sendInvoiceRequestMessage" name="sendInvoice"/>
    </operation>
    </portType>
    <binding name="purchaseOrderSOAPBinding" type="tns:purchaseOrderPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="sendMyPurchaseOrder">
    <soap:operation soapAction="" style="document"/>
    <input name="sendPurchaseOrderRequest">
    <soap:body use="literal"/>
    </input>
    <output name="sendPurchaseOrderResponse">
    <soap:body use="literal"/>
    </output>
    </operation>
    <operation name="sendMySchedule">
    <soap:operation soapAction="" style="document"/>
    <input name="sendMySchedule">
    <soap:body use="literal"/>
    </input>
    </operation>
    <operation name="sendInvoice">
    <soap:operation soapAction="" style="document"/>
    <input name="sendInvoice">
    <soap:body use="literal"/>
    </input>
    </operation>
    </binding>
    <service name="ListenerServiceService">
    <port binding="tns:purchaseOrderSOAPBinding" name="ListenerService">
    <soap:address location="http://localhost:8080/axis/services/ListenerService"/>
    <http-conf:client/>
    <http-conf:server/>
    </port>
    </service>
    </definitions>
    End of desired WSDL*************************************************************************************

    Adding these statements solved the problem
    message1.setUndefined(false);
    message2.setUndefined(false);
    binding.setUndefined(false);
    operation.setUndefined(false);
    porttype.setUndefined(false);
    This is kind of weird because you explicitly define them thru API calls, and this call seems redundant.
    Chris Yoerg

  • Web Services Complex Data Type Query

    Newbie trying to understand how to work with Complex Data
    Type. Came across the following example in the Dev Guide
    What is wrong with Client Code? What am I missing?
    Please help
    Thanks
    Prashanth

    And That's what I did.
    name.cfc is the component that has complex data types
    created.

  • Apex, Web Services, and complex data types?

    Hi all,
    I was wondering if somebody could explain to me what sort of support apex has for using web services with complex data types, and how data returned like this could be interpreted and stored in the database.
    Any help would be aprreciated.
    Thankyou in advance

    Hi can anyone help me with this?

  • Parse/read complex data types in WSDLs

    i need to read the WSDL and identify the Ports, Operation, Bindings and types.
    My intention is to compare 2 WSDLS and also to create a UI client for web Service based on the WSDLs.
    My issue here is the WSDL contains Complex Data Type,i couldnt find classes that cud help me to read the complex/custom data types.
    A portion of wsdl is given below.
    <definitions ..>
    <types>
    <xsd:schema ....">
    <xsd:annotation>..
    </xsd:annotation>
    <xsd:complexType name="Address">
    <xsd:sequence>
    <xsd:element name="Address" maxOccurs="unbounded" minOccurs="0" type="xsdLocal:Address"></xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="Name"><xsd:sequence>
    <xsd:element name="LastUpdated" maxOccurs="1" minOccurs="0" type="xsd:string"></xsd:element>
    <xsd:element name="House No" maxOccurs="1" minOccurs="0" type="xsdLocal1:string15"></xsd:element>
    <xsd:element name="City" maxOccurs="1" minOccurs="0" type="xsdLocal1:string30"></xsd:element>
    </definitions>{code}
    I got the Operations in the WSDLs as shown below.
    The input parameters are not direct parameters , they as nested/complex data types which i couldnt find a way to read..
    {code}
    protected void assertPortTypes(Definition definition) {
             Map portTypes = definition.getPortTypes();
             for (Object p : portTypes.values()) {
               PortType portType = (PortType) p;         
               String portTypeName = portType.getQName().getLocalPart();
               System.out.println("portTypeName\t"+portTypeName);
                  for (Object o : portType.getOperations()) {
                   Operation operation = (Operation) o;
                   String operationName = operation.getName();
                      System.out.println("operationName\t"+operationName);
    {code}
    Could any one please tell me if it is possible to parse the WSDL to read the Complex data types using java-wsdl classes
    Kindly give me the approaches that i could take here...
    thanks
    vyas                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    No, I am not using the AAL functions, but I was relying on the C99 support of clang and this document. The title of this document suggests that these extensions should also be available in CVI2015, CVI2017...

  • Problem while accessing a complex data type

    hi,
    I am getting a problem while accessing a complex data type
    I have a wsdl as:
    <?xml version="1.0" encoding="UTF-8" ?>
    - <definitions name="OutlookReminderService" targetNamespace="http://ws.aftek.com/outlook-reminder" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns2="http://ws.aftek.com/outlook-reminder/schemas" xmlns:ns3="http://java.sun.com/jax-rpc-ri/internal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.aftek.com/outlook-reminder" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    - <types>
    - <schema targetNamespace="http://ws.aftek.com/outlook-reminder/schemas" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://ws.aftek.com/outlook-reminder/schemas" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
    <import namespace="http://java.sun.com/jax-rpc-ri/internal" />
    - <complexType name="TaskVO">
    - <sequence>
    <element name="dueDate" type="long" />
    <element name="percentageComplete" type="int" />
    <element name="priorty" type="int" />
    <element name="reminderDate" type="long" />
    <element name="reminderSet" type="boolean" />
    <element name="startDate" type="long" />
    <element name="status" type="int" />
    <element name="subject" type="string" />
    <element name="taskId" type="string" />
    </sequence>
    </complexType>
    - <complexType name="NoSuchUserException">
    - <sequence>
    <element name="message" type="string" />
    </sequence>
    </complexType>
    - <complexType name="ArrayOfContactVO">
    - <complexContent>
    - <restriction base="soap11-enc:Array">
    <attribute ref="soap11-enc:arrayType" wsdl:arrayType="tns:ContactVO[]" />
    </restriction>
    </complexContent>
    </complexType>
    - <complexType name="ContactVO">
    - <sequence>
    <element name="birthDate" type="long" />
    <element name="companyAddress" type="string" />
    <element name="companyName" type="string" />
    <element name="emailID1" type="string" />
    <element name="emailID2" type="string" />
    <element name="emailID3" type="string" />
    <element name="faxNumber" type="string" />
    <element name="firstName" type="string" />
    <element name="homeAddress" type="string" />
    <element name="lastName" type="string" />
    <element name="middleName" type="string" />
    <element name="mobileNumber" type="string" />
    <element name="phoneNumber" type="string" />
    <element name="workContactNumber" type="string" />
    </sequence>
    </complexType>
    </schema>
    - <schema targetNamespace="http://java.sun.com/jax-rpc-ri/internal" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://java.sun.com/jax-rpc-ri/internal" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
    <import namespace="http://ws.aftek.com/outlook-reminder/schemas" />
    - <complexType name="arrayList">
    - <complexContent>
    - <extension base="tns:list">
    <sequence />
    </extension>
    </complexContent>
    </complexType>
    - <complexType name="list">
    - <complexContent>
    - <extension base="tns:collection">
    <sequence />
    </extension>
    </complexContent>
    </complexType>
    - <complexType name="collection">
    - <complexContent>
    - <restriction base="soap11-enc:Array">
    <attribute ref="soap11-enc:arrayType" wsdl:arrayType="anyType[]" />
    </restriction>
    </complexContent>
    </complexType>
    </schema>
    </types>
    <message name="OutlookServer_addTaskResponse" />
    - <message name="OutlookServer_getListResponse">
    <part name="result" type="ns3:arrayList" />
    </message>
    - <message name="OutlookServer_getContactListResponse">
    <part name="result" type="ns2:ArrayOfContactVO" />
    </message>
    - <message name="NoSuchUserException">
    <part name="NoSuchUserException" type="ns2:NoSuchUserException" />
    </message>
    - <message name="OutlookServer_getContactList">
    <part name="String_1" type="xsd:string" />
    </message>
    - <message name="OutlookServer_getList">
    <part name="String_1" type="xsd:string" />
    </message>
    - <message name="OutlookServer_addTask">
    <part name="String_1" type="xsd:string" />
    <part name="TaskVO_2" type="ns2:TaskVO" />
    </message>
    - <message name="OutlookServer_reminderOccurredResponse">
    <part name="result" type="xsd:boolean" />
    </message>
    - <message name="OutlookServer_reminderOccurred">
    <part name="String_1" type="xsd:string" />
    <part name="TaskVO_2" type="ns2:TaskVO" />
    </message>
    - <portType name="OutlookServer">
    - <operation name="addTask" parameterOrder="String_1 TaskVO_2">
    <input message="tns:OutlookServer_addTask" />
    <output message="tns:OutlookServer_addTaskResponse" />
    <fault message="tns:NoSuchUserException" name="NoSuchUserException" />
    </operation>
    - <operation name="getContactList" parameterOrder="String_1">
    <input message="tns:OutlookServer_getContactList" />
    <output message="tns:OutlookServer_getContactListResponse" />
    <fault message="tns:NoSuchUserException" name="NoSuchUserException" />
    </operation>
    - <operation name="getList" parameterOrder="String_1">
    <input message="tns:OutlookServer_getList" />
    <output message="tns:OutlookServer_getListResponse" />
    <fault message="tns:NoSuchUserException" name="NoSuchUserException" />
    </operation>
    - <operation name="reminderOccurred" parameterOrder="String_1 TaskVO_2">
    <input message="tns:OutlookServer_reminderOccurred" />
    <output message="tns:OutlookServer_reminderOccurredResponse" />
    <fault message="tns:NoSuchUserException" name="NoSuchUserException" />
    </operation>
    </portType>
    - <binding name="OutlookServerBinding" type="tns:OutlookServer">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
    - <operation name="addTask">
    <soap:operation soapAction="" />
    - <input>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </input>
    - <output>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </output>
    - <fault name="NoSuchUserException">
    <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="NoSuchUserException" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </fault>
    </operation>
    - <operation name="getContactList">
    <soap:operation soapAction="" />
    - <input>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </input>
    - <output>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </output>
    - <fault name="NoSuchUserException">
    <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="NoSuchUserException" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </fault>
    </operation>
    - <operation name="getList">
    <soap:operation soapAction="" />
    - <input>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </input>
    - <output>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </output>
    - <fault name="NoSuchUserException">
    <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="NoSuchUserException" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </fault>
    </operation>
    - <operation name="reminderOccurred">
    <soap:operation soapAction="" />
    - <input>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </input>
    - <output>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </output>
    - <fault name="NoSuchUserException">
    <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="NoSuchUserException" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </fault>
    </operation>
    </binding>
    - <service name="OutlookReminderService">
    - <port binding="tns:OutlookServerBinding" name="OutlookServerPort">
    <soap:address location="http://truptid:8080/outlook-reminder-service/outlook" />
    </port>
    </service>
    </definitions>
    My client is :
    private static String     BODY_NAMESPACE_VALUE     = "http://ws.abc.com/outlook-reminder";
         private static String     ENCODING_STYLE_PROPERTY     = "javax.xml.rpc.encodingstyle.namespace.uri";
         private static String     NS_XSD                         = "http://www.w3.org/2001/XMLSchema";
         private static String     URI_ENCODING               = "http://schemas.xmlsoap.org/soap/encoding/";     
    try{
    ServiceFactory factory = ServiceFactory.newInstance();
                        Service service = factory.createService(new QName("OutlookReminderService"));
                        QName port =new QName("OutlookReminderService","OutlookServerPort");
                        Call call =service.createCall(port);
                        call.setTargetEndpointAddress("http://localhost:8080/outlook-reminder-service/outlook?wsdl");
                        call.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean(true));
                        call.setProperty(Call.SOAPACTION_URI_PROPERTY, "");
                        call.setProperty(ENCODING_STYLE_PROPERTY, URI_ENCODING);
                        call.getReturnType();
                        call.setOperationName(new QName(BODY_NAMESPACE_VALUE, "getList"));
                        QName QNAME_TYPE_STRING = new QName(NS_XSD, "string");
                        call.addParameter("String_1", QNAME_TYPE_STRING, ParameterMode.IN);
                        //http://ws.aftek.com/outlook-reminder/schemas
                        QName QNAME_TYPE_VO = new QName("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                        System.out.println("Before Add Parameter");
                   //     call.addParameter("result", QNAME_TYPE_VO, ParameterMode.OUT);
                        call.setReturnType(QNAME_TYPE_VO,ArrayList.class);
                        System.out.println("After Add Parameter");
                        Object[] params ={oUserVO.getUserName()};
                        oArrayList =(ArrayList)call.invoke(params);
                        System.out.println("After Invoked");
                        //System.out.println("invoked"+ arrayList);          
                   catch(SOAPFaultException faultException)
                        moLogger.debug("SOAPFaultException : ", faultException);
                   catch(RemoteException oremoteException)
                        moLogger.debug("RemoteException", oremoteException);
              catch(ServiceException oServiceException)
                        moLogger.debug("ServiceException", oServiceException);          }          
    Error got is :
    trailing block elements must have an id attribute
         at com.sun.xml.rpc.encoding.SOAPDeserializationContext.deserializeMultiRefObjects(SOAPDeserializationContext.java:81)
         at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:239)
         at com.sun.xml.rpc.client.dii.CallInvokerImpl.doInvoke(CallInvokerImpl.java:103)
         at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:492)
         at com.ail.dhg.poc.business.dao.ContactDAO.getList(ContactDAO.java:255)
         at com.ail.dhg.poc.business.facade.ContactFacade.getList(ContactFacade.java:189)
         at com.ail.dhg.poc.business.AcceptInput.main(AcceptInput.java:72)
    java.lang.NullPointerException
         at com.ail.dhg.poc.business.dao.ContactDAO.getList(ContactDAO.java:277)
         at com.ail.dhg.poc.business.facade.ContactFacade.getList(ContactFacade.java:189)
         at com.ail.dhg.poc.business.AcceptInput.main(AcceptInput.java:72)
    Message was edited by:
    trupti_d

    Use lower case letters for your variable names (name, pwd). The code works then.
    package com.bluenile.bean;
    import java.io.*;
    public class Bean1 implements Serializable
    private String name="Uname";
    private String pwd="Pword";
    public String getName()
    return name;
    public String getPwd()
    return pwd;
    void setName(String name)
    this.name = name;
    void setPwd(String pwd)
    this.pwd = pwd;
    <HTML>
    <BODY BGCOLOR="#FFFFFF">
    <%@ page language="java" contentType="text/html" %>
    <jsp:useBean id="b1" class="com.bluenile.bean.Bean1" />
    <ul>
    <li>Name : <jsp:getProperty name="b1" property="name" />
    <li>Pwd : <jsp:getProperty name="b1" property="pwd" />
    </ul>
    </BODY>
    </HTML>

  • How to pass complex data type structure to WebService under mx:request?

    From my Flex client, I need to pass data to a web service whose operation expects a complex data type with multiple layers of nesting structure. How can I populate the <mx:request> for the <mx:WebServices>? Any examples?
    A couple of approaches come to my mind:
    (1) construct ActionScript object to mimic the datatype expected by web service, and pass an instance of the AS object to mx:request; or
    (2) construct an entire SOAP request body in XML and pass it into mx:request.
    Does any of these (or both) work? If both work, which is the better way?
    Thanks in advance for your input!
    -William

    Thanks a lot for the rapid response, Marcel.
    For further details on the maping between WS complexType structure and AS object, is there any specific requirement? such as naming, binding, structure of nesting, etc.
    William

  • How to reference complex data type when consuming web services in WAS 620?

    In WAS 620, I tried to consume a web service in ABAP. I was successful when the web service returned one or more simple data type. But when the web service is changed to return a complex data type (eg. a structure with 3 elements), the call to the web service did not return anything.
    Do any of you know how to reference the individual element in the structure of an output parameter in a web service? I use the add_parameter method of the CSoapDocument class to identify the output parameters.
    Here is part of the WSDL file:
      <?xml version="1.0" encoding="UTF-8" ?>
    - <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:s0="urn:sap-com:document:sap:rfc:functions" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="urn:sap-com:document:sap:rfc:functions">
    - <types>
    - <xsd:schema targetNamespace="urn:sap-com:document:sap:rfc:functions">
    - <xsd:element name="Z_SRM_SOAP_TEST_COMPLEX">
    - <xsd:complexType>
    - <xsd:all>
    - <xsd:element name="INTEXT">
    - <xsd:simpleType>
    - <xsd:restriction base="xsd:string">
      <xsd:maxLength value="50" />
      </xsd:restriction>
      </xsd:simpleType>
      </xsd:element>
      </xsd:all>
      </xsd:complexType>
      </xsd:element>
    - <xsd:element name="Z_SRM_SOAP_TEST_COMPLEX.Response">
    - <xsd:complexType>
    - <xsd:all>
      <xsd:element name="OUTTEXT" type="s0:ZSRM_TEST_STRUCT" />
      </xsd:all>
      </xsd:complexType>
      </xsd:element>
    - <xsd:complexType name="ZSRM_TEST_STRUCT">
    - <xsd:sequence>
    - <xsd:element name="ELEMENT1" minOccurs="0">
    - <xsd:simpleType>
    - <xsd:restriction base="xsd:string">
      <xsd:maxLength value="50" />
      </xsd:restriction>
      </xsd:simpleType>
      </xsd:element>
    - <xsd:element name="ELEMENT2" minOccurs="0">
    - <xsd:simpleType>
    - <xsd:restriction base="xsd:string">
      <xsd:maxLength value="50" />
      </xsd:restriction>
      </xsd:simpleType>
      </xsd:element>
    - <xsd:element name="ELEMENT3" minOccurs="0">
    - <xsd:simpleType>
    - <xsd:restriction base="xsd:string">
      <xsd:maxLength value="50" />
      </xsd:restriction>
      </xsd:simpleType>
      </xsd:element>
      </xsd:sequence>
      </xsd:complexType>
      </xsd:schema>
      </types>

    Hi,
      [email protected] is my id and one more thing u by looking at the wsdl file u can know what al the parameters we have to give to the webservice so try it out also.
    Regards,
    Sirisha.

  • Same Input name with different data type cause the reflection exception

    I have a proxy contains couple RFCs. Two RFCs contain an argument named IN_COMPANY_CODE with data type of ZTRE_FX_BUKRSTable. Another RFC contains the same argument name of IN_COMPANY_CODE but hold different data type (String). All RFCs are in the same proxy. Complie and build the application with no issue.
    But when I ran the RFC, it generates the reflection exception below:
    Method SAPProxy1.Z_F_Tre_R_Pre_Trade_Fx can not be reflected. --> There was an error reflecting 'In_Company_Code'. > The XML element named 'IN_5fCOMPANY_--5fCODE' from namespace '' references distinct types System.String and MSTRFOREX.ZTRE_FX_BUKRSTable. Use XML attributes to specify another XML name or namespace for the element or types.
    I realize the conflict introduced by the same name with difference data type. But I would like to know if this is fixable as a bug or if there is any best practice and/or some manual intervention to make it work.

    Please install fix from OSS note 506603. After this, right-click .sapwsdl file and select "Run custom tool".

Maybe you are looking for