Hi Dims, thanks for your answer. I think that there is already a bug report for this bug (if it's stil present). I'm not sure but maybe I'm doing something bad with my deployment. The problem is: The webservices I'm working on are generated from CORBA-IDL - not from a WSDL as I have explained in my mail "AXIS 1.2 and MS VB interop (arrays)" So the way it goes is CORBA-IDL -> idlj-> Java-Stubs -> deploy as WS -> generate WSDL -> generate Client-Stub.
The generated WSDL is (the "getUserDomainsByName"-Methode returning an Array of "TDomain" makes trouble): <wsdl:definitions targetNamespace="http://gateway.bofit.enw.procom.de/gatekeeper"> - <!-- WSDL created by Apache Axis version: 1.2.1 Built on Jun 14, 2005 (09:15:57 EDT) --> - <wsdl:types> - <schema elementFormDefault="qualified" targetNamespace="http://gateway.bofit.enw.procom.de/gatekeeper"> <import namespace="http://gateway.bofit.enw.procom.de"/> <import namespace="http://CORBA.omg.org"/> - <element name="logoutWebservice"> <complexType/> </element> - <element name="logoutWebserviceResponse"> <complexType/> </element> <element name="fault" type="tns1:EInternalError"/> - <element name="createServiceManager"> - <complexType> - <sequence> <element name="in0" type="xsd:string"/> <element name="in1" type="xsd:string"/> <element name="in2" type="xsd:short"/> </sequence> </complexType> </element> - <element name="createServiceManagerResponse"> - <complexType> - <sequence> <element name="createServiceManagerReturn" type="xsd:anyType"/> </sequence> </complexType> </element> <element name="fault1" type="tns1:EUnknownUser"/> <element name="fault2" type="tns1:EUserLoggedIn"/> <element name="fault3" type="tns1:EWrongPassword"/> <element name="fault4" type="tns1:EUnknownDomain"/> - <element name="getUserDomainsByName"> - <complexType> - <sequence> <element name="in0" type="xsd:string"/> </sequence> </complexType> </element> - <element name="getUserDomainsByNameResponse"> - <complexType> - <sequence> <element maxOccurs="unbounded" name="getUserDomainsByNameReturn" type="tns1:TDomain"/> </sequence> </complexType> </element> <element name="fault5" type="tns1:EDbError"/> </schema> - <schema elementFormDefault="qualified" targetNamespace="http://CORBA.omg.org"> <import namespace="http://gateway.bofit.enw.procom.de/gatekeeper"/> <import namespace="http://gateway.bofit.enw.procom.de"/> - <complexType abstract="true" name="UserException"> <sequence/> </complexType> </schema> - <schema elementFormDefault="qualified" targetNamespace="http://gateway.bofit.enw.procom.de"> <import namespace="http://gateway.bofit.enw.procom.de/gatekeeper"/> <import namespace="http://CORBA.omg.org"/> - <complexType name="EInternalError"> - <complexContent> - <extension base="tns2:UserException"> <sequence/> </extension> </complexContent> </complexType> - <complexType name="EUnknownUser"> - <complexContent> - <extension base="tns2:UserException"> <sequence/> </extension> </complexContent> </complexType> - <complexType name="EUserLoggedIn"> - <complexContent> - <extension base="tns2:UserException"> <sequence/> </extension> </complexContent> </complexType> - <complexType name="EWrongPassword"> - <complexContent> - <extension base="tns2:UserException"> <sequence/> </extension> </complexContent> </complexType> - <complexType name="EUnknownDomain"> - <complexContent> - <extension base="tns2:UserException"> <sequence/> </extension> </complexContent> </complexType> - <complexType name="TDomain"> - <sequence> <element name="id" type="xsd:int"/> <element name="transaktion" type="xsd:int"/> <element name="name" nillable="true" type="xsd:string"/> </sequence> </complexType> - <complexType name="EDbError"> - <complexContent> - <extension base="tns2:UserException"> - <sequence> <element name="reason" nillable="true" type="xsd:string"/> </sequence> </extension> </complexContent> </complexType> </schema> </wsdl:types> - <wsdl:message name="logoutWebserviceResponse"> <wsdl:part element="impl:logoutWebserviceResponse" name="parameters"/> </wsdl:message> - <wsdl:message name="EDbError"> <wsdl:part element="impl:fault5" name="fault"/> </wsdl:message> - <wsdl:message name="EUnknownDomain"> <wsdl:part element="impl:fault4" name="fault"/> </wsdl:message> - <wsdl:message name="getUserDomainsByNameResponse"> <wsdl:part element="impl:getUserDomainsByNameResponse" name="parameters"/> </wsdl:message> - <wsdl:message name="logoutWebserviceRequest"> <wsdl:part element="impl:logoutWebservice" name="parameters"/> </wsdl:message> - <wsdl:message name="getUserDomainsByNameRequest"> <wsdl:part element="impl:getUserDomainsByName" name="parameters"/> </wsdl:message> - <wsdl:message name="EInternalError"> <wsdl:part element="impl:fault" name="fault"/> </wsdl:message> - <wsdl:message name="EWrongPassword"> <wsdl:part element="impl:fault3" name="fault"/> </wsdl:message> - <wsdl:message name="createServiceManagerResponse"> <wsdl:part element="impl:createServiceManagerResponse" name="parameters"/> </wsdl:message> - <wsdl:message name="EUnknownUser"> <wsdl:part element="impl:fault1" name="fault"/> </wsdl:message> - <wsdl:message name="createServiceManagerRequest"> <wsdl:part element="impl:createServiceManager" name="parameters"/> </wsdl:message> - <wsdl:message name="EUserLoggedIn"> <wsdl:part element="impl:fault2" name="fault"/> </wsdl:message> - <wsdl:portType name="IBoFiTGatekeeper"> - <wsdl:operation name="logoutWebservice"> <wsdl:input message="impl:logoutWebserviceRequest" name="logoutWebserviceRequest"/> <wsdl:output message="impl:logoutWebserviceResponse" name="logoutWebserviceResponse"/> <wsdl:fault message="impl:EInternalError" name="EInternalError"/> </wsdl:operation> - <wsdl:operation name="createServiceManager"> <wsdl:input message="impl:createServiceManagerRequest" name="createServiceManagerRequest"/> <wsdl:output message="impl:createServiceManagerResponse" name="createServiceManagerResponse"/> <wsdl:fault message="impl:EUnknownDomain" name="EUnknownDomain"/> <wsdl:fault message="impl:EWrongPassword" name="EWrongPassword"/> <wsdl:fault message="impl:EUserLoggedIn" name="EUserLoggedIn"/> <wsdl:fault message="impl:EUnknownUser" name="EUnknownUser"/> </wsdl:operation> - <wsdl:operation name="getUserDomainsByName"> <wsdl:input message="impl:getUserDomainsByNameRequest" name="getUserDomainsByNameRequest"/> <wsdl:output message="impl:getUserDomainsByNameResponse" name="getUserDomainsByNameResponse"/> <wsdl:fault message="impl:EDbError" name="EDbError"/> <wsdl:fault message="impl:EUnknownUser" name="EUnknownUser"/> </wsdl:operation> </wsdl:portType> - <wsdl:binding name="BoFiTGatekeeperSoapBinding" type="impl:IBoFiTGatekeeper"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <wsdl:operation name="logoutWebservice"> <wsdlsoap:operation soapAction=""/> - <wsdl:input name="logoutWebserviceRequest"> <wsdlsoap:body use="literal"/> </wsdl:input> - <wsdl:output name="logoutWebserviceResponse"> <wsdlsoap:body use="literal"/> </wsdl:output> - <wsdl:fault name="EInternalError"> <wsdlsoap:fault name="EInternalError" use="literal"/> </wsdl:fault> </wsdl:operation> - <wsdl:operation name="createServiceManager"> <wsdlsoap:operation soapAction=""/> - <wsdl:input name="createServiceManagerRequest"> <wsdlsoap:body use="literal"/> </wsdl:input> - <wsdl:output name="createServiceManagerResponse"> <wsdlsoap:body use="literal"/> </wsdl:output> - <wsdl:fault name="EUnknownDomain"> <wsdlsoap:fault name="EUnknownDomain" use="literal"/> </wsdl:fault> - <wsdl:fault name="EWrongPassword"> <wsdlsoap:fault name="EWrongPassword" use="literal"/> </wsdl:fault> - <wsdl:fault name="EUserLoggedIn"> <wsdlsoap:fault name="EUserLoggedIn" use="literal"/> </wsdl:fault> - <wsdl:fault name="EUnknownUser"> <wsdlsoap:fault name="EUnknownUser" use="literal"/> </wsdl:fault> </wsdl:operation> - <wsdl:operation name="getUserDomainsByName"> <wsdlsoap:operation soapAction=""/> - <wsdl:input name="getUserDomainsByNameRequest"> <wsdlsoap:body use="literal"/> </wsdl:input> - <wsdl:output name="getUserDomainsByNameResponse"> <wsdlsoap:body use="literal"/> </wsdl:output> - <wsdl:fault name="EDbError"> <wsdlsoap:fault name="EDbError" use="literal"/> </wsdl:fault> - <wsdl:fault name="EUnknownUser"> <wsdlsoap:fault name="EUnknownUser" use="literal"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> - <wsdl:service name="IBoFiTGatekeeperService"> - <wsdl:port binding="impl:BoFiTGatekeeperSoapBinding" name="BoFiTGatekeeper"> <wsdlsoap:address location="http://localhost/axis/services/BoFiTGatekeeper"/> </wsdl:port> </wsdl:service> </wsdl:definitions> My WSDD for the service looks like this: <service name="BoFiTGatekeeper" provider="java:BoFiT" style="wrapped" > <namespace>http://gateway.bofit.enw.procom.de/gatekeeper</namespace> <requestFlow> <handler type="java:de.procom.enw.bofit.provider.BoFiTSessionHandler"/> </requestFlow> <responseFlow> <handler type="java:de.procom.enw.bofit.provider.BoFiTSessionHandler"/> </responseFlow> <parameter name="ORBInitialHost" value="localhost"/> <parameter name="ORBInitialPort" value="900"/> <parameter name="NameID" value="BoFiTGatekeeperService"/> <parameter name="NameKind" value="ProCom"/> <parameter name="NamingServiceLoc" value="corbaloc:iiop:[EMAIL PROTECTED]:20001/NameService"/> <parameter name="InterfaceClassName" value="de.procom.enw.bofit.gateway.IBoFiTGatekeeper"/> <parameter name="HelperClassName" value="de.procom.enw.bofit.gateway.IBoFiTGatekeeperHelper"/> <beanMapping qname="myNS:TDomain" xmlns:myNS="http://gateway.bofit.enw.procom.de" languageSpecificType="java:de.procom.enw.bofit.base.TDomain"/> <beanMapping qname="myNS:EInternalError" xmlns:myNS="http://gateway.bofit.enw.procom.de" languageSpecificType="java:de.procom.enw.bofit.base.EInternalError"/> <beanMapping qname="myNS:EUnknownUser" xmlns:myNS="http://gateway.bofit.enw.procom.de" languageSpecificType="java:de.procom.enw.bofit.base.EUnknownUser"/> <beanMapping qname="myNS:EUserLoggedIn" xmlns:myNS="http://gateway.bofit.enw.procom.de" languageSpecificType="java:de.procom.enw.bofit.base.EUserLoggedIn"/> <beanMapping qname="myNS:EWrongPassword" xmlns:myNS="http://gateway.bofit.enw.procom.de" languageSpecificType="java:de.procom.enw.bofit.base.EWrongPassword"/> <beanMapping qname="myNS:EUnknownDomain" xmlns:myNS="http://gateway.bofit.enw.procom.de" languageSpecificType="java:de.procom.enw.bofit.base.EUnknownDomain"/> <beanMapping qname="myNS:EDbError" xmlns:myNS="http://gateway.bofit.enw.procom.de" languageSpecificType="java:de.procom.enw.bofit.base.EDbError"/> <parameter name="allowedMethods" value="getUserDomainsByName, createServiceManager, logoutWebservice"/> </service> When generating Client-Stubs for VB the "getUserDomainsByName"-Methode has the return type TDomain - not TDomain[] (or Variant in VB). Please, could you give me a hint what's going wrong here? Regards Oliver Wolters -----Ursprüngliche Nachricht----- Von: Davanum Srinivas [mailto:[EMAIL PROTECTED] Gesendet: Mittwoch, 22. Juni 2005 14:19 An: axis-user@ws.apache.org Betreff: Re: Bug with Arrays as Return Types Oliver, Can you please open a bug report and upload the WSDL you use to generate the server/client. thanks, dims On 6/22/05, Wolters, Oliver <[EMAIL PROTECTED]> wrote: > > > Hi, > > I've got a Problem with web service methods returning an array. I have > found the example from http://wiki.apache.org/ws/DotNetInteropArrays > and it says: > > "At one point, there was a bug in AXIS dealing with an operation that > returns an array directly, rather than a structure containing an array > (ie, an operation like String[] getInfo() rather than Container > getInfo()). This may still be present in AXIS V1.2RC3. Dims?" > > Another thread in the archive says: "Also make sure that you've > applied the fix for the bug that Dino talks about." > > I have installed AXIS 1.2.1 and the bug still seems to be present. Is > this true? If so: Where can I find a patch or a workaround? Please > help! > > Mit freundlichen Grüßen > > Dipl. Ing. Oliver Wolters > (Systementwickler Auftragsentwicklung) > > -- > ProCom Systemhaus und > Ingenieurunternehmen GmbH > Luisenstr. 41 - D-52070 Aachen > > Tel. +49 241 51804-175 > Fax +49 241 51804-30 > http://www.procom.de > mailto:[EMAIL PROTECTED] > -- Davanum Srinivas -http://blogs.cocoondev.org/dims/