Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.2.8
-
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 .