You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Soumadeep <so...@infravio.com> on 2006/03/07 08:22:40 UTC

RE: [Axis2] Management Interface - Counting requests

Hi Chathura,

I believe you are working on the management interface. Can you please share
some details regarding the approach you are taking and the modules you are
planning to implement. Also if you can share the release timeframe it would
be great?

Thanks
Soumadeep

  -----Original Message-----
  From: Chathura Ekanayake [mailto:cce.axis@gmail.com]
  Sent: Friday, February 24, 2006 12:52 PM
  To: axis-dev@ws.apache.org
  Subject: Re: [Axis2] Management Interface - Counting requests





  On 2/23/06, Soumadeep <so...@infravio.com> wrote:
    Hi Chathura

    Great stuff, though had a question - don't you think it would be
important to capture the following stats:
    1) ServiceTime
    2) MaxResponseTime
    3) LastResponseTime

  Thanks for points. I will work on them once I finished previous ones. And
please state other things which you think it is necessary to monitor.



    Apart from this have you thought about sending JMX notifications? as
it's synchronized the request will not be sent back to the requester till
the notification is sent, this could prove a deterrent to the performance!

  I am not thinking of using JMX notifications for monitoring above things.
We can do it by using attributes of MBeans or getX() methods of web
services.

  Is there a problem of using singleton objects as I mentioned in the
design? Will it fail if we deploy two Axis2 engines in the same servlet
engine?



    Best regards
    Soumadeep

     -----Original Message-----
    From: Chathura Ekanayake [mailto: cce.axis@gmail.com]
    Sent: Thursday, February 23, 2006 8:30 PM
    To: axis-dev@ws.apache.org
    Subject: [Axis2] Management Interface - Counting requests



      Hi,

      I am developing the management interface for Axis2. I am currently
implementing code to monitor dynamic statistics of remote Axis2 engines.

      These statistics include,

      - Total number of requests
      - Total number of failed requests
      - Number of requests for specified services
      - Number of requests for given operations in specified services
      - Operations to reset each of these counts

      For this, I need to count the number of requests. I think, a handler
of a globally engaged module is the best place to do it.
      I think of having a singleton object, which is invoked by a handler
with the msg context as a parameter.
      Then this object can extract necessary information from the msg
context and store them internally.

      Management interfaces (e.g. WS or MBean) can call methods of this
singleton object to get various statistics.

      Below is a brief code sample:

      // Globally engaged handler
      public class DynamicStatsHandler extends AbstractHandler implements
Handler {

             public void invoke(MessageContext msgContext) throws AxisFault
{
                         DynamicStatsManager.getDynamicStatsManager().notify
(msgContext);
             }
      }


      // Singleton object
      public class DynamicStatsManager {

          private int totalRequests = 0;

          public DynamicStatsManager getDynamicStatsManager() { //
singleton }

          public void notify(MessageContext msgContext) {
                  // extract necessary information and store in private
variables
          }

          public int getTotalRequests() { return totalRequests; }

          public void resetTotalRequests() { totalRequests = 0; }
      }


      // Management interfaces (WS)
      public class AxisDynamicStats {

         public OMElement getTotalRequests() {
               DynamicStatsManager dsManager =
DynamicStatsManager.getDynamicStatsManager();
               int totalRequests = dsManager.getTotalRequests();

               // create OMElement and return
         }

         public void getTotalRequests() {
                DynamicStatsManager dsManager =
DynamicStatsManager.getDynamicStatsManager();
                int totalRequests = dsManager.resetTotalRequests();
         }
      }


      Is this design ok? Will it slow down the process of directing msgs to
services?
      Please give suggestions about this and ways to improve.

      Thanks,

      Chathura.