Ajay, Thanks for the response.
So maybe I'm not understanding the purpose for describing Soap faults in a WSDL file. I was under the impression that a soap implementation (regardless of language/programming environment) would create the appropriate "exception class" (or object, or whatever the case may be for that environment) for all soap faults defined in the WSDL, so that a client developer could "catch" a specific fault (as opposed to, for example, a .NET client having to catch a general System.Exception, then interrogate it further to find out exactly what went wrong). All I'm trying to do is simply describe the custom exceptions my service throws in my WSDL, and then test against various client environments to insure my WSDL describes the faults correctly. But how do I test this against non-Java clients? Or even Java clients for that matter? Take the Axis samples/faults example. In VB .NET, after retrieving the WSDL, does the client have any knowledge at all about NoSuchEmployeeFault? It didn't look like it when I tried it. And in BEA WebLogic (which generates Java client code), the NoSuchEmployeeFault class it generated did not subclass from Throwable, even though NoSuchEmployeeFault is described in wsdl:fault elements in the WSDL. Am I expecting too much here? Is there a better way for me to test that my custom faults are described correctly in my WSDL? Is there anybody who can set this lost soul straight? Regards. Steve Pannier > Steve, > > I have experimented a bit with SOAP faults on .NET side and server side > exceptions on Axis side. As far as my understanding goes: > - You can access the SOAP fault from .NET client. However, that's "SOAP fault" > view - not the "Exception" view of the server side problem. I have not seen > SOAP faults being converted to exceptions on the .NET client side. In our > prototype, we are just accessing SOAP fault code, string etc. We can convert > that to appropriate exception but that's application's job not web services > infrastructure's job (in this case .NET) > - I am not sure that a "custom" exception can be caught by non-Java (even > non-Axis clients implemented in Java) because there is no standard (and hence > interoperable) way of communicating that this SOAP fault maps to this exception > so that client side web services infrastructure can instantiate the exception. > In fact, you might consume a web service from a programming language which does > not have any concept of exception. In Axis server-client scenario > interoperability is not an issue. Axis client knows where in the SOAP fault to > look for exception mapping information and as long as client has the exception > class in the classpath it can instantiate the exception but achieving the same > thing in a language independent way is difficult and I don't think web services > standards address this. Someone please correct me if my understanding is not > quite right .. > > Ajay > > > > > "Steve Pannier" <[EMAIL PROTECTED]> > > 09/24/2003 02:54 AM > > Please respond to > [EMAIL PROTECTED] > > > > To > [EMAIL PROTECTED] > cc > > Subject > Soap Fault question > > > > > > > > > Axis 1.1 > > I'm trying to get my web service to throw a > custom exception subclassed from RemoteException. > So to start off I looked at the code under > samples/faults. I deployed the service, ran the > supplied Axis client, everything looked good. (I > had to 1st put a try/catch around the call.invoke > in the client to see if catching the > NoSuchEmployeeFault exception really works). > > Now, my goal is to be able to support many different > types of clients (.NET, JWSDP, BEA WebLogic, etc). > So I tried JWSDP: After getting the Employee.wsdl > file from Axis, I generated the client code. But > it wouldn't compile, because the "cause" property > in the generated exception class is defined as Object > instead of Throwable. (Axis did inform me that "The > class java.lang.Throwable is defined in a java or > javax package and cannot be converted into an xml > schema type. An xml schema anyType will be used to > define this class in the wsdl file", so I knew > something was amiss.) > > OK. So I moved on to VB .NET. I retrieved the WSDL > and created my client code. I was able to catch > System.Exception, but not a NoSuchEmployeeFault > exception. .NET did not create an object to > represent the NoSuchEmployeeFault exception. > > I tried BEA WebLogic also, but it didn't work there > either. The NoSuchEmployeeFault class it created > does not subclass from Throwable, so it couldn't be > used in a "catch" clause. > > So my questions: > > - Has anyone else got the samples/faults service > code to work correctly against a non-Axis client > environment? > > - Am I correct in assuming that my custom exception > can be "caught" by any client, even if non-Java > (provided my WSDL describes it correctly)? > > - In order to have Axis return a Soap Fault, is it a > requirement to add *all* the configuration information > shown in the samples/faults deploy.wsdd file to my > WSDD deployment file? (i.e. Do I need to define all > operation elements, even for the methods that don't > return a Soap fault?) > > Any examples would be greatly appreciated. > > Regards. > > Steve Pannier > > > >