WOW!!!!!!!!!!!!!!!!

juha you sure have been QUIET ABOUT THIS BUT IT ROCKS!!!!!!!!!

IT ABSOLUTELY ROCKS!!!!!!!!!!

let's move this forward, way forward,

marc


|-----Original Message-----
|From: [EMAIL PROTECTED]
|[mailto:[EMAIL PROTECTED]]On Behalf Of jBoss CVS
|Development
|Sent: Monday, November 06, 2000 12:41 PM
|To: [EMAIL PROTECTED]
|Subject: [jBoss-Dev] CVS update:
|jboss/src/main/org/jboss/ejb/pluginsMetricsInterceptor.java
|
|
|  User: juha    
|  Date: 00/11/06 12:41:08
|
|  Added:       src/main/org/jboss/ejb/plugins MetricsInterceptor.java
|  Log:
|  Initial import.
|  
|  Revision  Changes    Path
|  1.1                  
|jboss/src/main/org/jboss/ejb/plugins/MetricsInterceptor.java
|  
|  Index: MetricsInterceptor.java
|  ===================================================================
|  /*
|   * jBoss, the OpenSource EJB server
|   *
|   * Distributable under GPL license.
|   * See terms of license at gnu.org.
|   */
|  package org.jboss.ejb.plugins;
|  
|  // standard imports
|  import java.util.Properties;
|  
|  import javax.naming.Context;
|  import javax.naming.InitialContext;
|  import javax.naming.NamingException;
|  
|  import javax.jms.Topic;
|  import javax.jms.TopicPublisher;
|  import javax.jms.TopicSession;
|  import javax.jms.TopicConnection;
|  import javax.jms.TopicConnectionFactory;
|  import javax.jms.Message;
|  import javax.jms.Session;
|  import javax.jms.JMSException;
|  
|  import javax.transaction.SystemException;
|  
|  
|  // jboss imports
|  import org.jboss.ejb.Container;
|  import org.jboss.ejb.MethodInvocation;
|  
|  
|  /**
|   * MetricsInterceptor is used for gathering data from the 
|container for admin
|   * interface.
|   *
|   * @since   jBoss 2.0
|   *
|   * @author  <a href="mailto:[EMAIL PROTECTED]">Juha Lindfors</a>
|   */
|  public class MetricsInterceptor extends AbstractInterceptor {
|  
|      // Constants -----------------------------------------------------
|      
|      // Attributes ----------------------------------------------------
|      private Container container           = null;
|      private Context  namingContext        = null;
|      private TopicPublisher metricsPub     = null;
|      private TopicSession metricsSession   = null;
|      private Topic metricsTopic            = null;
|      
|      private String applicationName        = "<undefined>";
|      private String beanName               = "<undefined>";
|      
|      // Static --------------------------------------------------------
|  
|      // Constructors --------------------------------------------------
|     
|      // Public --------------------------------------------------------
|      public void setContainer(Container container) {
|          this.container  = container;
|          
|          applicationName = container.getApplication().getName();
|          beanName        = container.getBeanMetaData().getJndiName();
|      }
|      
|      public Container getContainer() {
|          return container;
|      }
|  
|      // Interceptor implementation ------------------------------------
|     public Object invokeHome(MethodInvocation mi) throws Exception {
|       
|       try {
|          sendMessage(System.currentTimeMillis(), 
|createMessage(mi, "START"));
|          return super.invokeHome(mi);
|       }
|       finally {
|           sendMessage(System.currentTimeMillis(), 
|createMessage(mi, "STOP"));
|       }
|     }
|  
|      public Object invoke(MethodInvocation mi) throws Exception {
|  
|          try {
|              sendMessage(System.currentTimeMillis(), 
|createMessage(mi, "START"));
|              return super.invoke(mi);
|          }
|        
|          finally {
|              sendMessage(System.currentTimeMillis(), 
|createMessage(mi, "STOP"));
|          }
|     }
|  
|     public void init() {
|  
|         try {
|             final boolean TRANSACTED       = false;
|             final int     ACKNOWLEDGE_MODE = Session.DUPS_OK_ACKNOWLEDGE;
|             
|             namingContext = new InitialContext();
|             
|             TopicConnectionFactory factory = (TopicConnectionFactory)
|                  namingContext.lookup("TopicConnectionFactory");
|  
|             TopicConnection connection = factory.createTopicConnection();
|  
|             metricsTopic     = 
|(Topic)namingContext.lookup("topic/metrics");
|             metricsSession   = 
|connection.createTopicSession(TRANSACTED, ACKNOWLEDGE_MODE);
|             metricsPub       = 
|metricsSession.createPublisher(metricsTopic);     
|             
|             connection.start();
|         }
|         catch (NamingException e) {
|             System.out.println(e);
|         }
|         catch (JMSException e) {
|             System.out.println(e);
|         }
|         
|     }
|  
|     
|      // Private --------------------------------------------------------
|  
|      private void sendMessage(long time, Message msg) {        
|          
|          if ((metricsPub == null) || (msg == null))
|              return;
|              
|          try {
|              msg.setStringProperty("TIME",  String.valueOf(time));
|              metricsPub.publish(metricsTopic, msg);
|          }
|          catch (JMSException e) {
|              System.out.println(e);
|          }
|      }
|      
|      private Message createMessage(MethodInvocation mi, String 
|checkpoint) {
|          
|          if (metricsSession == null)
|              return null;
|  
|          try {            
|              Message msg = metricsSession.createMessage();
|              
|              msg.setStringProperty("CHECKPOINT",  checkpoint);
|              msg.setStringProperty("APPLICATION", applicationName);
|              msg.setStringProperty("BEAN",   beanName);
|              msg.setStringProperty("METHOD", 
|mi.getMethod().toString());    
|              msg.setStringProperty("ID",  
|String.valueOf(mi.getTransaction().hashCode()));
|              msg.setIntProperty("STATUS", 
|mi.getTransaction().getStatus());
|      
|              return msg;
|          }
|          catch (JMSException e) {
|              return null;
|          }
|          catch (SystemException e) {
|              return null;
|          }
|      }
|  }
|  
|  
|  
|  
|
|

Reply via email to