Uploaded image for project: 'JBoss Web Services'
  1. JBoss Web Services
  2. JBWS-706

rpc-literal binding MUST namespace qualify the descendents of part accessor elements

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Do
    • Icon: Major Major
    • None
    • None
    • jbossws-native
    • None

      JBoss fails to correctly support literal bindings for web service endpoints deployed on it. In particular it fails to namespace qualify the descendants of part accessor elements for the parameters and the return value, as defined by the schema in which the part accessor types are defined. This leads to web service endpoints deployed on JBoss being non-interpoperable and not conforming to WS-I Basic Profile, which is a mandatory J2EE 1.4 requirement.

      In particular JBoss violates R2737 from WS-I Basic Profile 1.0/1.1:
      R2737 An ENVELOPE described with an rpc-literal binding MUST namespace qualify the descendents of part accessor elements for the parameters and the return value, as defined by the schema in which the part accessor types are defined.

      This is a critical (if not a blocking) problem as it leads to JBoss web service endpoints being pretty much useless with WS-I Basic Profile conformant clients (e.g. .NET clients).

      For example I have the following XML Schema definition of a return value of a business method exposed as a method of a web service endpoint:

      <xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified"
      targetNamespace="http://customersvc.common.business.application.dotnetui"
      xmlns:tns1="http://application.alturadev.compuware.com"
      xmlns:tns="http://common.business.application.dotnetui"
      xmlns:tns2="http://customersvc.common.business.application.dotnetui"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:import namespace="http://common.business.application.dotnetui" schemaLocation="commonxsdschema.xsd"/>
      <xsd:import namespace="http://application.alturadev.compuware.com" schemaLocation="applicationxsdschema.xsd"/>
      <xsd:complexType name="CustomerDataObject">
      <xsd:complexContent>
      <xsd:extension base="tns1:DataObjectBase">
      <xsd:all>
      <xsd:element name="key" type="tns:Customer"/>
      <xsd:element name="firstName" type="xsd:string"/>
      <xsd:element name="lastName" type="xsd:string"/>
      <xsd:element name="uniqueId" type="xsd:string"/>
      </xsd:all>
      </xsd:extension>
      </xsd:complexContent>
      </xsd:complexType>
      </xsd:schema>

      The reply I get from a JBoss web service endpoint is this:

      <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>
      <ns1:retrieveAllExtResponse xmlns:ns1="http://logic.business.application.dotnetui">
      <result>
      <typedElements>
      <key>
      <uniqueId>0b238f37ffffffa901a84faeeeee2a69</uniqueId>
      </key>
      <firstName>Reinier</firstName>
      <lastName>Bos</lastName>
      <uniqueId>0b238f37ffffffa901a84faeeeee2a69</uniqueId>
      </typedElements>
      <typedElements>
      <key>
      <uniqueId>212e0f56ffffffa900888fc9b878f2b7</uniqueId>
      </key>
      <firstName>Ruud</firstName>
      <lastName>Diterwich</lastName>
      <uniqueId>212e0f56ffffffa900888fc9b878f2b7</uniqueId>
      </typedElements>
      </result>
      </ns1:retrieveAllExtResponse>
      </soapenv:Body>
      </soapenv:Envelope>

      as we can see the return value is placed in the same namespace as the wrapper element representing the operation instead of being placed in 'http://customersvc.common.business.application.dotnetui'.

      I am creating a support call for this bug as well.

            tdiesler@redhat.com Thomas Diesler
            ilchen_jira Andrei Iltchenko (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: