axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Wolters, Oliver" ...@ProCom.de>
Subject AW: Bug with Arrays as Return Types
Date Wed, 22 Jun 2005 12:33:48 GMT
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:1.2@gollum.procom.intern: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:davanum@gmail.com] 
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 <WT@procom.de> 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:wt@procom.de 
>  


-- 
Davanum Srinivas -http://blogs.cocoondev.org/dims/

Mime
View raw message