I haven't followed this in detail all the way through, but from what I can see of the schema in this email it sounds like Axis is doing the correct thing, it's .NET that has the problem. Does that match your understanding, Dino?

The bug that you referenced, dims, is for WSDL generation from Axis. This problem is with the actual operation based on a supplied WSDL, if I'm understanding it correctly.

 - Dennis

Davanum Srinivas wrote:

Dino,

Is the issue same as in JIRA bug AXIS-1366?
(http://issues.apache.org/jira/browse/AXIS-1366)

Or should we create a new issue for it?

thanks,
dims


On Fri, 11 Mar 2005 12:41:41 -0800, Dino Chiesa <[EMAIL PROTECTED]> wrote:


Yes !  Ack!

I have seen this before.

When the schema does not declare an elementFormDefault ,
.NET assumes it is one way,
And AXIS assumes  it is the other.

This is a bug in one or the other.(I don't know what a schema parser is
expected to do with EFD is missing).

The workaround is to specify elementFormDefault, one way or the other,
in the schema.

Good catch, Anne!


-----Original Message----- From: Richard Wallis [mailto:[EMAIL PROTECTED] Sent: Friday, March 11, 2005 1:29 PM To: Anne Thomas Manes Cc: Dino Chiesa Subject: RE: Empty namespace - again

Anne,

Please award yourself a gold star! The elementFormDefault="qualified"
solved it, and 18:24 on a Friday night in an empty office after a [very]
long week.  ;-}

I've copied this to Dino for his interest.

Many thanks again,

       Richard.



-----Original Message-----
From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
Sent: 11 March 2005 18:10
To: Richard Wallis
Subject: Re: Empty namespace - again

I'm surprised that .NET got confused by this, because normally it
handles valid schema definitions. Perhaps Dino can shead some light on


it. But here's a work around. Add the elementFormDefault="qualified"
attribute to the scehma definition, which will make the <return>
element namespace qualified.

<wsdl:definitions xmlns:impl="urn:LookupBorrower"
xmlns:intf="urn:LookupBorrower"
xmlns:apachesoap="http://xml.apache.org/xml-soap";
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
targetNamespace="urn:LookupBorrower">
<wsdl:types>
  <xsd:schema targetNamepsace="urn:LookupBorrower"
     elementFormDefault="qualified">
    <xsd:element name="echoString">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="inputString" type="xsd:string"/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>
    <xsd:element name="echoResponse">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="return" type="xsd:string"/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
</wsdl:types>
<wsdl:message name="echoStringRequest">
   <wsdl:part name="parameters" element="intf:echoString"/>
</wsdl:message>  <wsdl:message name="echoStringResponse">
    <wsdl:part name="parameters"
element="intf:echoResponse"/>  </wsdl:message> <wsdl:portType
name="LookupBorrower">
   <wsdl:operation name="echoString">
      <wsdl:input message="impl:echoStringRequest"/>
      <wsdl:output message="impl:echoStringResponse"/>
   </wsdl:operation>
</wsdl:portType>
<wsdl:binding name="LookupBorrowerSoapBinding"
   type="impl:LookupBorrower">
   <wsdlsoap:binding style="document"
      transport="http://schemas.xmlsoap.org/soap/http"/>
   <wsdl:operation name="echoString">
      <wsdl:input>
          <wsdlsoap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
           <wsdlsoap:body use="literal"/>
      </wsdl:output>
   </wsdl:operation>
</wsdl:binding>
<wsdl:service name="LookupBorrowerService">
   <wsdl:port name="LookupBorrower"
     binding="impl:LookupBorrowerSoapBinding">
     <wsdlsoap:address

location="http://localhost:8080/axis/services/LookupBorrower"/>
   </wsdl:port>
</wsdl:service>
</wsdl:definitions>


On Fri, 11 Mar 2005 17:56:50 -0000, Richard Wallis
<[EMAIL PROTECTED]> wrote:


Anne,

I did, but it didn't!

Here is my bit of C# built in Visual C#.net pulling in the Web
reference of my wsdl as supplied by my Axis server:

static void Main(string[] args)
{
 ConsoleApplication1.rjwpc.LookupBorrowerService srv = new
ConsoleApplication1.rjwpc.LookupBorrowerService();
 String ret = srv.echoString("Hi there");
 Console.WriteLine("Response: "+ret); }

It ret is set to null after the echoString() call. Digging


in to the


auto created C# code I get the following:

/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("",
RequestNamespace="urn:LookupBorrower",
ResponseNamespace="urn:LookupBorrower",
Use=System.Web.Services.Description.SoapBindingUse.Literal,



ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrappe


d)
]
[return: System.Xml.Serialization.XmlElementAttribute("return")]
public string echoString(string inputString) {
  object[] results = this.Invoke("echoString", new object[]
{inputString});
  return ((string)(results[0]));
}

The ResponseNamespace="urn:LookupBorrower" makes me wonder


what NS it


is looking for 'return' to be in.
Debug shows 'results' is a one element array with that


element being


null.

I'm getting more confused by the hour.

Richard.

P.S. I'm not too concerned about XMLSpy either!




-----Original Message-----
From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
Sent: 11 March 2005 17:36
To: Richard Wallis
Subject: Re: Empty namespace - again

I don't understand what XMLSpy is complaining about, but


there are a


number of known errors in XMLSpy. Perhaps it's just complaining
because I used the same namespace for both the WSDL and


the schema


(which is acceptable).

But there's nothing wrong with the second point. .NET will not
object to the fact that <return> is unqualified, because


that's what


the schema says it should be. .NET was objecting to the fact that
the child element of the SOAP Body was unqualified.

Try. You'll see.

Anne


On Fri, 11 Mar 2005 17:01:42 -0000, Richard Wallis
<[EMAIL PROTECTED]> wrote:


Hi Anne,

Thanks for this, but two problems:
1. My copy of XMLSpy complains "Message part 'parameters'


(in Message


echoStringRequest) - parameter intf:echoString: NS


prefix does not


refer to this schema!"

But more importantly,
2. The problem still persists but nested 1 level down,


'return' still


has xmlns="":

  <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>
        <echoStringResponse xmlns="urn:LookupBorrower">
           <return xmlns="">Hello mum</return>
        </echoStringResponse>
     </soapenv:Body>
  </soapenv:Envelope>

Richard.



-----Original Message-----
From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
Sent: 11 March 2005 15:56
To: [email protected]
Subject: Re: Empty namespace - again

Richard,

This is not a valid doc/literal WSDL document. You need to
define the WSDL differently depending on whether you want
rpc/encoded, rpc/literal, of doc/literal.

Here's how you should define your WSDL if you'd like


to create a


doc/literal service conforming to the "wrapped"
programming convention (which offers the best


interoperability with


.NET).

<wsdl:definitions xmlns:impl="urn:LookupBorrower"
xmlns:intf="urn:LookupBorrower"
xmlns:apachesoap="http://xml.apache.org/xml-soap";
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
targetNamespace="urn:LookupBorrower">
<wsdl:types>
<xsd:schema targetNamepsace="urn:LookupBorrower">
<xsd:element name="echoString">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="inputString"


type="xsd:string"/>


</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="echoResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="return" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="echoStringRequest">
<wsdl:part name="parameters" element="intf:echoString"/>
</wsdl:message>
<wsdl:message name="echoStringResponse">
<wsdl:part name="parameters"


element="intf:echoResponse"/>


 </wsdl:message>
 <wsdl:portType name="LookupBorrower">
    <wsdl:operation name="echoString">
       <wsdl:input message="impl:echoStringRequest"/>
       <wsdl:output message="impl:echoStringResponse"/>
    </wsdl:operation>
 </wsdl:portType>
 <wsdl:binding name="LookupBorrowerSoapBinding"
    type="impl:LookupBorrower">
    <wsdlsoap:binding style="document"
       transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="echoString">
       <wsdl:input>
           <wsdlsoap:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
            <wsdlsoap:body use="literal"/>
       </wsdl:output>
    </wsdl:operation>
 </wsdl:binding>
 <wsdl:service name="LookupBorrowerService">
    <wsdl:port name="LookupBorrower"
      binding="impl:LookupBorrowerSoapBinding">
      <wsdlsoap:address




location="http://localhost:8080/axis/services/LookupBorrower"/>


    </wsdl:port>
 </wsdl:service>
</wsdl:definitions>


On Fri, 11 Mar 2005 15:37:34 -0000, Richard Wallis
<[EMAIL PROTECTED]> wrote:


Here is the whole doc.

For information I have tested this with all 4 possible


combinations of


document/rpc & literal/encoded and the work fine


axis to axis.


The problem is that .net doesn't like xmlns="" or encoded.

<wsdl:definitions xmlns:impl="urn:LookupBorrower"
xmlns:intf="urn:LookupBorrower"
xmlns:apachesoap="http://xml.apache.org/xml-soap";
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
targetNamespace="urn:LookupBorrower">
<wsdl:message name="echoStringRequest">
<wsdl:part name="inputString"


type="xsd:string"/>


</wsdl:message>
<wsdl:message name="echoStringResponse">
<wsdl:part name="return" type="xsd:string"/>
</wsdl:message>
<wsdl:portType name="LookupBorrower">
<wsdl:operation name="echoString"
parameterOrder="inputString">
<wsdl:input


message="impl:echoStringRequest"/>


<wsdl:output


message="impl:echoStringResponse"/>


               </wsdl:operation>
       </wsdl:portType>
       <wsdl:binding name="LookupBorrowerSoapBinding"
type="impl:LookupBorrower">
               <wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
               <wsdl:operation name="echoString">
                       <wsdl:input>
                               <wsdlsoap:body use="literal"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
namespace="urn:LookupBorrower"/>
                       </wsdl:input>
                       <wsdl:output>
                               <wsdlsoap:body use="literal"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
namespace="urn:LookupBorrower"/>
                       </wsdl:output>
               </wsdl:operation>
       </wsdl:binding>
       <wsdl:service name="LookupBorrowerService">
               <wsdl:port name="LookupBorrower"
binding="impl:LookupBorrowerSoapBinding">
                       <wsdlsoap:address



location="http://localhost:8080/axis/services/LookupBorrower"/>


               </wsdl:port>
       </wsdl:service>
</wsdl:definitions>

Regards,
Richard.


-----Original Message-----
From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
Sent: 11 March 2005 15:22
To: [email protected]
Subject: Re: Empty namespace - again

Please provide the rest of the WSDL document.

Can we assume that you have defined the <return> element


in the WSDL?


Anne


On Fri, 11 Mar 2005 15:00:29 -0000, Richard Wallis
<[EMAIL PROTECTED]> wrote:


Hi,

This combination in the WSDL used as input to wsdl2java:

       <wsdlsoap:binding style="document" ...........
       <wsdlsoap:body  use="literal" .........

Results in an empty namespace thus:

     <soapenv:Body>
        <return xmlns="">Hello World</return>
     </soapenv:Body>

Following many threads on this list it is clear


that this


is a problem.


If you are trying to consume an axis service in .net it


appears to be


a 'show stopper'. I have tried use="encoded" but .net


rejects it, and


also style="rpc" but still get xmlns="".

As yet I have not been able to identify a work


around for this.


Although there seems to some hints of a bug fix


for this


in the pipeline, it is still a problem in 1.2RC3.

Questions:
1. Is there a work around for this so


that I can


at


least use


my axis service in .net?

2. Is there a fix for this that will appear in


the next RC?


Richard Wallis














Reply via email to