axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Heaton,William B." <bro...@mitre.org>
Subject Axis client consuming SOAP::Lite service, complex types
Date Mon, 04 Nov 2002 19:03:51 GMT
Hi,

I have a web service I wrote in Perl using SOAP::Lite.  I've used Axis 
before to consume really simple Perl web services that perform 
echoString and HelloWorld type functionality, however, this time I've 
built a web service in SOAP::Lite that returns some complex types.  I am 
trying to build a Java client using AXIS to consume this service, with 
little success.  The WSDL file I'm using has the following complex types 
defined:

             <xsd:complexType name="JIBArray">
                <xsd:complexContent>
                    <xsd:restriction base="soapenc:Array">
                        <xsd:attribute ref="soapenc:arrayType" 
wsdl:arrayType="tns:JIBs[]"/>
                    </xsd:restriction>
                </xsd:complexContent>
            </xsd:complexType>

           <xsd:complexType name="JIBs">
                <xsd:all>
                    <xsd:element name="title" type="xsd:string"/>
                    <xsd:element name="url" type="xsd:string"/>
                    <xsd:element name="summary" type="xsd:string"/>
                    <xsd:element name="date" type="xsd:string"/>
                </xsd:all>
            </xsd:complexType>

The relevant message from the WSDL is:

<message name='getRequest1'>
        <part name='request' type='xsd:string'/>
    </message>
<message name='getResponse1'>
        <part name='results' type='tns:JIBArray'/>
</message>

I used WSDL2Java to generate the Java stubs, and I wrote a simple client:

import com.soaplite.namespaces.*;

public class JIBClient {

        public static void main(String args[]) throws Exception {
        JIBService service = new JIBServiceLocator();
        JIBPortType myblah = service.getJIBPort();
       
        JIBs[] j = myblah.getJIBs("testing");
        String s = j[0].getUrl();

        System.out.println("The URL of JIB[0] is " + s);
        }
}

My problem is that I get all kinds of errors when I try to execute the 
above:

Exception in thread "main" AxisFault
 faultCode: {http://xml.apache.org/axis/}Server.generalException
 faultString: Error invoking operation:
java.lang.ArrayStoreException
 faultActor: null
 faultDetail:
        stackTrace: AxisFault
 faultCode: {http://xml.apache.org/axis/}Server.generalException
 faultString: Error invoking operation:
java.lang.ArrayStoreException
 faultActor: null
 faultDetail:

Error invoking operation:
java.lang.ArrayStoreException
        at org.apache.axis.client.Call.invoke(Call.java:1329)
        at 
com.soaplite.namespaces.JIBBindingStub.getJIBs(JIBBindingStub.java:134)
        at JIBClient.main(JIBClient.java:12)

I would welcome any suggestions that anyone can give me.  I've tried 
using Apache:Soap and older versions of Axis, with no success.

Thanks

-- 
Brook Heaton




Mime
View raw message