Axis2
  1. Axis2
  2. AXIS2-3724

WSDL complex type elements do not comply to JAXB Java bean

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: nightly
    • Fix Version/s: None
    • Component/s: wsdl
    • Labels:
    • Environment:
      Win XP Pro, JDK6_04, Tomcat 5.5.26, JAXB 2.1.6

      Description

      I created a web service which contains one method. It has one parameter of type RetrieveConfigurationDataRequest and returns RetrieveConfigurationDataResponse.

      Focusing on RetrieveConfigurationDataRequest , the java bean was generated by JAXB 2.1.6. Here are the variables from the java bean below

      @XmlElement(required = true)
      protected String echoData;
      @XmlElement(required = true)
      protected String identifierType;
      @XmlElement(required = true)
      protected String identifier;
      @XmlElement(required = true)
      protected String revision;
      protected String vintage;
      protected Long dataBlockSize;
      protected Long dataBlockPosition;
      @XmlElement(required = true)
      protected DataEncodingType dataEncodingType;

      The order of their "getters" and "setters" appear in the same order as the variables.

      The WSDL that gets generated contains this complexType which lools like this.

      <xs:complexType name="RetrieveConfigurationDataRequest">
      <xs:complexContent>
      <xs:extension base="ns0:JaxbInternalMsg">
      <xs:sequence>
      <xs:element minOccurs="0" name="dataBlockPosition" nillable="true" type="xs:long"/>
      <xs:element minOccurs="0" name="dataBlockSize" nillable="true" type="xs:long"/>
      <xs:element minOccurs="0" name="dataEncodingType" nillable="true" type="ax21:DataEncodingType"/>
      <xs:element minOccurs="0" name="echoData" nillable="true" type="xs:string"/>
      <xs:element minOccurs="0" name="identifier" nillable="true" type="xs:string"/>
      <xs:element minOccurs="0" name="identifierType" nillable="true" type="xs:string"/>
      <xs:element minOccurs="0" name="revision" nillable="true" type="xs:string"/>
      <xs:element minOccurs="0" name="vintage" nillable="true" type="xs:string"/>
      </xs:sequence>
      </xs:extension>
      </xs:complexContent>
      </xs:complexType>

      I find that the WSDL does not comply with the JAXB 2.1.6 generated java bean in the following ways:

      1) The elements are alphabetically sorted and do not appear in the same order as in the java bean.
      2) Look at the "identifier" element and you'll see that it has a minOccurs of 0. This is a required field by the java bean and so should not have a minOccurs modifier in there.
      3) I also noticed that all the fields are set to nullable. I don't know what the criteria is for this, but I assume it is because these are referring to java objects and not primitives. I also think that if an object is required, that it should not be nullable.

      At the end of the day, the WSDL must take JAXB and its annotations into account and reflect the web service and its java beans 100% and it is not doing that.

      I know there is a workaround by inserting a modified wsdl into the aar file, but I don't want to have to do that since AXIS2 was designed to generate the WSDL itself when issuing ?WSDL in a browser.

        Activity

        Glen Verran created issue -
        Hide
        Davanum Srinivas added a comment -

        You really need to use the JAXWS 2.1 support in latest nightly.

        – dims

        Show
        Davanum Srinivas added a comment - You really need to use the JAXWS 2.1 support in latest nightly. – dims
        Hide
        Glen Verran added a comment -

        dims,

        How can this be achieved?

        FYI, I used the nighly build of the 9th of April. i tested this yesterday.

        Show
        Glen Verran added a comment - dims, How can this be achieved? FYI, I used the nighly build of the 9th of April. i tested this yesterday.
        Hide
        Davanum Srinivas added a comment -

        See jaxws-addressbook sample specifically the readme

        Show
        Davanum Srinivas added a comment - See jaxws-addressbook sample specifically the readme
        Hide
        Glen Verran added a comment -

        It seems that using this Dispatcher method is a workaround.

        Are there plans in the pipeline that Axis2 will fully support and comply with JAXB2.x java beans natively without having to write a dispatcher?

        Show
        Glen Verran added a comment - It seems that using this Dispatcher method is a workaround. Are there plans in the pipeline that Axis2 will fully support and comply with JAXB2.x java beans natively without having to write a dispatcher?
        Hide
        nadir amra added a comment -

        So is this going to be fixed anytime soon? Or can someone describe the fix and point me to the files so I can take a look and possibly fix?

        Show
        nadir amra added a comment - So is this going to be fixed anytime soon? Or can someone describe the fix and point me to the files so I can take a look and possibly fix?
        Samisa Abeysinghe made changes -
        Field Original Value New Value
        Fix Version/s nightly [ 12312081 ]
        Sagara Gunathunga made changes -
        Labels jaxb

          People

          • Assignee:
            Unassigned
            Reporter:
            Glen Verran
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:

              Development