See section 5.4.1 of the JAX-RPC specification (which refers to
RPC/encoded):
"A JAX-RPC value type is mapped to an
xsd:complexType
with either the
xsd:all
or
the xsd:sequence
compositor. Please notice that the
XML Schema specification places
several restrictions on the contents of a particle that uses the
xsd:all
compositor."
The restrictions associated with using the
xsd:all
compositor is that you may not have
repeating elements within the particle (no arrays).
If you're using serialized Document style, then the
xsd:sequence compositor is
required. See Section 6.41. of the JAX-RPC spec:
"When mapping
document
style operations, in addition to the
regular mapping, JAX-RPC
implementations are required to support the so-called “wrapper” style, in
which the
logical parameters of an operation are wrapped inside a
xsd:sequence
element named
after the operation.
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.
In this case, implementations must be able to discard the wrapper
elements and treat
their children as the actual parameters of the operation."
You have a few choices:
- You can use non-serialized Document style -- transform the SOAP
contents into a DOM and process it yourself.
- Insert a handler that validates the message, and if it finds the
elements to be mis-sequenced, it can transform the message into the
proper sequence.
- Fix your client so that it generates messages that conform to your
schema.
Anne
At 09:21 PM 4/7/2004, you wrote:
HI,
This might be a well-known, but i have no clue what it is for
now.
I have already set up a web serviec by using jwsdp ver1.3, whose wsdl
always containing key word "sequence",like:
<sequence>
<element name="getProductHeader"
type="tns:GetProductHeader"/>
<element name="sessionID"
type="string"/>
</sequence>
If i strictly follow the defined sequence to submit soap document
to this web service, it works perfectly OK.
But our client is sending up data, not following the sequence, Igot
deserialization error, complianing about the sequence. How can i improve
the process of webservice creation on the server side, and get this
resolved? I guess it should be an extra option
to relieve the strict sequence chec as using wscomiple to create model.gz
file.
THanks A lot for your help.
Xue-Chun.
_______________________________________________
Join Excite! -
http://www.excite.com
The most personalized portal on the Web!
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@jax-rpc.dev.java.net
For additional commands, e-mail:
users-help@jax-rpc.dev.java.net
~~~~~~~~~~~~~~~~~~
Anne Thomas Manes
VP & Research Director
Burton Group
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@jax-rpc.dev.java.net
For additional commands, e-mail: users-help@jax-rpc.dev.java.net