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.
_________________________________________________________________
Dont 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
_________________________________________________________________
Dont 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.
> >
> > _________________________________________________________________
> > Dont 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