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(); > } > } > } >