Axis2 Complex Type return is empty

I'm writing a simple web service that is going to be used by an online infopath form. The service is returning an array of Project objects. The class def for a project is:
public class Project{
public String projectId;
public String description;
public String status;
When the web service is called it retrieves the data correctly but the content of the soap response has no detail. Below is the soap response message where two projects are being returned.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<getFullProjectListResponse xmlns="http://ws/jdeomwwebservice/neumann/xsd">
<return type="neumann.jdeomwwebservice.engine.Project"/>
<return type="neumann.jdeomwwebservice.engine.Project"/>
</getFullProjectListResponse>
</soapenv:Body>
</soapenv:Envelope>
I figure I must be missing something. Here is my wsdl file which as been generated by axis2. All of the methods listed return a single string and these are working as expected.
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:axis2="http://ws/jdeomwwebservice/neumann/" xmlns:ns1="http://engine.jdeomwwebservice.neumann/xsd" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ns0="http://ws/jdeomwwebservice/neumann/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://ws/jdeomwwebservice/neumann/">
<wsdl:types>
<xs:schema xmlns:ns="http://ws/jdeomwwebservice/neumann/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://ws/jdeomwwebservice/neumann/xsd">
<xs:import namespace="http://engine.jdeomwwebservice.neumann/xsd" />
<xs:element name="getProjectDescription">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="jndiName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="projectId" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getProjectDescriptionResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getProjectStatus">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="jndiName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="projectId" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getProjectStatusResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getProjectList">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="jndiName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="status" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getProjectListResponse">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getProjectObjects">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="jndiName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="projectId" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getProjectObjectsResponse">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getProjectUsers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="jndiName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="projectId" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getProjectUsersResponse">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getFullProjectList">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="jndiName" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="status" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getFullProjectListResponse">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="ns1:Project"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<xs:schema xmlns:ax21="http://engine.jdeomwwebservice.neumann/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://engine.jdeomwwebservice.neumann/xsd">
<xs:complexType name="Project">
<xs:sequence>
<xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="projectId" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="status" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="getProjectObjectsRequest">
<wsdl:part name="parameters" element="ns0:getProjectObjects"/>
</wsdl:message>
<wsdl:message name="getProjectObjectsResponse">
<wsdl:part name="parameters" element="ns0:getProjectObjectsResponse"/>
</wsdl:message>
<wsdl:message name="getProjectListRequest">
<wsdl:part name="parameters" element="ns0:getProjectList"/>
</wsdl:message>
<wsdl:message name="getProjectListResponse">
<wsdl:part name="parameters" element="ns0:getProjectListResponse"/>
</wsdl:message>
<wsdl:message name="getFullProjectListRequest">
<wsdl:part name="parameters" element="ns0:getFullProjectList"/>
</wsdl:message>
<wsdl:message name="getFullProjectListResponse">
<wsdl:part name="parameters" element="ns0:getFullProjectListResponse"/>
</wsdl:message>
<wsdl:message name="getProjectStatusRequest">
<wsdl:part name="parameters" element="ns0:getProjectStatus"/>
</wsdl:message>
<wsdl:message name="getProjectStatusResponse">
<wsdl:part name="parameters" element="ns0:getProjectStatusResponse"/>
</wsdl:message>
<wsdl:message name="getProjectUsersRequest">
<wsdl:part name="parameters" element="ns0:getProjectUsers"/>
</wsdl:message>
<wsdl:message name="getProjectUsersResponse">
<wsdl:part name="parameters" element="ns0:getProjectUsersResponse"/>
</wsdl:message>
<wsdl:message name="getProjectDescriptionRequest">
<wsdl:part name="parameters" element="ns0:getProjectDescription"/>
</wsdl:message>
<wsdl:message name="getProjectDescriptionResponse">
<wsdl:part name="parameters" element="ns0:getProjectDescriptionResponse"/>
</wsdl:message>
<wsdl:portType name="JdeOmwWebServiceHandlerPortType">
<wsdl:operation name="getProjectObjects">
<wsdl:input message="axis2:getProjectObjectsRequest" wsaw:Action="urn:getProjectObjects"/>
<wsdl:output message="axis2:getProjectObjectsResponse" wsaw:Action="urn:getProjectObjectsResponse"/>
</wsdl:operation>
<wsdl:operation name="getProjectList">
<wsdl:input message="axis2:getProjectListRequest" wsaw:Action="urn:getProjectList"/>
<wsdl:output message="axis2:getProjectListResponse" wsaw:Action="urn:getProjectListResponse"/>
</wsdl:operation>
<wsdl:operation name="getFullProjectList">
<wsdl:input message="axis2:getFullProjectListRequest" wsaw:Action="urn:getFullProjectList"/>
<wsdl:output message="axis2:getFullProjectListResponse" wsaw:Action="urn:getFullProjectListResponse"/>
</wsdl:operation>
<wsdl:operation name="getProjectStatus">
<wsdl:input message="axis2:getProjectStatusRequest" wsaw:Action="urn:getProjectStatus"/>
<wsdl:output message="axis2:getProjectStatusResponse" wsaw:Action="urn:getProjectStatusResponse"/>
</wsdl:operation>
<wsdl:operation name="getProjectUsers">
<wsdl:input message="axis2:getProjectUsersRequest" wsaw:Action="urn:getProjectUsers"/>
<wsdl:output message="axis2:getProjectUsersResponse" wsaw:Action="urn:getProjectUsersResponse"/>
</wsdl:operation>
<wsdl:operation name="getProjectDescription">
<wsdl:input message="axis2:getProjectDescriptionRequest" wsaw:Action="urn:getProjectDescription"/>
<wsdl:output message="axis2:getProjectDescriptionResponse" wsaw:Action="urn:getProjectDescriptionResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="JdeOmwWebServiceHandlerSOAP11Binding" type="axis2:JdeOmwWebServiceHandlerPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="getProjectObjects">
<soap:operation soapAction="urn:getProjectObjects" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectList">
<soap:operation soapAction="urn:getProjectList" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getFullProjectList">
<soap:operation soapAction="urn:getFullProjectList" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectStatus">
<soap:operation soapAction="urn:getProjectStatus" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectUsers">
<soap:operation soapAction="urn:getProjectUsers" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectDescription">
<soap:operation soapAction="urn:getProjectDescription" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="JdeOmwWebServiceHandlerSOAP12Binding" type="axis2:JdeOmwWebServiceHandlerPortType">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="getProjectObjects">
<soap12:operation soapAction="urn:getProjectObjects" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectList">
<soap12:operation soapAction="urn:getProjectList" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getFullProjectList">
<soap12:operation soapAction="urn:getFullProjectList" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectStatus">
<soap12:operation soapAction="urn:getProjectStatus" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectUsers">
<soap12:operation soapAction="urn:getProjectUsers" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectDescription">
<soap12:operation soapAction="urn:getProjectDescription" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="JdeOmwWebServiceHandlerHttpBinding" type="axis2:JdeOmwWebServiceHandlerPortType">
<http:binding verb="POST"/>
<wsdl:operation name="getProjectObjects">
<http:operation location="JdeOmwWebServiceHandler/getProjectObjects"/>
<wsdl:input>
<mime:content type="text/xml" part="getProjectObjects"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="getProjectObjects"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectList">
<http:operation location="JdeOmwWebServiceHandler/getProjectList"/>
<wsdl:input>
<mime:content type="text/xml" part="getProjectList"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="getProjectList"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getFullProjectList">
<http:operation location="JdeOmwWebServiceHandler/getFullProjectList"/>
<wsdl:input>
<mime:content type="text/xml" part="getFullProjectList"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="getFullProjectList"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectStatus">
<http:operation location="JdeOmwWebServiceHandler/getProjectStatus"/>
<wsdl:input>
<mime:content type="text/xml" part="getProjectStatus"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="getProjectStatus"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectUsers">
<http:operation location="JdeOmwWebServiceHandler/getProjectUsers"/>
<wsdl:input>
<mime:content type="text/xml" part="getProjectUsers"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="getProjectUsers"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getProjectDescription">
<http:operation location="JdeOmwWebServiceHandler/getProjectDescription"/>
<wsdl:input>
<mime:content type="text/xml" part="getProjectDescription"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="getProjectDescription"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="JdeOmwWebServiceHandler">
<wsdl:port name="JdeOmwWebServiceHandlerSOAP11port_http" binding="axis2:JdeOmwWebServiceHandlerSOAP11Binding">
<soap:address location="http://localhost:8080/axis2/services/JdeOmwWebServiceHandler"/>
</wsdl:port>
<wsdl:port name="JdeOmwWebServiceHandlerSOAP12port_http" binding="axis2:JdeOmwWebServiceHandlerSOAP12Binding">
<soap12:address location="http://localhost:8080/axis2/services/JdeOmwWebServiceHandler"/>
</wsdl:port>
<wsdl:port name="JdeOmwWebServiceHandlerHttpport" binding="axis2:JdeOmwWebServiceHandlerHttpBinding">
<http:address location="http://localhost:8080/axis2/services/JdeOmwWebServiceHandler"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

Hi there,
Can you explain what you mean by this :
I have an entry like :
<xs:element name="retrieveDetailsResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="return" nillable="true" type="ax21:Details"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>Do you mean changing the name element to retrieveDetailsReturn - i.e
<xs:element minOccurs="0" name="retrieveDetailsReturn" nillable="true" type="ax21:Details"/>or just
<xs:element minOccurs="0" name="retrieveDetails" nillable="true" type="ax21:Details"/>I can't get any of these to work....
Edited by: uefa_celt on Feb 27, 2009 8:23 AM

Similar Messages

  • Assign error with complex type return message

    Dear all,
    I have an axis web service with complex type return message. When I invoke the web service, and try to assign one element of the result to other variable, it fails with following error message(BPEL Fault:{http://schemas.xmlsoap.org/ws/2003/03/business-process/}selectionFailure{}
    The invoking web service and assignment BPEL source is as follows:
    <invoke name="registerConference" partnerLink="conferenceCenter" portType="tns:ConfArrangementPort" operation="Conference_Register" inputVariable="registerInput" outputVariable="registerOutput"/>
    <copy>
    <from variable="registerOutput" part="Conference_RegisterReturn" query="/Conference_RegisterReturn/confcity"></from>
    <to variable="bookHotelInput" part="si" query="/si/city"/>
    </copy>
    I tunneled the response SOAP message:
    ==== Response ====
    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=utf-8
    Date: Sun, 31 Oct 2004 08:28:27 GMT
    Server: Apache Coyote/1.0
    Connection: close
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <ns1:Conference_RegisterResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://conference.sjtu.edu">
    <ns1:Conference_RegisterReturn href="#id0"/>
    </ns1:Conference_RegisterResponse>
    <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:ConfInfo" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://conference.sjtu.edu">
    <confcity xsi:type="xsd:string">star</confcity>
    <confend xsi:type="xsd:string">20041120</confend>
    <confstart xsi:type="xsd:string">20041116</confstart>
    </multiRef>
    </soapenv:Body>
    </soapenv:Envelope>
    ==============
    However, when i check the invoke activity audit trail, it return the following info:
    <messages>
    <registerInput>
    <part xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" name="gi">
    <gi xmlns="http://conference.sjtu.edu">
    <attendeename xmlns="">ss</attendeename>
    <confname xmlns="">hh</confname>
    </gi>
    </part>
    </registerInput>
    <registerOutput>
    <part xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" name="Conference_RegisterReturn">
    <ns1:Conference_RegisterReturn xmlns:ns1="http://conference.sjtu.edu" href="#id0" />
    </part>
    </registerOutput>
    </messages>
    The detailed value of the return message lost, only leaving the href. Can I find the desired value again? should I try another XPATH expression? should I parse the result from the SOAP message directly? Or it's a problem of the system itself?
    Hope you can do me a favor, thanks.

    From Axis's user guide: RPC services default to the soap section 5 encoding rules, objects will be encoded via "multi-ref" serialization. Document services do not use any encoding (so in particular, you won't see multiref object serialization or SOAP-style arrays on the wire)
    May be I should try document service style instead of RPC. Thanks for your reply.

  • Complex types returned from web services

    I'm having problems getting values from a complex type from a
    CFC web service. Are there any tutorials that show you how this is
    done? The only tutorials I've seen have been returning simple
    types.
    I have tried everything I know, which is not a lot I must
    admit, I'm just a beginner! *L*
    Thanks in advance.

    I'm having problems getting values from a complex type from a
    CFC web service. Are there any tutorials that show you how this is
    done? The only tutorials I've seen have been returning simple
    types.
    I have tried everything I know, which is not a lot I must
    admit, I'm just a beginner! *L*
    Thanks in advance.

  • Complex type return.

    Hi guys;
    I have this simple class
    //This class is implemented as webservice which return complex type of World.
    public class HelloWorld {
         public World sayHelloWorld(World world,String countryCode) {
              if(new World().isValidWorld(world))return world;
              else return null;          
    public class World {
         private String world1 = "us";
         private String world2 = "uk";
         public boolean isValidWorld(World world){
              System.out.println("client passed: world1 "+world.getWorld1()+" world2: "+world.getWorld2());
              if(world.getWorld1().equalsIgnoreCase(this.getWorld1()) && world.getWorld2().equalsIgnoreCase(this.getWorld2()))return true;
              else
                   return false;
         //getter and setter for world1 and world2
    Now in weblogic test page.I have
    parameter as world ,type as World and value as follows:
    <world xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:n1="java:com.util"
    xsi:type="n1:World">
    <world1 href="#ID_2">
    </world1>
    <world2 href="#ID_2">
    </world2>
    <xsd:string xsi:type="xsd:string"
    id="ID_2">sample string</xsd:string>
    </world>
    and for next i have parameter as string,type as string and value as text box to input.
    But i don't understand or don't know why there is only one input value to put ie. <xsd:string xsi:type="xsd:string"
    id="ID_2">sample string</xsd:string> .there should be 2 to input world1 and world2.and now if i input value abc instead of sample string it will pass
    the same value(abc) for both world1 and world2 to server.Is that i did sth. wrong in build or there is more.I shall appreciate if somebody
    has answer onto this.Basically for complex type i need like this automatically..
    <world xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:n1="java:com.util"
    xsi:type="n1:World">
    <world1 href="#ID_1">
    </world1>
    <world2 href="#ID_2">
    </world2>
    <xsd:string xsi:type="xsd:string"
    id="ID_1">sample string</xsd:string>
    <xsd:string xsi:type="xsd:string"
    id="ID_2">sample string</xsd:string>
    </world>
    any suggestion??

    Hi there,
    Can you explain what you mean by this :
    I have an entry like :
    <xs:element name="retrieveDetailsResponse">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element minOccurs="0" name="return" nillable="true" type="ax21:Details"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>Do you mean changing the name element to retrieveDetailsReturn - i.e
    <xs:element minOccurs="0" name="retrieveDetailsReturn" nillable="true" type="ax21:Details"/>or just
    <xs:element minOccurs="0" name="retrieveDetails" nillable="true" type="ax21:Details"/>I can't get any of these to work....
    Edited by: uefa_celt on Feb 27, 2009 8:23 AM

  • Pl Help......Web services with complex types

    Hi,
    I have deployed a web service on OC4J (9.02) having a complex type input and a complex type return. The web service is implemented as a stateless session bean and
    the relevant web.xml for the deployment is:
    <servlet>
    <servlet-name>ZipLookupManager</servlet-name>
    <servlet-class>oracle.j2ee.ws.SessionBeanWebService</servlet-class>
    <init-param>
    <param-name>jndi-name</param-name>
    <param-value>ZipLookupManagerBean</param-value>
    </init-param>
    <init-param>
    <param-name>class-name</param-name>
    <param-value>com.indus.banner.components.cdyne.ZipLookupManagerBean</param-va
    lue>
    </init-param>
    <init-param>
    <param-name>interface-name</param-name>
    <param-value>com.indus.banner.components.cdyne.IZipLookupManager</param-value
    >
    </init-param>
    <init-param>
    <param-name>custom-bean-qname</param-name>
    <param-value>
    com.indus.banner.components.cdyne.LatLongReturn,
    http://cdyne.components.banner.indus.com,
    LatLongReturn,
    org.apache.soap.encoding.soapenc.BeanSerializer,
    org.apache.soap.encoding.soapenc.BeanSerializer
    </param-value>
    </init-param>
    <init-param>
    <param-name>custom-bean-qname</param-name>
    <param-value>
    com.indus.banner.components.cdyne.ZipState,
    http://cdyne.components.banner.indus.com,
    ZipState,
    org.apache.soap.encoding.soapenc.BeanSerializer,
    org.apache.soap.encoding.soapenc.BeanSerializer
    </param-value>
    </init-param>
    </servlet>
    The web service deploys correct. I have all the relevant jars in the %J2EE_HOME%\lib folder. However, when I call the web service from a standalone client I get the following error:
    java.lang.ClassNotFoundException:
    org.apache.soap.encoding.soapenc.BeanSerializer
    at
    oracle.j2ee.ws.GeneratedClassLoader.findClass(GeneratedClassLoader.ja
    va:48)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
    at oracle.j2ee.ws.BaseWebService.initQnameMap(BaseWebService.java:602)
    at oracle.j2ee.ws.RpcWebService.init(RpcWebService.java:453)
    at
    oracle.j2ee.ws.SessionBeanRpcWebService.init(SessionBeanRpcWebService
    .java:54)
    at javax.servlet.GenericServlet.init(GenericServlet.java:258)
    at
    com.evermind.server.http.HttpApplication.loadServlet(HttpApplication.
    java:1956)
    at
    com.evermind.server.http.HttpApplication.findServlet(HttpApplication.
    java:4355)
    at
    com.evermind.server.http.HttpApplication.getRequestDispatcher(HttpApp
    lication.java:2484)
    Please advise!
    Rizwan

    Hi all,
    I haven't heard back from anyone. Is this forum alive still? I have entered a TAR on metalink on this issue but they say that apparently this was a defect under 9.02 and has been fixed under 9.04.
    Please help.
    Many thanks in advance.
    Rizwan

  • BPEL PM supports Complex Type?

    In my BPEL process flow, I am trying to invoke a web service operation with Response message an array of Complex Type. When I tried to look the output of the operation from the debug mode of the BPEL Console, I got a message "Error:internal bug (#321) object:id0 not found in object store".
    The operation is defined as
    <wsdl:operation name="getEffects">
    <wsdlsoap:operation soapAction="" />
    <wsdl:input name="getEffectsRequest">
    <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:IBCDS" use="encoded" />
    </wsdl:input>
    <wsdl:output name="getEffectsResponse">
    <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:IBCDS" use="encoded" />
    </wsdl:output>
    </wsdl:operation>
    the Complex Types are defined as
    <complexType name="Effect">
    <sequence>
    <element name="ID" nillable="true" type="xsd:string" />
    <element name="classification" nillable="true" type="xsd:string" />
    <element name="coe" type="xsd:byte" />
    <element name="com" type="xsd:byte" />
    <element name="country" nillable="true" type="xsd:string" />
    <element name="dateMod" nillable="true" type="xsd:dateTime" />
    <element name="deClassDate" nillable="true" type="xsd:dateTime" />
    <element name="def" type="xsd:byte" />
    <element name="description" nillable="true" type="xsd:string" />
    <element name="det" type="xsd:byte" />
    <element name="infl" type="xsd:byte" />
    <element name="name" nillable="true" type="xsd:string" />
    <element name="reliability" type="xsd:double" />
    <element name="tra" type="xsd:byte" />
    </sequence>
    </complexType>
    <complexType name="ArrayOfEffect">
    <complexContent>
    <restriction base="soapenc:Array">
    <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:Effect[]" />
    </restriction>
    </complexContent>
    </complexType>
    and the input/output for the operation are define as
    <wsdl:message name="getEffectsRequest" />
    <wsdl:message name="getEffectsResponse">
    <wsdl:part name="getEffectsReturn" type="impl:ArrayOfEffect" />
    </wsdl:message>
    My project involves lots of Complex Type data, I like to know if the current BPEL PM support the Complex Type that I just described?

    Hi June,
    BPEL PM Supports complex type return. I am not why you see this error in debugger. can you enable the bpel domain debug (under BPEL Console-->Manage Domain-->Logging) and send us the debug log? Is it possible to send your process (including wsdl + xsd) to our support email at [email protected]?

  • Return complex type

    Hi, i have a web service that takes two double numbers and returns complex type
    @WebService( name="Complex",serviceName="ComplexService")
    public class Complex {
        private double real;
        private double img;
    @WebMethod(operationName = "add")
        public Complex add(Complex complex) {
            double realResult=real+complex.real;
            double imgResult=img+complex.img;
            return new Complex(realResult,imgResult);
    }Can you suggest any ideas how to return this as a string so the client can read it?
    Thanks a lot,
    Geo

    I had the same problem and was never able to solve it. I just gave up and went to static clients. From what I saw here in the forums in the last 4 months, this is a recurring problem that sun has given no solution to.
    Hugo

  • Web Dynpro and CAF (BOs, Application Services, returning Complex Types)

    Hi All,
    I am trying to develop an application using Web Dynpro and CAF for days now and did not get it running.. I need some help here.
    What I am trying to do / have done is the following:
    - Design a Business Object (BO) in CAF
    - Implement an Application Service that has a method called getAllBOs that calls the findAll method of the BO
    - call this method using AWS model or EJB model in Web Dnypro, show the result in a table.
    My getAllBOs returns a set of BOs (Data Type is the Complex Type of my BO in CAF). I was able to design the Application Service so that it returns a collection of BOs (using a Wrapper Comple Type), but I was never able to call the generated Web Service successfully in Web Dynpro. The WebService worked fine when testing it in wsnavigator...
    However, i never got it running.. is there anybody out there who is able to explain what to do to import a AWS model or an EJB model in Werb Dynpro and particularily how to implement the stuff so that it returns a set of BOs successfully...
    Thanks in advance.. Useful help is highly appreciated
    Please note: THIS IS ABOUT Netweaver CE 7.1 - do not post stuff about 7.0!

    Hi,
    You have to return a single object from caf layer to webdynpro layer.
    Since you are returning a list of BOs, create a wrapper in caf which contains the list of your BOs.
    Your application service should return this wrapper.
    Creating Wrapper:
    1. Create a complex data type.
    2. Include your BO as one of the properties in it. and set the cardinality to 0..n.
    In Application service invoke your findAll() of BO and use the returned list to populate the wrapper's BO list.
    Return this wrapper.
    Hope it helps.
    Regards,
    Fazal

  • Returning complex types with arrays (Java / EJB via WSIF)

    Hi all,
    I'm writing some WSIF bindings for existing EJBs, and I've struck a bit of a problem. Basically I've got complex types that contain arrays, and while instances of these types can be passed to the EJBs, return variables typed similarly cause the following fault:
    org.collaxa.thirdparty.apache.wsif.WSIFException: com.collaxa.cube.ws.wsif.providers.ejb.WSIFOperation_EJB@1a372e0 : Could not invoke 'concatString'; nested exception is:
         org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ejbinterfacetest.StringReturnArray' is not compatible; nested exception is:
         oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
         at com.collaxa.cube.ws.wsif.providers.ejb.WSIFOperation_EJB.executeRequestResponseOperation(WSIFOperation_EJB.java:1305)
         at com.collaxa.cube.ws.WSIFInvocationHandler.invoke(WSIFInvocationHandler.java:431)
         at com.collaxa.cube.ws.WSInvocationManager.invoke2(WSInvocationManager.java:416)
    The Java class StringReturnArray is a serializable JavaBean with one property, a String[] called strings. The corresponding complexType (that works when used as a method parameter type) is stringReturnArrayType:
    <complexType name="stringArrayType">
    <sequence>
    <element name="str" type="string" maxOccurs="unbounded" />
    </sequence>
    </complexType>
    <complexType name="stringReturnArrayType">
    <sequence>
    <element name="strings" type="tns:stringArrayType" />
    </sequence>
    </complexType>
    and I've type mapped in the binding with
    <format:typeMap typeName="typens:stringReturnArrayType" formatType="ejbinterfacetest.StringReturnArray" />
    Anyone know why this would be? Is there any way I can get more information out of BPEL or OC4J regarding the fault? (I've already turned the BPEL domain logging to All)
    Cheers,
    Chris.

    Any luck with this? I am running into the same error. Apparently, this is not an issue with Java binding, but when invoking remote EJBs, we run into this. I am running 10.1.3.1 and the error is:
    <fault>
    <bindingFault xmlns="http://schemas.oracle.com/bpel/extension">
    <part name="summary">
    <summary>
    com.collaxa.cube.ws.wsif.providers.ejb.WSIFOperation_EJB@e26dbf : Could not invoke 'getIdentityInfo'; nested exception is:
         org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ca.bc.gov.pssg.c3.webservices.identitymanagement.Identity' is not compatible; nested exception is:
         oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
    </summary>
    </part>
    <part name="detail">
    <detail>
    org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ca.bc.gov.pssg.c3.webservices.identitymanagement.Identity' is not compatible; nested exception is:
         oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
    </detail>
    </part>
    </bindingFault>
    </fault

  • Cannot assign value to a Variable of Complex Type beyond index 1

    Hello:
    I have a variable defined as a complex type as followed. I tried to assign a value to each of the two elements but it only allows me to assign to the 'element#1.
    This statement that tries to assign a value into element#2 will not work, if I assign with '[1]' for the first element it will work:
    <copy> <---- THIS WORKS
    <from expression="'John'"/>
    <to variable="My_Variable"
    part="My_Collection"
    query="/ns9:My_Collection/ns9:Collection/ns9:Collection_Item[1]/ns9:pname"/>
    </copy>
    <copy> <---- THIS DOES NOT WORK
    <from expression="'John'"/>
    <to variable="My_Variable"
    part="My_Collection"
    query="/ns9:My_Collection/ns9:Collection/ns9:Collection_Item[2]/ns9:pname"/>
    </copy>
    Is there something wrong with my definition below that allows only element#1 to be refererenced but not element#2???? Am I missing some kind of initialization that is needed to initialize both elements????
    Here are my message and Complex Type definitions:
    <variable name="My_Variable" messageType="ns8:args_out_msg"/>
    <message name="args_out_msg">
    <part name="My_Collection" element="db:My_Collection"/>
    </message>
    <element name="My_Collection">
    <complexType>
    <sequence>
    <element name="Collection" type="db:Collection_Type" db:index="2" db:type="Array" minOccurs="0" nillable="true"/>
    <element name="Ret" type="string" db:index="3" db:type="VARCHAR2" minOccurs="0" nillable="true"/>
    </sequence>
    </complexType>
    </element>
    <complexType name="Collection_Type">
    <sequence>
    <element name="Collection_Item" type="db:Collection_Type_Struct" db:type="Struct" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
    </sequence>
    </complexType>
    <complexType name="Collection_Type_Struct">
    <sequence>
    <element name="pname" db:type="VARCHAR2" minOccurs="0" nillable="true">
    <simpleType>
    <restriction base="string">
    <maxLength value="25"/>
    </restriction>
    </simpleType>
    </element>
    </sequence>
    </complexType>
    The error msg it gives me is as followed:
    [2010/09/04 00:47:59] Error in <assign> expression: <to> value is empty at line "254". The XPath expression : "" returns zero node, when applied to document shown below:less
    oracle.xml.parser.v2.XMLElement@1fa7874
    [2010/09/04 00:47:59] "{http://schemas.xmlsoap.org/ws/2003/03/business-process/}selectionFailure" has been thrown.less
    -<selectionFailure xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/">
    -<part name="summary">
    <summary>
    XPath query string returns zero node.
    According to BPEL4WS spec 1.1 section 14.3, The assign activity &lt;to&gt; part query should not return zero node.
    Please check the BPEL source at line number "254" and verify the &lt;to&gt; part xpath query.
    </summary>
    </part>
    </selectionFailure>
    Thanks
    Newbie

    Hello:
    Base on the suggestion to use 'append' instead of 'copy', I tried to define a 'singleNode' which is of type 'Collection_Type_Struct' so I can append this individual 'struct' into my array (i.e. as the 2nd. element of my array "/ns9:My_Collection/ns9:Collection/ns9:Collection_Item"), but I am getting an error in defining this variable as:
    <variable name="singleNode" element="Collection_Type_Struct"/> <--- error
    Can someone tell me how should I define "singleNode" so I can put a value in it and then append this 'singleNode' into the array:
    <variable name="singleNode" element=" how to define this????"/>
    <assign>
    <copy>
    <frem expression="'Element2Value'"/>
    <to variable="singleNode"
    part="My_Collection"
    query="/ns9:My_Collection/ns9:Collection/ns9:Collection_Item/ns9:pname"/>
    </copy>
    </assign>
    <bpelx:assign>
    <bpelx:append>
    <from variable="singleNode" query="/ns9:My_Collection/ns9:Collection/ns9:Collection_Item"/>
    <to variable="My_Variable"
    "part="My_Collection"
    query="/ns9:My_Collection/ns9:Collection"/>
    </bpelx:append>
    </bpelx:assign>
    Again here is my definition in my .xsd file:
    <element name="My_Collection">
    <complexType>
    <sequence>
    <element name="Collection" type="db:Collection_Type" db:index="2" db:type="Array" minOccurs="0" nillable="true"/>
    <element name="Ret" type="string" db:index="3" db:type="VARCHAR2" minOccurs="0" nillable="true"/>
    </sequence>
    </complexType>
    </element>
    <complexType name="Collection_Type">
    <sequence>
    <element name="Collection_Item" type="db:Collection_Type_Struct" db:type="Struct" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
    </sequence>
    </complexType>
    <complexType name="Collection_Type_Struct">
    <sequence>
    <element name="pname" db:type="VARCHAR2" minOccurs="0" nillable="true">
    <simpleType>
    <restriction base="string">
    <maxLength value="25"/>
    </restriction>
    </simpleType>
    </element>
    </sequence>
    </complexType>
    Thanks for any help!!!!

  • WSDL & local qualified accessors (complex type - child elements)

    Why does the WLS8.1 generated WSDL file specify
    elementFormDefault="qualified" in the schema for complex types.
    The resulting runtime SOAP bodies that are sent have unqualified child
    elements and tools like JAX-RPC, determine from the WSDL schema that these
    child elements SHOULD be qualified and fail to parse the body. I understand
    that the spec states that they should not be qualified but then why does the
    schema not specify
    elementFormDefault="unqualified"?
    I have to manually edit the WSDL (to say "unqualified") to generate a client
    using JAX-RPC.
    Is there some way I can tell <wsdlgen> task to do this?
    Thanks,
    M
    Here's the excerpt from my WLS 8.1 generated WSDL file:
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:tp="java:com.xxx.framework.persist"
    xmlns:stns="java:com.xxx.businessservices.indexservice.valueobjects"
    elementFormDefault="qualified"
    attributeFormDefault="qualified"
    targetNamespace="java:com.xxx.businessservices.indexservice.valueobjects">
    <xsd:import namespace="java:com.xxx.framework.persist" />
    <xsd:import namespace="java:language_builtins.util" />
    <xsd:complexType name="IndexVO">
    <xsd:complexContent>
    <xsd:extension xmlns:tp="java:com.xxx.framework.persist"
    base="tp:FW_PersistentObject">
    <xsd:sequence>
    <xsd:element type="xsd:string" name="code" minOccurs="1" nillable="true"
    maxOccurs="1" />
    <xsd:element type="xsd:string" name="description" minOccurs="1"
    nillable="true" maxOccurs="1" />
    <xsd:element type="xsd:long" name="indexID" minOccurs="1" maxOccurs="1"
    />
    <xsd:element type="stns:IndexProviderVO" name="indexProviderVO"
    minOccurs="1" nillable="true" maxOccurs="1" />
    <xsd:element type="stns:IndexSourceVO" name="indexSourceVO" minOccurs="1"
    nillable="true" maxOccurs="1" />
    <xsd:element type="xsd:string" name="name" minOccurs="1" nillable="true"
    maxOccurs="1" />
    <xsd:element type="xsd:dateTime" name="nextUpdateDate" minOccurs="1"
    nillable="true" maxOccurs="1" />
    <xsd:element type="xsd:long" name="providerID" minOccurs="1"
    maxOccurs="1" />
    <xsd:element type="xsd:long" name="scheduleID" minOccurs="1"
    maxOccurs="1" />
    <xsd:element type="stns:UpdateScheduleVO" name="scheduleVO" minOccurs="1"
    nillable="true" maxOccurs="1" />
    <xsd:element type="xsd:long" name="sourceID" minOccurs="1" maxOccurs="1"
    />
    <xsd:element xmlns:tp="java:language_builtins.util" type="tp:List"
    name="updateFrequencies" minOccurs="1" nillable="true" maxOccurs="1" />
    <xsd:element xmlns:tp="java:com.xxx.framework.persist"
    type="xsd:dateTime" name="updatesDisabledDate" minOccurs="1" nillable="true"
    maxOccurs="1" />
    <xsd:element xmlns:tp="java:language_builtins.util" type="tp:List"
    name="values" minOccurs="1" nillable="true" maxOccurs="1" />
    </xsd:sequence>
    </xsd:extension>
    </xsd:complexContent>
    </xsd:complexType>
    "Scott Ziegler" <[email protected]> wrote in message
    news:[email protected]...
    On Mon, 21 Jul 2003 09:31:45 -0500, Mark Fine wrote:
    I've been debugging an XML-RPC generated client and came across the
    following problem:
    I have a webserice serialized Object, "IndexVO" that has an attribute
    (ie.
    element) "code".
    The WLS8.1 generated WSDL schema declares that code is in the
    "com...valueobjects" namespace by virtue of a default (target)namespace.
    At runtime, the SOAP envelope that is created seems to put the
    attribute/element "code" in the EMPTY namespace, and not in the
    "com...valueobjects" namespace. The XML-RPC generated client code is
    looking for "code" in the "com...valueobjects" namespace and skips overit
    because it is in the "", blank namespace (according to the XML parser).
    I'm not a XML expert but from what I can tell, the SOAP envelope that is
    returned does not match the WSDL file with respect to the namespace ofthe
    attributes in IndexVO.
    Am I reading this wrong?We did this for interoperability reasons. Some other stacks that we were
    trying to work with would not work if those elements were qualified. The
    problem really stems from SOAP 1.1:http://www.w3.org/TR/SOAP/#_Toc478383520
    >
    "Accessors whose names are local to their containing types have
    unqualified element names; all others have qualified names."
    SOAP stacks that are not schema aware basically require this behavior.
    You might try using a doc-literal service (which is more faithful to the
    schema) if that fits your situation.
    --Scott

    Currently there is no option to make elementFormDefault
    unqualified. I filed an enhancement CR (112776).
    Regards,
    -manoj
    http://manojc.com
    "Mark Fine" <[email protected]> wrote in message
    news:[email protected]...
    Why does the WLS8.1 generated WSDL file specify
    elementFormDefault="qualified" in the schema for complex types.
    The resulting runtime SOAP bodies that are sent have unqualified child
    elements and tools like JAX-RPC, determine from the WSDL schema that these
    child elements SHOULD be qualified and fail to parse the body. Iunderstand
    that the spec states that they should not be qualified but then why doesthe
    schema not specify
    elementFormDefault="unqualified"?
    I have to manually edit the WSDL (to say "unqualified") to generate aclient
    using JAX-RPC.
    Is there some way I can tell <wsdlgen> task to do this?
    Thanks,
    M
    Here's the excerpt from my WLS 8.1 generated WSDL file:
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:tp="java:com.xxx.framework.persist"
    xmlns:stns="java:com.xxx.businessservices.indexservice.valueobjects"
    elementFormDefault="qualified"
    attributeFormDefault="qualified"
    targetNamespace="java:com.xxx.businessservices.indexservice.valueobjects">
    <xsd:import namespace="java:com.xxx.framework.persist" />
    <xsd:import namespace="java:language_builtins.util" />
    <xsd:complexType name="IndexVO">
    <xsd:complexContent>
    <xsd:extension xmlns:tp="java:com.xxx.framework.persist"
    base="tp:FW_PersistentObject">
    <xsd:sequence>
    <xsd:element type="xsd:string" name="code" minOccurs="1"nillable="true"
    maxOccurs="1" />
    <xsd:element type="xsd:string" name="description" minOccurs="1"
    nillable="true" maxOccurs="1" />
    <xsd:element type="xsd:long" name="indexID" minOccurs="1" maxOccurs="1"
    />
    <xsd:element type="stns:IndexProviderVO" name="indexProviderVO"
    minOccurs="1" nillable="true" maxOccurs="1" />
    <xsd:element type="stns:IndexSourceVO" name="indexSourceVO"minOccurs="1"
    nillable="true" maxOccurs="1" />
    <xsd:element type="xsd:string" name="name" minOccurs="1"nillable="true"
    maxOccurs="1" />
    <xsd:element type="xsd:dateTime" name="nextUpdateDate" minOccurs="1"
    nillable="true" maxOccurs="1" />
    <xsd:element type="xsd:long" name="providerID" minOccurs="1"
    maxOccurs="1" />
    <xsd:element type="xsd:long" name="scheduleID" minOccurs="1"
    maxOccurs="1" />
    <xsd:element type="stns:UpdateScheduleVO" name="scheduleVO"minOccurs="1"
    nillable="true" maxOccurs="1" />
    <xsd:element type="xsd:long" name="sourceID" minOccurs="1"maxOccurs="1"
    />
    <xsd:element xmlns:tp="java:language_builtins.util" type="tp:List"
    name="updateFrequencies" minOccurs="1" nillable="true" maxOccurs="1" />
    <xsd:element xmlns:tp="java:com.xxx.framework.persist"
    type="xsd:dateTime" name="updatesDisabledDate" minOccurs="1"nillable="true"
    maxOccurs="1" />
    <xsd:element xmlns:tp="java:language_builtins.util" type="tp:List"
    name="values" minOccurs="1" nillable="true" maxOccurs="1" />
    </xsd:sequence>
    </xsd:extension>
    </xsd:complexContent>
    </xsd:complexType>
    "Scott Ziegler" <[email protected]> wrote in message
    news:[email protected]...
    On Mon, 21 Jul 2003 09:31:45 -0500, Mark Fine wrote:
    I've been debugging an XML-RPC generated client and came across the
    following problem:
    I have a webserice serialized Object, "IndexVO" that has an attribute
    (ie.
    element) "code".
    The WLS8.1 generated WSDL schema declares that code is in the
    "com...valueobjects" namespace by virtue of a default (target)namespace.
    At runtime, the SOAP envelope that is created seems to put the
    attribute/element "code" in the EMPTY namespace, and not in the
    "com...valueobjects" namespace. The XML-RPC generated client code is
    looking for "code" in the "com...valueobjects" namespace and skips
    over
    it
    because it is in the "", blank namespace (according to the XML
    parser).
    >>>
    I'm not a XML expert but from what I can tell, the SOAP envelope thatis
    returned does not match the WSDL file with respect to the namespace ofthe
    attributes in IndexVO.
    Am I reading this wrong?We did this for interoperability reasons. Some other stacks that we
    were
    trying to work with would not work if those elements were qualified.The
    problem really stems from SOAP 1.1:
    http://www.w3.org/TR/SOAP/#_Toc478383520
    "Accessors whose names are local to their containing types have
    unqualified element names; all others have qualified names."
    SOAP stacks that are not schema aware basically require this behavior.
    You might try using a doc-literal service (which is more faithful to the
    schema) if that fits your situation.
    --Scott

  • Select text from all_views returns an empty string

    My application allows the user to select between the Data Provider for ODBC and the Data Provider for Oracle. (ODP)
    When using the ODBC provider the statement:
    Select text from all_views where view_name='MYVIEW'
    returns the expected string.
    If I connect via ODP however it returns an empty string.
    (If I use 'Select *' it tells me the text_length is 154 in this specific case - so there is definately text available.)
    I'm thinking it has something to do with the fact that the data type is LONG.
    In both cases I retreive the data using rdr.GetChars(), which should work.
    If I use the dbms_metadata.get_ddl function instead, it does return the string (Probably because the return type is not LONG)
    Unfortunately that function only works for Views in the current schema, while the original Select works for any view.
    (And I dont know what version of Oracle this function was added in - I have to support older versions too.)
    Similarly, if I use one of the XML functions to retreive the text as XML it works fine.
    (Again it is probably returned as a VARCHAR2 instead of a LONG.)
    The strange thing is that when I created my own table containing a LONG column I was able to load and retreive data without any problems.
    The problem appears to be specific to this column in all_views.
    Anyone know a solution to this?
    Thanks
    Mike

    Thanks that was it.
    I had not seen those properties since I am working with the 'generic' objects (DbCommand rather than OracleCommand, etc.)
    What is strange is that I was able to retreive data from my own LONG column WITHOUT setting this value to -1.
    (It defaulted to 0 in both cases.)
    The only difference was that when I retreived data from my own column I specified CommandBehaviour.SequentialAccess.
    When I retreived the all_views.text column I did not specify a behaviour at all.
    However the Oracle docs said that SequentialAccess is not supported ... so I guess that is not correct.
    (Maybe it doesn't 'work', but it certainly seems to cause things to work differently)
    Thanks
    Mike

  • What happens when a OUT parameter of a web-service returns an empty string

    Hi,
    Any idea on how to deal with the situation when a web-service returns an empty string
    I get the following System Exception:-
    Caused by: java.lang.AssertionError: Attempt to set empty javaType to ticketResponse(out,0) :: fuego.type.FuegoClass$LazyRef@6770f2. It must be null or a valid java type.
    It therefore either expects a null value or a valid java type...
    Since it goes into a system exception, the activity is not completed and nothing is inserted into the web-service..
    How do we resolve this error inside of BPM?

    Thanks Ben for your replies.
    Before I attempt changing a VI that was written by a client and make a total mess of it, there's something I'd like to point out.
    I tried the re-entrant VI approach and that didn't go any further than the VIT approach, and probably for the same reason(s).
    The interesting part is that (with the VIT approach) the same VIT is called by another process and it works fine.  It is just for the process that has it appear within 2 sub-panels.  So the issue is related to having either having two instances spawn at once of the same VIT or it is related to the sub-panels.  I think it is the two instances (or copies of the VIT) that causes LV to caugh...
    So you are trying to tell me that the above description is accurate and it is because of the private methods...??...
    How would I "wrap" those private methods into public ones?  The seems to be a piece of this puzzle that I am not yet grasping..
    Thanks for your patience and help.
    RayR

  • Human tasks, complex types and variable assignment.

    Hi folks,
    I encountered a problem while working with 10.1.3.1 which I haven't managed to solve yet and would be grateful for assistance. I have defined a complex data type (just a sequence of strings) and want to fill that data type by going through a flow of screens, e.g. through several human tasks. I have defined that type as a variable to the BPEL process and have managed to assign simple expressions to the variable and pass that into a Human Task. In the task I see now a simple input form for all attributes of the type.
    Now the problem. After I fill out the form and complete the human task, I have
    The global variable:
    <outputVariable>
         <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload">
              <MyProcessResponse xmlns="http://xmlns.oracle.com/VacationRequest">
                   <vorname/>
                   <nachname/>
                   <strasse/>
                   <nummer/>
                   <postleitzahl/>
                   <stadt/>
                   <maximaleDauer/>
                   <minimaleDauer/>
              </MyProcessResponse>
         </part>
    </outputVariable>
    and the return value from the human task:
    <task>
         <title>CaptureData</title>-
              <payload>
                   <MyProcessResponse>
                        <vorname>David</vorname>
                        <nachname>Beckham</nachname>
                        <strasse>HighStreet</strasse>
                        <nummer/>
                        <postleitzahl/>
                        <stadt/>
                        <maximaleDauer/>
                        <minimaleDauer/>
                   </MyProcessResponse>
              </payload>
    </task>
    Now the only thing I would like to do is to replace the original values in the variable with the new values that have been returned from the task, this should be performed in an extra assign step. Sounds simple. JDeveloper wouldn't even let me klick through the return value from the HumanTask, so it seems as if I have to do things manually.
    These are my tries:
    Command 1:
    <copy>
         <from variable="CaptureData_1_globalVariable"
    part="payload" query="/task:task/task:payload" />
    <to variable="outputVariable" part="payload"
    query="/ns1:MyProcessResponse"/>
    </copy>
    Result 1:
    <outputVariable>
         <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload">
              <ns0:MyProcessResponse xmlns="http://xmlns.oracle.com/bpel/workflow/task"     xmlns:ns0="http://xmlns.oracle.com/VacationRequest">
                   <MyProcessResponse xmlns="http://xmlns.oracle.com/VacationRequest">
                        <vorname>David</vorname>
                        <nachname>Beckham</nachname>
                        <strasse>HighStreet</strasse>
                        <nummer/>
                        <postleitzahl/>
                        <stadt/>
                        <maximaleDauer/>
                        <minimaleDauer/>
                   </MyProcessResponse>
              </ns0:MyProcessResponse>
         </part>
    </outputVariable>
    --> There is one MyProcessResponse element too many
    Command 2:
    <copy>
         <from variable="CaptureData_1_globalVariable"
    part="payload" query="/task:task/task:payload"/>
    <to variable="outputVariable" part="payload"
    query="/ns1:MyProcessResponse/ns1:vorname"/>
    </copy>
    Result 2:
    <outputVariable>
         <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload">
              <MyProcessResponse xmlns="http://xmlns.oracle.com/VacationRequest">
                   <ns0:vorname xmlns="http://xmlns.oracle.com/bpel/workflow/task"                     xmlns:ns0="http://xmlns.oracle.com/VacationRequest">
                        <MyProcessResponse xmlns="http://xmlns.oracle.com/VacationRequest">
                             <vorname>David</vorname>
                             <nachname>Beckham</nachname>
                             <strasse>HighStreet</strasse>
                             <nummer/>
                             <postleitzahl/>
                             <stadt/>
                             <maximaleDauer/>
                             <minimaleDauer/>
                        </MyProcessResponse>
                   </ns0:vorname>
                   <nachname/>
                   <strasse/>
                   <nummer/>
                   <postleitzahl/>
                   <stadt/>
                   <maximaleDauer/>
                   <minimaleDauer/>
              </MyProcessResponse>
         </part>
    </outputVariable>
    --> This was moreless expected, since I tried to copy the stuff to some wrong place.
    Command 3:
    <copy>
         <from variable="CaptureData_1_globalVariable"
    part="payload" query="/task:task/task:payload/ns0:MyProcessResponse"/>
    <to variable="outputVariable" part="payload"
    query="/ns1:MyProcessResponse"/>
    </copy>
    Result 3:
    --> Task does't return (!!!). In the BPEL Worklist, the task is completed, however in the BPEL console it still apears as "waiting to return from Human task".
    Does anyone have a hint on how to copy the values so that I get exactly the structure that I printed at the very top?
    Thanks for help. Rock On !

    Hello everyone,
    It seems that we are talking about different things, I am afraid. Let me describe the scenario once again:
    - I want to have a BPEL process with more than one role involved
    - This process should be used to gather some complex data.
    - All data gathering should be done through HumanTasks.
    So I defined an xsd complex type, that contains a sequence of fields. This complex type should be part of the process payload.
    Now before HumanTask 1 is called, I copy the contents of this variable into the input for tasks1. This works fine and I see the appropriate values, when opening the Human Task in the BPEL worklist application.
    Now after HumanTask1 is completed, the values I entered inside that tasks are returned as a variable from the HumanTask. My problem is, that I cannot copy the contents of the task back into the main process. With simpleTypes this is relatively ok, since Jdev supports the assembling of the copy operation, however for complex tasks it fails.
    A typical scenario for this would be where e.g. a customer fills a shipping address and afterwards a store staff fills product details in the same order. In Java this could be solved via "pass by reference". Who can provide an example?

  • How to invoke a Web Service from PL/SQL with Complex Type as  input.

    Hello,
    I am trying to invoke a web service from PL/SQL using the UTL_DBWS package.
    The web service expects a complex type as input (defined below):
    <xs:complexType name="MsgType">
    <xs:sequence>
    <xs:element name="sender" type="xs:string"/>
    <xs:element name="messageId" type="xs:string"/>
    <xs:element name="messageType" type="xs:string"/>
    <xs:element name="dateSent" type="xs:date"/>
    </xs:sequence>
    </xs:complexType>
    How to construct input to this in PL/SQL Procedure?
    Has any body tried this before?
    An exmaple will be helpful.
    Thanks

    Dear,
    I have read your article, it is useful for me. But I cannot Apply to my case. Please kindly help me. Thank you.
    When running, the error occurs:
    1:39:31 Execution failed: ORA-20000: soapenv:Server.userException - org.xml.sax.SAXParseException: Attribute name &quot;password&quot; associated with an element type &quot;user&quot; must be followed by the &apos; = &apos; character.
    My webservice Url: http://abc.com.vn:81/axis/ABC_WS_TEST.jws?wsdl
    I make PL/SQL (similiar as your example)
    FUNCTION INVOKESENDMT
    RETURN VARCHAR2
    AS
    l_request soap_api.t_request;
    l_response soap_api.t_response;
    l_return VARCHAR2(32767);
    l_url VARCHAR2(32767);
    l_namespace VARCHAR2(32767);
    l_method VARCHAR2(32767);
    l_soap_action VARCHAR2(32767);
    l_result_name VARCHAR2(32767);
    p_zipcode VARCHAR2(160);
    BEGIN
    --p_zipcode:='''TEST'' ; ''TEST'';''84912187098'';''84912187098'';''0'';''8118'';''1'';''000001'';''ThuNghiem'';''''';
    p_zipcode:='TEST';
    -- Set proxy details if no direct net connection.
    --UTL_HTTP.set_proxy('myproxy:4480', NULL);
    --UTL_HTTP.set_persistent_conn_support(TRUE);
    -- Set proxy authentication if necessary.
    --soap_api.set_proxy_authentication(p_username => 'TEST',
    -- p_password => 'TEST');
    l_url := 'http://abc.com.vn:81/axis/ABC_WS_TEST.jws';
    l_namespace := 'xmlns="' || l_url || '"';
    l_method := 'sendMT';
    l_soap_action := l_url || '#sendMT';
    l_result_name := 'sendMTResponse';
    l_request := soap_api.new_request(p_method => l_method,
    p_namespace => l_namespace);
    soap_api.add_parameter(p_request => l_request,
    p_name => 'user password sender receiver chargedflag servicenumber messagetype messageid textcontent binarycontent',
    p_type => 'xsd:string',
    p_value => p_zipcode);
    l_response := soap_api.invoke(p_request => l_request,
    p_url => l_url,
    p_action => l_soap_action);
    l_return := soap_api.get_return_value(p_response => l_response,
    p_name => l_result_name,
    p_namespace => l_namespace);
    RETURN l_return;
    END;

Maybe you are looking for