Anyone else knowledgeable in Soap Faults have any comments on this? Steve
> Steve, > > I am not knowledgeable enough to comment on whether your expectations are too > high or not. However, it all boils down to WSDL to a particular language > binding and how that binding maps SOAP faults defined in WSDL. I am not sure > whether there exists a standard language binding for each language (which may > or may not have a concept of exception e.g. a procedural language like C) that > addresses SOAP fault to error handling strategy native to that programming > language. > Hope someone on the list can enlighten us ... > Thanks, > > Ajay > > > > > > "Steve Pannier" <[EMAIL PROTECTED]> > > 09/24/2003 09:58 PM > > Please respond to > [EMAIL PROTECTED] > > > > To > [EMAIL PROTECTED] > cc > > Subject > Re: Soap Fault question > > > > > > > > > > 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 > > > > > > > > > >
