[ http://jira.codehaus.org/browse/XFIRE-593?page=all ]

Tomasz Sztelak closed XFIRE-593.
--------------------------------

    Resolution: Won't Fix

> Problems connecting with Spring to a non-XFire Web Service
> ----------------------------------------------------------
>
>                 Key: XFIRE-593
>                 URL: http://jira.codehaus.org/browse/XFIRE-593
>             Project: XFire
>          Issue Type: Improvement
>          Components: Spring
>    Affects Versions: 1.1.2
>         Environment: XFire 1.1.2; BEA Web Logic Web Service implementation. 
> XFire is the client.
>            Reporter: Andres Bernasconi
>         Assigned To: Dan Diephouse
>
> I am trying to access a WebLogic service with an XFire client. The WSDL of 
> the service looks something like this:
> ...
>          <xsd:element name="getDeviceVendorModel">
>             <xsd:complexType>
>                <xsd:sequence>
>                   <xsd:element type="xsd:string" name="string"></xsd:element>
>                   <xsd:element type="xsd:string" name="string0"></xsd:element>
>                </xsd:sequence>
>             </xsd:complexType>
>          </xsd:element>
> ...
> I am trying to call the getDeviceVendorModel service, which receives two 
> strings (should be named string and string0).
> But the problem is that XFire is sending the strings as in0 and in1 ? Am I 
> doing something wrong? I would have thought that XFire would use the WSDL to 
> generate the XML names.
> The error the BEA service throws is:
> org.codehaus.xfire.XFireRuntimeException: Could not invoke service..
> Nested exception is org.codehaus.xfire.fault.XFireFault: Exception during 
> processing: javax.xml.soap.SOAPException:
> Found SOAPElement [<in1>8860</in1>]. But was not able to find a Part that is 
> registered with this Message which corresponds to this SOAPElement. The name 
> of the element should be one of these[string,string0] (see Fault Detail for 
> stacktrace) 
> Looking into this I found out the following:
> Lines 127 and 128 of AegisBindingProvider.java (xfire 1.1.2) say:
>             if (type.isComplex() && !type.isAbstract())
>                 name = type.getSchemaType ();
> When type is StringType (complex = false; abstract = true) it never executes 
> the getSchemaType() method. Still, if I print the schemaType of the 
> StringType it contains the correct name (in my particular case "string"). 
> Since this returns null line 163 of DefaultServiceConfiguration is executed:
>         return new 
> QName(endpoint.getServiceInfo().getPortType().getNamespaceURI(),
>                          createName(method, paramNumber, 
> op.getInputMessage().size(), doc, "in"));
> where it forces the "in" name of the parameter.
> If we change those lines to return type.getSchemaType() when the parameter is 
> a TypeString then everything works fine. Dunno if this is ok or not.
> Also, in the user-list Dan wrote:
> "[...]The XFireClientFactoryBean really only works with if
> you wrote your service in XFire[...]"
> Why is this limitation? Will it be overcome in the future? Do you know what 
> release? I need to decide if still going with XFire or not.
> Regards
> Andres Bernasconi

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to