Michael,
AFAIK, Axis passed JAX-RPC 1.1 TCK.
Umm...
IMHO, JAX-RPC 1.1 has some vague points and I think it is very difficult to organize TCK to check all the words and lines of spec.
Anyway, I'll keep up this issue. It'd be appreciated if test case jws and exception classes will be provided.
/Jongjin
From: "Michael Merz" <[EMAIL PROTECTED]><[email protected]>
Reply-To: "Beehive Developers" <[email protected]>
To: "Beehive Developers" <[email protected]>,
CC: <[EMAIL PROTECTED]> Subject: RE: Question on user exception handling on autogenerated clients Date: Wed, 15 Dec 2004 09:38:44 -0800
Thanks much for your response. Will Axis be JAXRPC 1.1 compliant with version 1.2?
Cheers,
-michael
-----Original Message----- From: Choi Jongjin [mailto:[EMAIL PROTECTED] Sent: Wednesday, December 15, 2004 9:31 AM To: [email protected]; [email protected] Cc: [EMAIL PROTECTED] Subject: RE: Question on user exception handling on autogenerated clients
Hi, Michael.
Handling service-specific exception is implemented in Axis.
In the generated code,
> java.lang.Object _resp = _call.invoke(new java.lang.Object[] >{new java.lang.Integer(in0)}); > > if (_resp instanceof java.rmi.RemoteException) { > throw (java.rmi.RemoteException)_resp; > } > else {
AFAIK, _call.invoke() returns RemoteException (AxisFault) for propagated soap fault (server-side exception).
But Axis's implementation lacks of JAX-RPC 1.1 compatibility. The generated exception classes are derived classes of AxisFault and require default constructor and setters which are not required in JAX-RPC 1.1.
I guess this causes some problem. If you use JAX-RPC 1.1 compliant exception classes (which have not default constructor and setter methods) in the client side, the deserialization of SOAP Fault message would fail.
I will add other comments in JIRA BEEHIVE-133.
/Jongjin
>From: "Michael Merz" <[EMAIL PROTECTED]> >Reply-To: "Beehive Developers" <[email protected]> >To: <[email protected]> >CC: <[EMAIL PROTECTED]> >Subject: Question on user exception handling on autogenerated clients >Date: Tue, 14 Dec 2004 10:12:20 -0800 > >Bcc: [email protected] > >I'm autogenerating my clients using the wsdl2java ant task. It's >working really well. > >One question regarding exception handling, though: When the server >throws a custom exception (subclass of java.lang.Exception), how does >the autogenerated client propagate the results in the response to the >caller? I had a look at the generated code and couldn't find any hooks >(see below). Is this not yet implemented? Thanks much. > >Cheers, > >-michael > > public int throwFooException(int in0) throws >java.rmi.RemoteException, >org.apache.beehive.wsm.test.rpclit.FooException { > if (super.cachedEndpoint == null) { > throw new org.apache.axis.NoEndPointException(); > } > org.apache.axis.client.Call _call = createCall(); > _call.setOperation(_operations[0]); > _call.setUseSOAPAction(true); > _call.setSOAPActionURI(""); > _call.setEncodingStyle(null); > _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, >Boolean.FALSE); > _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, >Boolean.FALSE); > >_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANT >S >); > _call.setOperationName(new >javax.xml.namespace.QName("http://rpclit.test.wsm.beehive.apache.org", >"throwFooException")); > > setRequestHeaders(_call); > setAttachments(_call); > java.lang.Object _resp = _call.invoke(new java.lang.Object[] >{new java.lang.Integer(in0)}); > > if (_resp instanceof java.rmi.RemoteException) { > throw (java.rmi.RemoteException)_resp; > } > else { > extractAttachments(_call); > try { > return ((java.lang.Integer) _resp).intValue(); > } catch (java.lang.Exception _exception) { > return ((java.lang.Integer) >org.apache.axis.utils.JavaUtils.convert(_resp, int.class)).intValue(); > } > } > } >
