[jbossws-dev] Re: Fault handling for XTS over JaxWS
Jason T. Greene
jason.greene at redhat.com
Fri Sep 28 14:46:22 EDT 2007
> On Sat, 2007-09-22 at 20:28 +0100, Andrew Dinn wrote:
>> Hi Thomas,
>>
>> I am aware of the existence of the JaxWS sample programs and how they
>> behave. I emailed you in order to elicit i) your interpretation of the
>> JaxWS 2.0 spec and ii) an explanation of why your latest JaxWS
>> implementation is behaving the way it does with *my* test program. Your
>> unit tests do indeed exercise the code which handles client and
>> server-side exceptions. However, they do not correspond to the case I am
>> faced with and do not resolve the question I am asking. Perhaps you
>> would allow me to explain once again what is at stake.
>>
>> I am currently trying to make the JBossTS XTS implementation operate
>> over your JBossWS native soap stack rather than employ Kevin Connor's
>> home-grown soap stack. I am hoping to be able to use JaxWS for this
>> purpose, generating the server and client code from the WSDL. I face an
>> interesting challenge because, for example, the WSCOOR 1.0 WSDL employs
>> several pairs of related *one-way* methods with no fault handling
>> defined i.e. the pairs of WSDL operations specify an <input/> message
>> but no <output/> and no <fault/> message. In order to interoperate with
>> other implementations I must conform to the WSDL defined by the WSCOOR
>> protocol. I am not at liberty to add my own fault messages to the WSDL.
>> Nor am I at liberty to add extra operations in order to notify faults.
>>
>> When I generate the interface and server stub code the corresponding web
>> methods are tagged with an @OneWay annotation. My question regarding the
>> spec is very simple: what is meant to happen if the implementation of
>> such a one way method throws a SoapFaultException, a ProtocolException
>> or some other Exception? Is the JaxWS implementation supposed to throw a
>> corresponding exception in the client context? The sections of the spec
>> I cited in my original post do not make the answer clear.
No, it can not, it violates the WS-I BP 1.0 which JAX-WS conforms to:
http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html#refinement16651160
"R2714 - For one-way operations, an INSTANCE MUST NOT return a HTTP
response that contains a SOAP envelope. Specifically, the HTTP response
entity-body must be empty."
That said, you can still present a different WSDL to a consumer than the
semantic one in operation. Just removing @OneWay should do the trick If
a XTS endpoint returns SOAP responses, then it really is a two-way endpoint.
-Jason
More information about the jbossws-dev
mailing list