Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-2827

JAXWS2.2: wsam:action attribute is not generated in <wsdl:input> and <wsdl:ouput> element when the SEI method is not annotated with @Action

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.2.8
    • 2.2.9
    • Tooling, WS-* Components
    • None

    Description

      When there is no @Action annotated to SEI method , the wsa action value in wsdl should be computed with :

      ---JAXWS 2.2 Spec ----
      "If wsdl:input[@wsam:Action] cannot be mapped from the above steps, then wsam:Action
      is generated using the metadata defaulting algorithm as if wsdl:input[@name] is not present in
      WSDL."

      ----WSA 1.1 WSDL Binding -------
      A default pattern is also defined for backwards compatibility with WSDL 1.1. In the absence of the wsaw:Action attribute, the following pattern is used to construct a default action for inputs and outputs. The general form of an action IRI is as follows:

      Example 4-6. Structure of defaulted wsa:Action IRI.

      [target namespace][delimiter][port type name][delimiter][input|output name]

      For fault messages, the general form of an action IRI is as follows:

      Example 4-7. Structure of default wsa:Action IRI for faults

      [target namespace][delimiter][port type name][delimiter][operation name][delimiter]Fault[delimiter][fault name]

      Example 4-9. Example WSDL without explicit wsa:Action values or explicit message names.

      <definitions targetNamespace="http://greath.example.com/2004/wsdl/resSvc" ...>
      ...
      <portType name="reservationInterface">
      <operation name="opCheckAvailability">
      <input message="tns:checkAvailability"/>
      <output message="tns:checkAvailabilityResponse"/>
      </operation>
      </portType>
      ...
      </definitions>

      [targetNamespace] = http://greath.example.com/2004/wsdl/resSvc

      [port type name] = reservationInterface

      According to the rules defined in Section 2.4.5 of WSDL 1.1, if the name attribute is absent for the input of a request response operation the default value is the name of the operation with "Request" appended.

      [input name] = opCheckAvailabilityRequest

      Likewise, the output defaults to the operation name with "Response" appended.

      [output name] = opCheckAvailabilityResponse

      Applying the pattern above with these values we have:

      input action = http://greath.example.com/2004/wsdl/resSvc/reservationInterface/opCheckAvailabilityRequest

      output action = http://greath.example.com/2004/wsdl/resSvc/reservationInterface/opCheckAvailabilityResponse

      We now generated the the name attribute value for <wsdl:input>, this will effect the action computation :
      if <[input name] = opCheckAvailability> , then input action = http://greath.example.com/2004/wsdl/resSvc/reservationInterface/opCheckAvailability.
      It's not http://greath.example.com/2004/wsdl/resSvc/reservationInterface/opCheckAvailabilityRequest anymore .

      Attachments

        Activity

          People

            ema Jim Ma
            ema Jim Ma
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: