package org.tanukisoftware.wrapper.jmx; /* * Copyright (c) 1999, 2009 Tanuki Software, Ltd. * http://www.tanukisoftware.com * All rights reserved. * * This software is the proprietary information of Tanuki Software. * You shall use it only in accordance with the terms of the * license agreement you entered into with Tanuki Software. * http://wrapper.tanukisoftware.org/doc/english/licenseOverview.html */ /** * @author Leif Mortenson <leif@tanukisoftware.com> */ public class WrapperManager implements WrapperManagerMBean { /*--------------------------------------------------------------- * WrapperManagerMBean Methods *-------------------------------------------------------------*/ /** * Obtain the current version of Wrapper. * * @return The version of the Wrapper. */ public String getVersion() { return org.tanukisoftware.wrapper.WrapperManager.getVersion(); } /** * Obtain the build time of Wrapper. * * @return The time that the Wrapper was built. */ public String getBuildTime() { return org.tanukisoftware.wrapper.WrapperManager.getBuildTime(); } /** * Returns the Id of the current JVM. JVM Ids increment from 1 each time * the wrapper restarts a new one. * * @return The Id of the current JVM. */ public int getJVMId() { return org.tanukisoftware.wrapper.WrapperManager.getJVMId(); } /** * Returns true if the current Wrapper edition has support for Professional * Edition features. * * @return True if professional features are supported. */ public boolean isProfessionalEdition() { return org.tanukisoftware.wrapper.WrapperManager.isProfessionalEdition(); } /** * Returns true if the current Wrapper edition has support for Standard * Edition features. * * @return True if standard features are supported. */ public boolean isStandardEdition() { return org.tanukisoftware.wrapper.WrapperManager.isStandardEdition(); } /** * Sets the title of the console in which the Wrapper is running. This * is currently only supported on Windows platforms. * <p> * As an alternative, it is also possible to set the console title from * within the wrapper.conf file using the wrapper.console.title property. * * @param title The new title. The specified string will be encoded * to a byte array using the default encoding for the * current platform. */ public void setConsoleTitle( String title ) { org.tanukisoftware.wrapper.WrapperManager.setConsoleTitle( title ); } /** * Returns the PID of the Wrapper process. * * A PID of 0 will be returned if the JVM was launched standalone. * * This value can also be obtained using the 'wrapper.pid' system property. * * @return The PID of the Wrpper process. */ public int getWrapperPID() { return org.tanukisoftware.wrapper.WrapperManager.getWrapperPID(); } /** * Returns the PID of the Java process. * * A PID of 0 will be returned if the native library has not been initialized. * * This value can also be obtained using the 'wrapper.java.pid' system property. * * @return The PID of the Java process. */ public int getJavaPID() { return org.tanukisoftware.wrapper.WrapperManager.getJavaPID(); } /** * Requests that the current JVM process request a thread dump. This is * the same as pressing CTRL-BREAK (under Windows) or CTRL-\ (under Unix) * in the the console in which Java is running. This method does nothing * if the native library is not loaded. */ public void requestThreadDump() { org.tanukisoftware.wrapper.WrapperManager.requestThreadDump(); } /** * Returns true if the JVM was launched by the Wrapper application. False * if the JVM was launched manually without the Wrapper controlling it. * * @return True if the current JVM was launched by the Wrapper. */ public boolean isControlledByNativeWrapper() { return org.tanukisoftware.wrapper.WrapperManager.isControlledByNativeWrapper(); } /** * Returns true if the Wrapper was launched as an NT service on Windows or * as a daemon process on UNIX platforms. False if launched as a console. * This can be useful if you wish to display a user interface when in * Console mode. On UNIX platforms, this is not as useful because an * X display may not be visible even if launched in a console. * * @return True if the Wrapper is running as an NT service or daemon * process. */ public boolean isLaunchedAsService() { return org.tanukisoftware.wrapper.WrapperManager.isLaunchedAsService(); } /** * Returns true if the wrapper.debug property, or any of the logging * channels are set to DEBUG in the wrapper configuration file. Useful * for deciding whether or not to output certain information to the * console. * * @return True if the Wrapper is logging any Debug level output. */ public boolean isDebugEnabled() { return org.tanukisoftware.wrapper.WrapperManager.isDebugEnabled(); } /** * Tells the native wrapper that the JVM wants to restart, then informs * all listeners that the JVM is about to shutdown before killing the JVM. * <p> * The restart is actually performed in a background thread allowing JMX * a chance to respond to the client. */ public void restart() { // This action normally will not return, so launch it in a background // thread giving JMX a chance to return a response to its client. new Thread() { public void run() { try { Thread.sleep( 1000 ); } catch ( InterruptedException e ) { } org.tanukisoftware.wrapper.WrapperManager.restart(); } }.start(); } /** * Tells the native wrapper that the JVM wants to shut down, then informs * all listeners that the JVM is about to shutdown before killing the JVM. * <p> * The stop is actually performed in a background thread allowing JMX * a chance to respond to the client. * * @param exitCode The exit code that the Wrapper will return when it exits. */ public void stop( final int exitCode ) { // This action normally will not return, so launch it in a background // thread giving JMX a chance to return a response to its client. new Thread() { public void run() { try { Thread.sleep( 1000 ); } catch ( InterruptedException e ) { } org.tanukisoftware.wrapper.WrapperManager.stop( exitCode ); } }.start(); } /** * Returns true if the ShutdownHook for the JVM has already been triggered. * Some code needs to know whether or not the system is shutting down. * * @return True if the ShutdownHook for the JVM has already been triggered. */ public boolean getHasShutdownHookBeenTriggered() { return org.tanukisoftware.wrapper.WrapperManager.hasShutdownHookBeenTriggered(); } }