Folks,
Perhaps there is a need to fix the spec in this regard. Saying nothing about exceptions/faults is
not good, since the implied looseness means that different runtime vendors could choose alternative
approaches with nasty effects for end user applications.
Any suggestions for what the spec SHOULD say about exception handling for the
JMS Binding?
Yours, Mike.
ant elder wrote:
But that spec extract says nothing about how to handle exceptions, the
key bit being line 227 which explicitly leaves this out, as does the
current OASIS versions of the spec. I did ask the spec guys about this
once a while back (not on any mailing list so I can't provide a link)
the answer was that as JMS doesn't have any standard definition of fault
messages so the SCA JMS spec doesn't define anything here either and how
to handle this is SCA runtime specific. (as a slight aside, line 227
already makes the JMS spec inconsistent with JAXWS as a return value is
unwrapped XML not wrapped, not sure our current wireformat is doing that
correctly). I'm missing the reason this could be considered a
"backdoor", its not like doing this would open up any vulnerabilities
that i can see so a backdoor to where?
Anyway, what to do for 1.4? We did support non-JAXWS exceptions in
previous releases so wouldn't it be better to continue doing that in 1.x
and perhaps if we really do want to change this then to do it only in 2.x?
...ant
On Wed, Jan 7, 2009 at 9:14 PM, Raymond Feng <[email protected]
<mailto:[email protected]>> wrote:
IMO, the wire format controls how business data and/or fault are
represented in the JMSMessage. The following is quoted from the OSOA
JMS binding spec 1.0:
217 1.5.2 Default Data Binding
218 The default data binding behavior maps between a JMSMessage and
the object(s) expected by
219 the component implementation. We encourage component
implementers to avoid exposure of
220 JMS APIs to component implementations, however in the case of an
existing implementation that
221 expects a JMSMessage, this provides for simple reuse of that as
an SCA component.
222 The message body is mapped to the parameters or return value of
the target operation as
223 follows:
224 . If there is a single parameter or return value that is a
JMSMessage, then the JMSMessage is
225 passed as is.
226 . Otherwise, the JMSMessage must be a JMS text message
containing XML.
227 . If there is a single parameter, or for the return value, the
JMS text XML payload is the XML
228 serialization of that parameter according to the WSDL schema for
the message.
229 . If there are multiple parameters, then they are encoded in XML
using the document wrapped
230 style, according to the WSDL schema for the message.
And the SCA java spec says:
1715 1.9. WSDL to Java and Java to WSDL
1716 The SCA Client and Implementation Model for Java applies the
WSDL to Java and Java to WSDL mapping
1717 rules as defined by the JAX-WS specification [4] for generating
remotable Java interfaces from WSDL
1718 portTypes and vice versa.
Based on this, my assumption is for text/xml wire format, we follow
the Java to WSDL mapping rules defined by JAXWS. It should also
apply to fault data. Passing exceptions as Objects in JMSMessage
seems to be a backdoor and it is not consistent with the wire
format. It requires both client and service side have the same
CheckedException class.
Thanks,
Raymond