[
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