Sorry for jumping in the middle. but I have a few questions, just to get my self upto speed with the issue.
If I have understood correctly the difference btw an operation level and service level ping is that. If the service class or the script is loading properly then a service level ping is deemed successful. And for operational level, the service author determines how deeper their are willing to go. Is this correct ??? For example if my service talks to a backend service(s) to execute the operation, as a service author I can decide to actually ping the backend service(s) as part of my ping operation or else to use a more light weight approach to say my operation is working as desired. This can cause serious performance implications if not managed properly and as Dennis and Paul pointed out the benifit from such a ping may not be worthwhile the cost. But allowing the service author to implement the ping method and make a decesion on the level of "deepness" they are willing to go seems like the right way to go.
If all the MRs returns true then status of the service is "up". If one of MRs return false, the the status of the service will be "down"
I think the status of each operation as thilian pointed out is more useful than just a blanket yes/no. However I do recognize that providing the status of individual operations is more complex. Regards, Rajith On 2/12/07, Sameera Madushan <[EMAIL PROTECTED]> wrote:
I have an on going prototype development of the ping module, but it is not yet submitted as a patch. It satisfies following requirements as they were discussed in this thread. The ping module supports only the service level ping requests. Once a service level ping request is received, it will invoke the ping methods of the all the MessageReceivers which handle the operations defined in the service and this module assumes that the MessageReceiver interface is extended. Consider the following sample code. boolean status = true; Iterator iterator = axisService.getOperations(); while (iterator.hasNext() && status) { axisOperation = (AxisOperation) iterator.next(); msgReceiver = (AbstractMessageReceiver) axisOperation.getMessageReceiver(); status = msgReceiver.ping(); } If all the MRs returns true then status of the service is "up". If one of MRs return false, the the status of the service will be "down" (say). Or else we can send the status of each operation as proposed by thilina. In most of the times single MR handles several web service operations. Therefore Using the above approache, the ping method of a single MR can be invoked several times. This is an extra overhead. One solution to overcome this problem is to cache MR on which the ping method is invoked. AFA I think the second option is to send the operation name as a parameter to the ping method. These are just my opinions. Sameera --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]