I see several objections to this method:
- First, there is an additional round-trip to be executed.
This method should search in the p2p network for the service
instance (proxy, ...) that belongs to this smid. If the
service is found to be running and the client wants to use
it, it has to use the existing methods, which means it has
to search again. I suppose this is NOT what you want to
accomplish.
- Second, how is it known if the service is working or not?
From the smid it is not known if the service has any safe
method that can be gratuitously called just to see if the
service is working. Even in that case, the semantics of the
words "the service is working" are not clearly defined. Does
it mean that the service is reachable? That its methods can
be invoked? That the back-end service (if it exists) works?
A sensible way to implement this would be to force all
adapters to implement a safe method like this:
public boolean isWorking();
and delegate the decision to the adapter itself (that is
written by the service provider). However, even this method
has its own obvious drawbacks:
- It adds yet another method the service provider has to
implement
- The semantics of the method are not clearly defined. Even
if they are, it may be very difficult for the implementor to
know if the service is really working or not. For instance,
if the adapter uses a database, how does it know the
database is working? Because the adapter can get a
connection to it? Because it already has it?
The p2p architecture is supposed to resolve this by
providing only references to services that are working. The
semantics of "working" in this case are defined as "the
process that registered the presence of the service in the
p2p architecture has not died and is still renewing its
lease". In this case the process that does that is the servent.
As a final note, what use is this method? Feature requests
are welcome, but a little explanation on the whys and hows
would help clear the picture, and allow other methods, more
aligned with the overall architecture, to be designed and
implemented.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
All good points, however the reason for this request is
Pierfranco's request that services' state be shown via the
QF/SDT (see mail "DBE to do list proposal v0.2" dated 07-02-06)
This is NOT a solution to find out whether or not a service
is functional (logically, sematically), merely a "ping" of
the service.
If a service is alive a fada proxy will be registered,
therefore if you can get a proxy for a supplied SMID we can
use a loose heuristc that the service is "alive"
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Logged In: YES
user_id=228477
I see several objections to this method:
- First, there is an additional round-trip to be executed.
This method should search in the p2p network for the service
instance (proxy, ...) that belongs to this smid. If the
service is found to be running and the client wants to use
it, it has to use the existing methods, which means it has
to search again. I suppose this is NOT what you want to
accomplish.
- Second, how is it known if the service is working or not?
From the smid it is not known if the service has any safe
method that can be gratuitously called just to see if the
service is working. Even in that case, the semantics of the
words "the service is working" are not clearly defined. Does
it mean that the service is reachable? That its methods can
be invoked? That the back-end service (if it exists) works?
A sensible way to implement this would be to force all
adapters to implement a safe method like this:
public boolean isWorking();
and delegate the decision to the adapter itself (that is
written by the service provider). However, even this method
has its own obvious drawbacks:
- It adds yet another method the service provider has to
implement
- The semantics of the method are not clearly defined. Even
if they are, it may be very difficult for the implementor to
know if the service is really working or not. For instance,
if the adapter uses a database, how does it know the
database is working? Because the adapter can get a
connection to it? Because it already has it?
The p2p architecture is supposed to resolve this by
providing only references to services that are working. The
semantics of "working" in this case are defined as "the
process that registered the presence of the service in the
p2p architecture has not died and is still renewing its
lease". In this case the process that does that is the servent.
As a final note, what use is this method? Feature requests
are welcome, but a little explanation on the whys and hows
would help clear the picture, and allow other methods, more
aligned with the overall architecture, to be designed and
implemented.
Logged In: YES
user_id=1312564
All good points, however the reason for this request is
Pierfranco's request that services' state be shown via the
QF/SDT (see mail "DBE to do list proposal v0.2" dated 07-02-06)
This is NOT a solution to find out whether or not a service
is functional (logically, sematically), merely a "ping" of
the service.
If a service is alive a fada proxy will be registered,
therefore if you can get a proxy for a supplied SMID we can
use a loose heuristc that the service is "alive"