Information

16
Story Points

Technologies

Decompiled Java File
package com.acme.anvil.listener;

import com.acme.anvil.management.AnvilInvokeBeanImpl;
import java.util.Properties;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.log4j.Logger;
import weblogic.application.ApplicationLifecycleEvent;
import weblogic.application.ApplicationLifecycleListener;

public class AnvilWebLifecycleListener extends ApplicationLifecycleListener {
   private static Logger LOG = Logger.getLogger(AnvilWebLifecycleListener.class);
   private static final String MBEAN_NAME = "com.acme:Name=anvil,Type=com.acme.anvil.management.AnvilInvokeBeanApplicationLifecycleListener";

   public void preStart(ApplicationLifecycleEvent evt) {
      String appName = evt.getApplicationContext().getApplicationName();
      LOG.info("Before Start Application[" + appName + "]");
   }

   public void postStart(ApplicationLifecycleEvent evt) {
      String appName = evt.getApplicationContext().getApplicationName();
      LOG.info("After Start Application[" + appName + "]");
      this.registerMBean();
   }

   public void postStop(ApplicationLifecycleEvent evt) {
      String appName = evt.getApplicationContext().getApplicationName();
      LOG.info("Before Stop Application[" + appName + "]");
      this.unregisterMBean();
   }

   public void preStop(ApplicationLifecycleEvent evt) {
      String appName = evt.getApplicationContext().getApplicationName();
      LOG.info("After Stop Application[" + appName + "]");
   }

   private MBeanServer getMBeanServer() throws NamingException {
      Properties environment = new Properties();
      environment.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
      environment.put("java.naming.provider.url", "t3://localhost:7001");
      InitialContext context = new InitialContext(environment);
      MBeanServer server = (MBeanServer)context.lookup("java:comp/jmx/runtime");
      return server;
   }

   private void registerMBean() {
      LOG.info("Registering MBeans.");

      try {
         MBeanServer server = this.getMBeanServer();
         server.registerMBean(new AnvilInvokeBeanImpl(), new ObjectName("com.acme:Name=anvil,Type=com.acme.anvil.management.AnvilInvokeBeanApplicationLifecycleListener"));
         LOG.info("Registered MBean[com.acme:Name=anvil,Type=com.acme.anvil.management.AnvilInvokeBeanApplicationLifecycleListener]");
      } catch (Exception var3) {
         LOG.error("Exception while registering MBean[com.acme:Name=anvil,Type=com.acme.anvil.management.AnvilInvokeBeanApplicationLifecycleListener]");
      }

   }

   private void unregisterMBean() {
      LOG.info("Unregistering MBeans.");

      try {
         MBeanServer server = this.getMBeanServer();
         server.unregisterMBean(new ObjectName("com.acme:Name=anvil,Type=com.acme.anvil.management.AnvilInvokeBeanApplicationLifecycleListener"));
         LOG.info("Unregistered MBean[com.acme:Name=anvil,Type=com.acme.anvil.management.AnvilInvokeBeanApplicationLifecycleListener]");
      } catch (Exception var3) {
         LOG.error("Exception while unregistering MBean[com.acme:Name=anvil,Type=com.acme.anvil.management.AnvilInvokeBeanApplicationLifecycleListener]");
      }

   }
}