[jbossws-issues] [JBoss JIRA] Commented: (JBWS-1125) Support doc/lit with empty soap body elements
Jason T. Greene (JIRA)
jira-events at jboss.com
Mon Nov 6 10:00:43 EST 2006
[ http://jira.jboss.com/jira/browse/JBWS-1125?page=comments#action_12346309 ]
Jason T. Greene commented on JBWS-1125:
---------------------------------------
The issue is that the wrapped convention requires that all parameters be wrapped with a single element that is a complex type whose children are a sequence of elements. So a noarg method in the wrapped convention is not an empty message, but rather an empty wrapper element. This is represented in WSDL as a message with 1 part that references an element that has a complex type with an empty sequence. In short, a wrapped message by definition requires a wrapping element.
Although there is no formal WS spec on this, the behavior I describe is consitent with .NET and with the JAX-RPC[1] and JAX-WS[2] specs. Also, its easier to implement because their is no ambiguity associated with a noarg method.
[1] JAX-RPC 1.1 Section 6.4.1
In order to qualify as using the "wrapper" style, an operation must fulfill the following
conditions:
* its input and output messages (if present) must contain exactly one part;
* such a part must refer to an element named after the operation;
* such an element (a wrapper) must be of a complex type defined using the
xsd:sequence compositor and containing only elements declarations.
[2] JAX-WS 2.0 Section 2.3.1.2
2.3.1.2 Wrapper Style
A WSDL operation qualifies for wrapper style mapping only if the following criteria are met:
(i) The operation's input and output messages (if present) each contain only a single part
(ii) The input message part refers to a global element declaration whose localname is equal to the operation
name
(iii) The output message part refers to a global element declaration
(iv) The elements referred to by the input and output message parts (henceforth referred to as wrapper
elements) are both complex types defined using the xsd:sequence compositor
(v) The wrapper elements only contain child elements, they must not contain other structures such as
wildcards (element or attribute), xsd:choice, substitution groups (element references are not permitted)
or attributes; furthermore, they must not be nillable.
} Conformance (Default mapping mode): Operations that do not meet the criteria aboveMUST be mapped
using non-wrapper style.
> Support doc/lit with empty soap body elements
> ---------------------------------------------
>
> Key: JBWS-1125
> URL: http://jira.jboss.com/jira/browse/JBWS-1125
> Project: JBoss Web Services
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: jaxrpc
> Affects Versions: jbossws-1.0.2
> Reporter: Darran Lofthouse
> Assigned To: Jason T. Greene
> Priority: Minor
> Fix For: jbossws-1.0.5
>
>
> There is some conflicting information in the different specifications regarding how to handle a method in an endpoint interface that does not take any parameters, at the moment we only support this type of method by using wrapped style.
> From the BasicProfile: -
> [Section 5.3.1]
> ....
> Use of wsdl:message elements with zero parts is permitted in Document styles to permit operations that can send or receive messages with empty soap:Bodys.
> From JSR-181
> JSR-181 which states:
> - If the operation is marked @Oneway, it MUST have a void return value, a
> single non-header parameter marked as IN, and zero or more header
> parameters.
> - If the operation is not marked @Oneway, it may have one of the following
> forms:
> o A non-header parameter marked as IN, a non-header parameter marked
> as OUT, a void return value, and zero or more header parameters.
> o A single non-header parameters marked as IN_OUT, a void return
> value, and zero or more header parameters.
> o A single non-header parameter marked as IN, non-void return value
> and zero or more header parameters.
> This clearly requires there to be at least one parameter for a bare doc/lit message.
> From JAX-WS (Although not the current spec we implement does show how this has been clarified)
> In order to qualify for use of bare mapping mode a Java method must
> fulfill all of the following criteria:
> 1. It must have at most one in or in/out non-header parameter.
> 2. If it has a return type other than void it must have no in/out or
> out non-header parameters.
> 3. If it has a return type of void it must have at most one in/out or
> out non-header parameter.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jbossws-issues
mailing list