You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Jarmo Doc <ja...@hotmail.com> on 2005/08/31 17:38:39 UTC

Explicit response required from WS methods?

Let's say that I have a WS method like so:

  deleteEmployee(int empid) throws SOAPException
  {
  }

Is it sensible for this method to have a void return type or should it 
always return something, for example the empid just deleted (for client 
correlation purposes, amongst other things)?

I ask because it's not clear to me what's going on under the covers.  I 
could imagine, for example, that void would be OK because any kind of 
problem explicitly detected by the web service method would throw a 
SOAPException and any kind of network issue (e.g. request not even making it 
to the web service) or a failure of the service to execute the method might 
cause the underlying infrastructure itself to throw a SOAPException 
(because, for example, HTTP 200 OK was never seen by the client).  So the 
absence of a SOAPException might reasonably imply success and hence no 
return type was required.

Thanks.

_________________________________________________________________
Don’t just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/


Re: Explicit response required from WS methods?

Posted by Rogério Luz <ro...@gmail.com>.
Sorry Jarmo, I was supposing your client would expect a true/false response.

On 8/31/05, Jarmo Doc <ja...@hotmail.com> wrote:
> 
> The implementation would probably be something like this:
> 
> void deleteEmployee(int empid) throws SOAPException
> {
> try
> {
> // delete employee here
> }
> catch (Exception exx)
> {
> throw new SOAPException(exc);
> }
> }
> 
> 
> >From: Rogério Luz <ro...@gmail.com>
> >Reply-To: axis-user@ws.apache.org
> >To: axis-user@ws.apache.org
> >Subject: Re: Explicit response required from WS methods?
> >Date: Wed, 31 Aug 2005 12:54:09 -0300
> >
> >Depends on what service.deleteEmployee() method do. If you have a 
> try/catch
> >there and an Exception is thrown you'll never know if your delete really
> >happaned. Certainly if line 2 executes, line 1 was executed or at least 
> was
> >called.
> >
> >On 8/31/05, Jarmo Doc <ja...@hotmail.com> wrote:
> > >
> > > OK, but is it actually required? If my client executes the following:
> > >
> > > 1. service.deleteEmployee(5);
> > > 2. System.out.println("deleted empid 5");
> > >
> > > Is execution of line 2 a guarantee that line 1 succeeded?
> > >
> > >
> > > >From: Rogério Luz <ro...@gmail.com>
> > > >Reply-To: axis-user@ws.apache.org
> > > >To: axis-user@ws.apache.org
> > > >Subject: Re: Explicit response required from WS methods?
> > > >Date: Wed, 31 Aug 2005 12:43:41 -0300
> > > >
> > > >I think it would be a good practice return at least a boolean to 
> ensure
> > > >your
> > > >deleteEmployee method really deleted an employee.
> > > >
> > > >On 8/31/05, Jarmo Doc <ja...@hotmail.com> wrote:
> > > > >
> > > > > Let's say that I have a WS method like so:
> > > > >
> > > > > deleteEmployee(int empid) throws SOAPException
> > > > > {
> > > > > }
> > > > >
> > > > > Is it sensible for this method to have a void return type or 
> should
> >it
> > > > > always return something, for example the empid just deleted (for
> > > client
> > > > > correlation purposes, amongst other things)?
> > > > >
> > > > > I ask because it's not clear to me what's going on under the 
> covers.
> >I
> > > > > could imagine, for example, that void would be OK because any kind
> >of
> > > > > problem explicitly detected by the web service method would throw 
> a
> > > > > SOAPException and any kind of network issue (e.g. request not even
> > > >making
> > > > > it
> > > > > to the web service) or a failure of the service to execute the
> >method
> > > > > might
> > > > > cause the underlying infrastructure itself to throw a 
> SOAPException
> > > > > (because, for example, HTTP 200 OK was never seen by the client). 
> So
> > > the
> > > > > absence of a SOAPException might reasonably imply success and 
> hence
> >no
> > > > > return type was required.
> > > > >
> > > > > Thanks.
> > > > >
> > > > > _________________________________________________________________
> > > > > Don't just search. Find. Check out the new MSN Search!
> > > > > http://search.msn.click-url.com/go/onm00200636ave/direct/01/
> > > > >
> > > > >
> > > >
> > > >
> > > >--
> > > >[]´s
> > > >
> > > >Rogério Luz
> > >
> > > _________________________________________________________________
> > > Express yourself instantly with MSN Messenger! Download today - it's
> >FREE!
> > > http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
> > >
> > >
> >
> >
> >--
> >[]´s
> >
> >Rogério Luz
> 
> _________________________________________________________________
> Don't just search. Find. Check out the new MSN Search!
> http://search.msn.click-url.com/go/onm00200636ave/direct/01/
> 
> 


-- 
[]´s

Rogério Luz

Re: Explicit response required from WS methods?

Posted by Jarmo Doc <ja...@hotmail.com>.
The implementation would probably be something like this:

void deleteEmployee(int empid) throws SOAPException
{
  try
  {
    // delete employee here
  }
  catch (Exception exx)
  {
    throw new SOAPException(exc);
  }
}


>From: Rogério Luz <ro...@gmail.com>
>Reply-To: axis-user@ws.apache.org
>To: axis-user@ws.apache.org
>Subject: Re: Explicit response required from WS methods?
>Date: Wed, 31 Aug 2005 12:54:09 -0300
>
>Depends on what service.deleteEmployee() method do. If you have a try/catch
>there and an Exception is thrown you'll never know if your delete really
>happaned. Certainly if line 2 executes, line 1 was executed or at least was
>called.
>
>On 8/31/05, Jarmo Doc <ja...@hotmail.com> wrote:
> >
> > OK, but is it actually required? If my client executes the following:
> >
> > 1. service.deleteEmployee(5);
> > 2. System.out.println("deleted empid 5");
> >
> > Is execution of line 2 a guarantee that line 1 succeeded?
> >
> >
> > >From: Rogério Luz <ro...@gmail.com>
> > >Reply-To: axis-user@ws.apache.org
> > >To: axis-user@ws.apache.org
> > >Subject: Re: Explicit response required from WS methods?
> > >Date: Wed, 31 Aug 2005 12:43:41 -0300
> > >
> > >I think it would be a good practice return at least a boolean to ensure
> > >your
> > >deleteEmployee method really deleted an employee.
> > >
> > >On 8/31/05, Jarmo Doc <ja...@hotmail.com> wrote:
> > > >
> > > > Let's say that I have a WS method like so:
> > > >
> > > > deleteEmployee(int empid) throws SOAPException
> > > > {
> > > > }
> > > >
> > > > Is it sensible for this method to have a void return type or should 
>it
> > > > always return something, for example the empid just deleted (for
> > client
> > > > correlation purposes, amongst other things)?
> > > >
> > > > I ask because it's not clear to me what's going on under the covers. 
>I
> > > > could imagine, for example, that void would be OK because any kind 
>of
> > > > problem explicitly detected by the web service method would throw a
> > > > SOAPException and any kind of network issue (e.g. request not even
> > >making
> > > > it
> > > > to the web service) or a failure of the service to execute the 
>method
> > > > might
> > > > cause the underlying infrastructure itself to throw a SOAPException
> > > > (because, for example, HTTP 200 OK was never seen by the client). So
> > the
> > > > absence of a SOAPException might reasonably imply success and hence 
>no
> > > > return type was required.
> > > >
> > > > Thanks.
> > > >
> > > > _________________________________________________________________
> > > > Don't just search. Find. Check out the new MSN Search!
> > > > http://search.msn.click-url.com/go/onm00200636ave/direct/01/
> > > >
> > > >
> > >
> > >
> > >--
> > >[]´s
> > >
> > >Rogério Luz
> >
> > _________________________________________________________________
> > Express yourself instantly with MSN Messenger! Download today - it's 
>FREE!
> > http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
> >
> >
>
>
>--
>[]´s
>
>Rogério Luz

_________________________________________________________________
Don’t just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/


Re: Explicit response required from WS methods?

Posted by Rogério Luz <ro...@gmail.com>.
Depends on what service.deleteEmployee() method do. If you have a try/catch 
there and an Exception is thrown you'll never know if your delete really 
happaned. Certainly if line 2 executes, line 1 was executed or at least was 
called.

On 8/31/05, Jarmo Doc <ja...@hotmail.com> wrote:
> 
> OK, but is it actually required? If my client executes the following:
> 
> 1. service.deleteEmployee(5);
> 2. System.out.println("deleted empid 5");
> 
> Is execution of line 2 a guarantee that line 1 succeeded?
> 
> 
> >From: Rogério Luz <ro...@gmail.com>
> >Reply-To: axis-user@ws.apache.org
> >To: axis-user@ws.apache.org
> >Subject: Re: Explicit response required from WS methods?
> >Date: Wed, 31 Aug 2005 12:43:41 -0300
> >
> >I think it would be a good practice return at least a boolean to ensure
> >your
> >deleteEmployee method really deleted an employee.
> >
> >On 8/31/05, Jarmo Doc <ja...@hotmail.com> wrote:
> > >
> > > Let's say that I have a WS method like so:
> > >
> > > deleteEmployee(int empid) throws SOAPException
> > > {
> > > }
> > >
> > > Is it sensible for this method to have a void return type or should it
> > > always return something, for example the empid just deleted (for 
> client
> > > correlation purposes, amongst other things)?
> > >
> > > I ask because it's not clear to me what's going on under the covers. I
> > > could imagine, for example, that void would be OK because any kind of
> > > problem explicitly detected by the web service method would throw a
> > > SOAPException and any kind of network issue (e.g. request not even
> >making
> > > it
> > > to the web service) or a failure of the service to execute the method
> > > might
> > > cause the underlying infrastructure itself to throw a SOAPException
> > > (because, for example, HTTP 200 OK was never seen by the client). So 
> the
> > > absence of a SOAPException might reasonably imply success and hence no
> > > return type was required.
> > >
> > > Thanks.
> > >
> > > _________________________________________________________________
> > > Don't just search. Find. Check out the new MSN Search!
> > > http://search.msn.click-url.com/go/onm00200636ave/direct/01/
> > >
> > >
> >
> >
> >--
> >[]´s
> >
> >Rogério Luz
> 
> _________________________________________________________________
> Express yourself instantly with MSN Messenger! Download today - it's FREE!
> http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
> 
> 


-- 
[]´s

Rogério Luz

Re: Explicit response required from WS methods?

Posted by Jarmo Doc <ja...@hotmail.com>.
OK, but is it actually required?  If my client executes the following:

1. service.deleteEmployee(5);
2. System.out.println("deleted empid 5");

Is execution of line 2 a guarantee that line 1 succeeded?


>From: Rogério Luz <ro...@gmail.com>
>Reply-To: axis-user@ws.apache.org
>To: axis-user@ws.apache.org
>Subject: Re: Explicit response required from WS methods?
>Date: Wed, 31 Aug 2005 12:43:41 -0300
>
>I think it would be a good practice return at least a boolean to ensure 
>your
>deleteEmployee method really deleted an employee.
>
>On 8/31/05, Jarmo Doc <ja...@hotmail.com> wrote:
> >
> > Let's say that I have a WS method like so:
> >
> > deleteEmployee(int empid) throws SOAPException
> > {
> > }
> >
> > Is it sensible for this method to have a void return type or should it
> > always return something, for example the empid just deleted (for client
> > correlation purposes, amongst other things)?
> >
> > I ask because it's not clear to me what's going on under the covers. I
> > could imagine, for example, that void would be OK because any kind of
> > problem explicitly detected by the web service method would throw a
> > SOAPException and any kind of network issue (e.g. request not even 
>making
> > it
> > to the web service) or a failure of the service to execute the method
> > might
> > cause the underlying infrastructure itself to throw a SOAPException
> > (because, for example, HTTP 200 OK was never seen by the client). So the
> > absence of a SOAPException might reasonably imply success and hence no
> > return type was required.
> >
> > Thanks.
> >
> > _________________________________________________________________
> > Don't just search. Find. Check out the new MSN Search!
> > http://search.msn.click-url.com/go/onm00200636ave/direct/01/
> >
> >
>
>
>--
>[]´s
>
>Rogério Luz

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE! 
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/


Re: Explicit response required from WS methods?

Posted by Rogério Luz <ro...@gmail.com>.
I think it would be a good practice return at least a boolean to ensure your 
deleteEmployee method really deleted an employee.

On 8/31/05, Jarmo Doc <ja...@hotmail.com> wrote:
> 
> Let's say that I have a WS method like so:
> 
> deleteEmployee(int empid) throws SOAPException
> {
> }
> 
> Is it sensible for this method to have a void return type or should it
> always return something, for example the empid just deleted (for client
> correlation purposes, amongst other things)?
> 
> I ask because it's not clear to me what's going on under the covers. I
> could imagine, for example, that void would be OK because any kind of
> problem explicitly detected by the web service method would throw a
> SOAPException and any kind of network issue (e.g. request not even making 
> it
> to the web service) or a failure of the service to execute the method 
> might
> cause the underlying infrastructure itself to throw a SOAPException
> (because, for example, HTTP 200 OK was never seen by the client). So the
> absence of a SOAPException might reasonably imply success and hence no
> return type was required.
> 
> Thanks.
> 
> _________________________________________________________________
> Don't just search. Find. Check out the new MSN Search!
> http://search.msn.click-url.com/go/onm00200636ave/direct/01/
> 
> 


-- 
[]´s

Rogério Luz

Re: Explicit response required from WS methods?

Posted by Jarmo Doc <ja...@hotmail.com>.
Nice answer, thanks Guy.  I will have need for some asynchronous requests** 
but this particular request (deleteEmployee) would definitely be 
synchronous.

** and I'm asuming that I can mix and match sycn and async in the same 
service, though I haven't yet worked out how to indicate that to java2wsdl, 
and suspect that I'll have to manually edit the generated wsdl.


>From: Guy Rixon <gt...@ast.cam.ac.uk>
>Reply-To: axis-user@ws.apache.org
>To: axis-user@ws.apache.org
>Subject: Re: Explicit response required from WS methods?
>Date: Wed, 31 Aug 2005 17:15:26 +0100 (BST)
>
>Hi,
>
>void is fine, and saves a little parsing on the return. If it works, then 
>the
>service returns an HTTP 200 with a SOAP body that doesn't need 
>deserializing;
>the client stub returns quietly. If it goes wrong, then the client stub 
>chucks
>an Exception in which the detail states the HTTP status-code.
>
>Architecturally, there's a deeper point. Suppose that your service could
>return an HTTP 200 with no body; i.e. suppose you could implement a one-way
>operation which Axis 2 supports and Axis 1 doesn't. Would this be a good
>equivalent to a method returning void? Yes, in the sense that less XML
>handling would be involved. No, in the sense that the 200 might come back
>before the service had processed the request; i.e. the work would be
>asynchronous. An asynchronous request to a service is not a good match to a
>method returning void.
>
>On Wed, 31 Aug 2005, Jarmo Doc wrote:
>
> > Let's say that I have a WS method like so:
> >
> >   deleteEmployee(int empid) throws SOAPException
> >   {
> >   }
> >
> > Is it sensible for this method to have a void return type or should it
> > always return something, for example the empid just deleted (for client
> > correlation purposes, amongst other things)?
> >
> > I ask because it's not clear to me what's going on under the covers.  I
> > could imagine, for example, that void would be OK because any kind of
> > problem explicitly detected by the web service method would throw a
> > SOAPException and any kind of network issue (e.g. request not even 
>making it
> > to the web service) or a failure of the service to execute the method 
>might
> > cause the underlying infrastructure itself to throw a SOAPException
> > (because, for example, HTTP 200 OK was never seen by the client).  So 
>the
> > absence of a SOAPException might reasonably imply success and hence no
> > return type was required.
> >
> > Thanks.
> >
> > _________________________________________________________________
> > Don’t just search. Find. Check out the new MSN Search!
> > http://search.msn.click-url.com/go/onm00200636ave/direct/01/
> >
>
>Guy Rixon 				        gtr@ast.cam.ac.uk
>Institute of Astronomy   	                Tel: +44-1223-337542
>Madingley Road, Cambridge, UK, CB3 0HA		Fax: +44-1223-337523

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE! 
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/


Re: Explicit response required from WS methods?

Posted by Guy Rixon <gt...@ast.cam.ac.uk>.
Hi,

void is fine, and saves a little parsing on the return. If it works, then the
service returns an HTTP 200 with a SOAP body that doesn't need deserializing;
the client stub returns quietly. If it goes wrong, then the client stub chucks
an Exception in which the detail states the HTTP status-code.

Architecturally, there's a deeper point. Suppose that your service could
return an HTTP 200 with no body; i.e. suppose you could implement a one-way
operation which Axis 2 supports and Axis 1 doesn't. Would this be a good
equivalent to a method returning void? Yes, in the sense that less XML
handling would be involved. No, in the sense that the 200 might come back
before the service had processed the request; i.e. the work would be
asynchronous. An asynchronous request to a service is not a good match to a
method returning void.

On Wed, 31 Aug 2005, Jarmo Doc wrote:

> Let's say that I have a WS method like so:
>
>   deleteEmployee(int empid) throws SOAPException
>   {
>   }
>
> Is it sensible for this method to have a void return type or should it
> always return something, for example the empid just deleted (for client
> correlation purposes, amongst other things)?
>
> I ask because it's not clear to me what's going on under the covers.  I
> could imagine, for example, that void would be OK because any kind of
> problem explicitly detected by the web service method would throw a
> SOAPException and any kind of network issue (e.g. request not even making it
> to the web service) or a failure of the service to execute the method might
> cause the underlying infrastructure itself to throw a SOAPException
> (because, for example, HTTP 200 OK was never seen by the client).  So the
> absence of a SOAPException might reasonably imply success and hence no
> return type was required.
>
> Thanks.
>
> _________________________________________________________________
> Don�t just search. Find. Check out the new MSN Search!
> http://search.msn.click-url.com/go/onm00200636ave/direct/01/
>

Guy Rixon 				        gtr@ast.cam.ac.uk
Institute of Astronomy   	                Tel: +44-1223-337542
Madingley Road, Cambridge, UK, CB3 0HA		Fax: +44-1223-337523