private void shutdown() { logger.fine("AMXStartupService: shutting down AMX MBeans"); unloadAMXMBeans(); final ObjectName allAMXPattern = AMXUtil.newObjectName(AMXGlassfish.DEFAULT.amxJMXDomain(), "*"); final Set<ObjectName> remainingAMX = mMBeanServer.queryNames(allAMXPattern, null); if (remainingAMX.size() != 0) { logger.log(Level.WARNING, AMXLoggerInfo.shutdownNotUnregistered, remainingAMX); try { Thread.sleep(1000); } catch (final InterruptedException e) { } } FeatureAvailability.getInstance().deRegisterFeatures(); logger.log(Level.INFO,"amx.shutdown.unregistered",mMBeanServer.queryNames(allAMXPattern, null)); }
public void postConstruct() { final TimingDelta delta = new TimingDelta(); SingletonEnforcer.register(this.getClass(), this); if (mMBeanServer == null) { throw new Error("AMXStartup: null MBeanServer"); } try { // StandardMBean is required because interface and class are in different packages final StandardMBean mbean = new StandardMBean(this, AMXStartupServiceMBean.class); mMBeanServer.registerMBean(mbean, OBJECT_NAME); mMBeanTracker = new MBeanTracker(AMXGlassfish.DEFAULT.amxJMXDomain()); mMBeanTracker.setEmitMBeanStatus(false); //final StandardMBean supportMBean = new StandardMBean(mMBeanTracker, MBeanTrackerMBean.class); mMBeanServer.registerMBean(mMBeanTracker, MBeanTrackerMBean.MBEAN_TRACKER_OBJECT_NAME); } catch (final Exception e) { logger.log(Level.INFO, "amx.fatal.error", e); throw new Error(e); } //debug( "AMXStartupService.postConstruct(): registered: " + OBJECT_NAME ); logger.log(Level.INFO,"amx.startupService",new Object[] {delta.elapsedMillis(),OBJECT_NAME}); mEvents.register(new ShutdownListener()); }
/** * Used internally to get the Logging ObjectName for a particular server * Logging MBean is a special-case because it needs to load as early as * possible. */ public static ObjectName getObjectName(final String serverName) { final String requiredProps = Util.makeRequiredProps(Util.deduceType(Logging.class), serverName); final String ServerRootMonitorType = "ServerRootMonitor"; final String parentProp = Util.makeProp(ServerRootMonitorType, serverName); final String props = Util.concatenateProps(requiredProps, parentProp); return Util.newObjectName(AMXGlassfish.DEFAULT.amxJMXDomain(), props); }