Hi,

Well I tell about problem that happened to me when evaluating
Aqualogic Service Bus regarding faults an errors.

Aqualogic let's you configure a Proxy for the WS implementation 
(the real logic). The Proxy configuration lets you retry calling
to the WS Implementation if there is a fault, you can call the
same end-point or iterate through a list of end-points.

Of course as you imagine, Aqualogic cannot distinguish between
what in EJB we call ApplicationException and SystemException, so
if for example your web-service returns a fault if the result
is not found or bad parameters in the service call, Aqualogic
will retry although it will always fail.

So I begin trying to figure out what should web-service must return
in case of ApplicationException ( bad parameters, object not found,
object already persisted, etc....) it seems that Object Wrapper is
the only solution ( :-( ).

I really don't know if all JBI implementations will work this way, but
if they do we (Hate Wrappers Fanatics) are dead.

I suppose we must read w3c/oasis/WS-I specifications to see what
they say, and attach(?) to their recommendation.

Hope this helps
tonio


On Wed, 2006-11-22 at 01:00 -0800, Kalle Korhonen wrote:
> Well, instead you could return a PersonResponse wrapper object that
> would have your Person as a property if the operation succeed. If it
> didn't, you return a null in person property and an error code in an
> errorcode property. This makes some sense, because you can then
> reserve the faults for generic failures, such as your "database not
> available" or "service initialization failure" cases which are likely
> to affect all of you web service operations. Even in pure Java
> client/server, using fault handlers for these generic error types
> makes IMHO more sense than trying to use faults for each specific
> error case for a particular operation. 
> 
> Kalle
> 
> On 11/21/06, Bill Burton <[EMAIL PROTECTED]> wrote:
>         Hello,
>         
>         I've written a simple service that provides a way to lookup
>         Person objects by id or email address. The Person object just
>         has some name and address information. When a record is not
>         found, I'm catching the runtime exception from the Spring JDBC
>         API, and rethrowing a checked exception which causes XFire to
>         generate a SOAP fault as follows: 
>         
>         <soap:Envelope
>         xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
>         xmlns:xsd=" http://www.w3.org/2001/XMLSchema";
>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>            <soap:Body> 
>               <soap:Fault>
>                  <faultcode>soap:Server</faultcode> 
>                  <faultstring>No record with id 000123005 was found by
>         the findById method!</faultstring>
>                  <detail>
>                     <RecordNotFoundException
>         xmlns="http://webservice.teds.pms"/>
>                  </detail>
>               </soap:Fault>
>            </soap:Body>
>         </soap:Envelope>
>         
>         Right now, I'm just using the default generated bindings in my
>         Spring applicationContext.xml
>         
>             <bean name="PersonService"
>         class="org.codehaus.xfire.spring.ServiceBean">
>                 <property name="serviceBean"
>         ref="PersonServiceImpl"/> 
>                 <property name="serviceClass"
>         value="pms.teds.webservice.PersonService"/>
>             </bean>
>         
>         but plan to switch to Aegis to have better control over the
>         mapping for other reasons. 
>         
>         However, the person who's writing a C# .NET client to handle
>         this complains that it's hard to check for a fault whereas if
>         I were to return an error code and error text in my Person
>         object, he would have no problem.  As the Person object is
>         supposed to be a reflection of the database columns, I really
>         don't want to change it in this manner. 
>         
>         What are the best practices for generating an error such as
>         "record not found" or "database not available" cases?
>         
>         Thanks for any assistance,
>         -Bill
>         -- 
>         Bill Burton < bburton ayht mail daht com>
>         
> 


---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to