Uploaded image for project: 'Axis'
  1. Axis
  2. AXIS-1935

.NET does not like xmlns=""

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • None
    • None
    • None
    • Axis 1.2RC3 nightly

    Description

      Using wrapped/literal mode, .NET doesn't seem to like this:
      <item xmlns="">

      <?xml version="1.0" encoding="UTF-8"?>
      <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>
      <login xmlns="http://some.company.com/ws">
      <username>abc</username>
      <password>def</password>
      <options>
      <name>dummy1</name>
      <value xsi:type="xsd:string">dummy_val1</value>
      </options>
      <options>
      <name>dummy2</name>
      <value xsi:type="ns1:ArrayOfNamedValue" xmlns:ns1="http://some.company.com/ws">
      <item xmlns="">
      <ns1:name>dummy2-1</ns1:name>
      <ns1:value xsi:type="xsd:string">val2-1</ns1:value>
      </item>
      <item xmlns="">
      <ns1:name>dummy2-2</ns1:name>
      <ns1:value xsi:type="xsd:int">314</ns1:value>
      </item>
      </value>
      </options>
      </login>
      </soapenv:Body>
      </soapenv:Envelope>

      There's a patch for it that I applied to the CVS myself, would you be
      able to fix it? I don't think that xmlns="" is valid.

      Here's the patch that I applied (I'm not sure where it comes from)


      Modify org.apache.axis.encoding.SerializationContext.serializeActual()
      method.

      Existing:
      // -----------------
      // NOTE: I have seen doc/lit tests that use
      // the type name as the element name in multi-ref cases
      // (for example <soapenc:Array ... >)
      // In such cases the xsi:type is not passed along.
      // -----------------
      // The multiref QName is our own fake name.
      // It may be beneficial to set the name to the
      // type name, but I didn't see any improvements
      // in the interop tests.
      //if (name.equals(multirefQName) && type != null)
      // name = type;
      ser.serialize(elemQName, attributes, value, this);
      return;

      New:

      // -----------------
      // NOTE: I have seen doc/lit tests that use
      // the type name as the element name in multi-ref cases
      // (for example <soapenc:Array ... >)
      // In such cases the xsi:type is not passed along.
      // -----------------
      // The multiref QName is our own fake name.
      // It may be beneficial to set the name to the
      // type name, but I didn't see any improvements
      // in the interop tests.
      //if (name.equals(multirefQName) && type != null)
      // name = type;

      if (elemQName.getNamespaceURI().equals(""))

      { elemQName = new QName(this.nsStack.getNamespaceURI(""),elemQNa me.getLocalPart()); }

      ser.serialize(elemQName, attributes, value, this);
      return;


      According to Dims the WSDL should be using elementFormDefault="unqualified" but I'm not sure that makes a difference on the server, the server should no longer send xmlns=""

      If indeed the WSDL is not correct, then Java2WSDL should be fixed, that's what I'm using to generated the WSDL from the Java server side classes.

      Please see this bug for more: http://issues.apache.org/jira/browse/AXIS-1926

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              timkagle Tim K
              Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: