public final class WrapperManager
extends java.lang.Object
implements java.lang.Runnable
Modifier and Type | Field and Description |
---|---|
static int |
SERVICE_CONTROL_CODE_CONTINUE
Service Control code which can be sent to resume a paused service.
|
static int |
SERVICE_CONTROL_CODE_INTERROGATE
Service Control code which can be sent to or received interrogate the status of a service.
|
static int |
SERVICE_CONTROL_CODE_PAUSE
Service Control code which can be sent to pause a service.
|
static int |
SERVICE_CONTROL_CODE_POWEREVENT_BATTERYLOW
Service Control code which is received when the battery power is low.
|
static int |
SERVICE_CONTROL_CODE_POWEREVENT_OEMEVENT
Service Control code which is received when the APM BIOS has signaled
an APM OEM event.
|
static int |
SERVICE_CONTROL_CODE_POWEREVENT_POWERSTATUSCHANGE
Service Control code which is received when there is a change in the
power status of the computer, such as a switch from battery power to
A/C.
|
static int |
SERVICE_CONTROL_CODE_POWEREVENT_QUERYSUSPEND
Service Control code which is received when the system being suspended.
|
static int |
SERVICE_CONTROL_CODE_POWEREVENT_QUERYSUSPENDFAILED
Service Control code which is received when permission to suspend the
computer was denied by a process.
|
static int |
SERVICE_CONTROL_CODE_POWEREVENT_RESUMEAUTOMATIC
Service Control code which is received when the computer has woken up
automatically to handle an event.
|
static int |
SERVICE_CONTROL_CODE_POWEREVENT_RESUMECRITICAL
Service Control code which is received when the system has resumed
operation.
|
static int |
SERVICE_CONTROL_CODE_POWEREVENT_RESUMESUSPEND
Service Control code which is received when the system has resumed
operation after being suspended.
|
static int |
SERVICE_CONTROL_CODE_POWEREVENT_SUSPEND
Service Control code which is received when the computer is about to
enter a suspended state.
|
static int |
SERVICE_CONTROL_CODE_SHUTDOWN
Service Control code which can be received when the system is shutting down.
|
static int |
SERVICE_CONTROL_CODE_START
Service Control code which can be sent to start a service.
|
static int |
SERVICE_CONTROL_CODE_STOP
Service Control code which can be sent or received to stop a service.
|
static int |
WRAPPER_CTRL_C_EVENT
Received when the user presses CTRL-C in the console on Windows or UNIX platforms.
|
static int |
WRAPPER_CTRL_CLOSE_EVENT
Received when the user clicks on the close button of a Console on Windows.
|
static int |
WRAPPER_CTRL_HUP_EVENT
Received when a SIG HUP is received on a UNIX system.
|
static int |
WRAPPER_CTRL_LOGOFF_EVENT
Received when the user logs off of a Windows system.
|
static int |
WRAPPER_CTRL_SHUTDOWN_EVENT
Received when a Windows system is shutting down.
|
static int |
WRAPPER_CTRL_TERM_EVENT
Received when a SIG TERM is received on a UNIX system.
|
static int |
WRAPPER_CTRL_USR1_EVENT
Received when a SIG USR1 is received on a UNIX system.
|
static int |
WRAPPER_CTRL_USR2_EVENT
Received when a SIG USR2 is received on a UNIX system.
|
static int |
WRAPPER_LOG_LEVEL_ADVICE
Log message at advice log level.
|
static int |
WRAPPER_LOG_LEVEL_DEBUG
Log message at debug log level.
|
static int |
WRAPPER_LOG_LEVEL_ERROR
Log message at error log level.
|
static int |
WRAPPER_LOG_LEVEL_FATAL
Log message at fatal log level.
|
static int |
WRAPPER_LOG_LEVEL_INFO
Log message at info log level.
|
static int |
WRAPPER_LOG_LEVEL_NOTICE
Log message at notice log level.
|
static int |
WRAPPER_LOG_LEVEL_STATUS
Log message at status log level.
|
static int |
WRAPPER_LOG_LEVEL_WARN
Log message at warn log level.
|
Modifier and Type | Method and Description |
---|---|
static void |
accessViolation()
(Testing Method) Cause an access violation within the Java code.
|
static void |
accessViolationNative()
(Testing Method) Cause an access violation within native JNI code.
|
static void |
addWrapperEventListener(WrapperEventListener listener,
long mask)
Adds a WrapperEventListener which will receive WrapperEvents.
|
static void |
appearHung()
(Testing Method) Causes the WrapperManager to go into a state which makes the JVM appear
to be hung when viewed from the native Wrapper code.
|
static void |
appearOrphan()
Deprecated.
Removed as of 3.5.8
|
static void |
appearSlow(int slowSeconds)
(Testing Method) Causes the WrapperManager to go into a state which makes
the JVM appear to be sluggish when viewed from the native Wrapper code.
|
static WrapperProcess |
exec(java.lang.String command)
A more powerful replacement to the java.lang.Runtime.exec method.
|
static WrapperProcess |
exec(java.lang.String[] cmdArray)
A more powerful replacement to the java.lang.Runtime.exec method.
|
static WrapperProcess |
exec(java.lang.String[] cmdArray,
WrapperProcessConfig config)
A more powerful replacement to the java.lang.Runtime.exec method.
|
static WrapperProcess |
exec(java.lang.String command,
WrapperProcessConfig config)
A more powerful replacement to the java.lang.Runtime.exec method.
|
protected void |
finalize() |
static void |
fireUserEvent(int eventNr)
Fires a user event user_n specified in the conf file
|
static java.lang.String |
generateDetailedNativeBaseName(java.lang.String baseName)
Generates a filename which includes the current os name, architecture, and jvm bits.
|
static java.lang.String |
getArch()
Returns the Architecture that the Wrapper has resolved.
|
static java.lang.String |
getBuildTime()
Obtain the build time of Wrapper.
|
static WrapperUser |
getInteractiveUser(boolean groups)
Returns a WrapperUser object which describes the interactive user whose
desktop is being interacted with.
|
static int |
getJavaPID()
Returns the PID of the Java process.
|
static int |
getJVMId()
Returns the Id of the current JVM.
|
static java.lang.String |
getOS()
Returns the OS that the Wrapper has resolved.
|
static java.util.Properties |
getProperties()
Returns a Properties object containing expanded the contents of the
configuration file used to launch the Wrapper.
|
static WrapperResources |
getRes()
Returns the WrapperResources object which is used to manage all resources for
the Java Service Wrapper.
|
static WrapperUser |
getUser(boolean groups)
Returns a WrapperUser object which describes the user under which the
Wrapper is currently running.
|
static java.lang.String |
getVersion()
Obtain the current version of Wrapper.
|
static java.io.File |
getWrapperLogFile()
Returns the Log file currently being used by the Wrapper.
|
static int |
getWrapperPID()
Returns the PID of the Wrapper process.
|
static boolean |
hasShutdownHookBeenTriggered()
Returns true if the ShutdownHook for the JVM has already been triggered.
|
static boolean |
isAIX()
Returns true if the current JVM is AIX.
|
static boolean |
isControlledByNativeWrapper()
Returns true if the JVM was launched by the Wrapper application.
|
static boolean |
isDebugEnabled()
Returns true if the wrapper.debug property, or any of the logging
channels are set to DEBUG in the wrapper configuration file.
|
static boolean |
isIgnoreUserLogoffs()
Returns true if the JVM should ignore user logoff events.
|
static boolean |
isLaunchedAsService()
Returns true if the Wrapper was launched as an NT service on Windows or
as a daemon process on UNIX platforms.
|
static boolean |
isMacOSX()
Returns true if the current JVM is Mac OSX.
|
static boolean |
isNativeLibraryOk()
Returns true if the native library has been loaded successfully, false
otherwise.
|
static boolean |
isProfessionalEdition()
Returns true if the current Wrapper edition has support for Professional
Edition features.
|
static boolean |
isShuttingDown()
Returns true if the JVM is in the process of shutting down.
|
static boolean |
isStandardEdition()
Returns true if the current Wrapper edition has support for Standard
Edition features.
|
static boolean |
isWindows()
Returns true if the current JVM is Windows.
|
static boolean |
isZOS()
Returns true if the current JVM is z/OS.
|
static WrapperWin32Service[] |
listServices()
Returns an array of all registered services.
|
static WrapperResources |
loadWrapperResources(java.lang.String domain,
java.lang.String folder)
Loads a WrapperResources based on the current locale of the JVM.
|
static void |
log(int logLevel,
java.lang.String message)
Requests that the Wrapper log a message at the specified log level.
|
static int |
nativeGetDpiAwareness() |
static int |
nativeGetDpiScale() |
static void |
nativeSetDpiAwareness(int awareness) |
static void |
raiseExceptionNative(int code)
(Testing Method) raise an exception in native code.
|
static void |
raiseFailFastExceptionNative()
(Testing Method) raise a fail fast exception in native code.
|
static void |
releaseShutdownLock()
Called by a thread which has previously called requestShutdownLock().
|
static void |
removeWrapperEventListener(WrapperEventListener listener)
Removes a WrapperEventListener so it will not longer receive WrapperEvents.
|
static void |
requestShutdownLock()
Increase the number of locks which will prevent the Wrapper from letting
the JVM process exit on shutdown.
|
static void |
requestThreadDump()
Requests that the current JVM process request a thread dump.
|
static void |
restart()
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.
|
static void |
restartAndReturn()
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.
|
static void |
resumeTimeouts()
Resumes Wrapper timeouts if they were previously suspended
(see suspendTimeouts()).
|
void |
run()
The main comm runner thread.
|
static WrapperWin32Service |
sendServiceControlCode(java.lang.String serviceName,
int controlCode)
Sends a service control code to the specified service.
|
static void |
setConsoleTitle(java.lang.String title)
Sets the title of the console in which the Wrapper is running.
|
static void |
signalStarting(int waitHint)
Signal the native wrapper that the startup is progressing but that more
time is needed.
|
static void |
signalStopped(int exitCode)
This method should not normally be called by user code as it is called
from within the stop and restart methods.
|
static void |
signalStopping(int waitHint)
Signal the native wrapper that the shutdown is progressing but that more
time is needed.
|
static void |
start(WrapperListener listener,
java.lang.String[] args)
Start the Java side of the Wrapper code running.
|
static void |
stop(int exitCode)
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.
|
static void |
stopAndReturn(int exitCode)
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.
|
static void |
stopImmediate(int exitCode)
Tells the native wrapper that the JVM wants to shut down and then
promptly halts.
|
static void |
suspendTimeouts(int seconds)
Suspends the timeouts used by the Wrapper to monitor the JVM.
|
public static final int WRAPPER_CTRL_C_EVENT
public static final int WRAPPER_CTRL_CLOSE_EVENT
public static final int WRAPPER_CTRL_LOGOFF_EVENT
public static final int WRAPPER_CTRL_SHUTDOWN_EVENT
public static final int WRAPPER_CTRL_TERM_EVENT
public static final int WRAPPER_CTRL_HUP_EVENT
public static final int WRAPPER_CTRL_USR1_EVENT
public static final int WRAPPER_CTRL_USR2_EVENT
public static final int WRAPPER_LOG_LEVEL_DEBUG
public static final int WRAPPER_LOG_LEVEL_INFO
public static final int WRAPPER_LOG_LEVEL_STATUS
public static final int WRAPPER_LOG_LEVEL_WARN
public static final int WRAPPER_LOG_LEVEL_ERROR
public static final int WRAPPER_LOG_LEVEL_FATAL
public static final int WRAPPER_LOG_LEVEL_ADVICE
public static final int WRAPPER_LOG_LEVEL_NOTICE
public static final int SERVICE_CONTROL_CODE_START
public static final int SERVICE_CONTROL_CODE_STOP
public static final int SERVICE_CONTROL_CODE_PAUSE
public static final int SERVICE_CONTROL_CODE_CONTINUE
public static final int SERVICE_CONTROL_CODE_INTERROGATE
public static final int SERVICE_CONTROL_CODE_SHUTDOWN
public static final int SERVICE_CONTROL_CODE_POWEREVENT_QUERYSUSPEND
public static final int SERVICE_CONTROL_CODE_POWEREVENT_QUERYSUSPENDFAILED
public static final int SERVICE_CONTROL_CODE_POWEREVENT_SUSPEND
public static final int SERVICE_CONTROL_CODE_POWEREVENT_RESUMECRITICAL
public static final int SERVICE_CONTROL_CODE_POWEREVENT_RESUMESUSPEND
public static final int SERVICE_CONTROL_CODE_POWEREVENT_BATTERYLOW
public static final int SERVICE_CONTROL_CODE_POWEREVENT_POWERSTATUSCHANGE
public static final int SERVICE_CONTROL_CODE_POWEREVENT_OEMEVENT
public static final int SERVICE_CONTROL_CODE_POWEREVENT_RESUMEAUTOMATIC
public static WrapperResources getRes()
protected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable
public static int nativeGetDpiScale()
public static int nativeGetDpiAwareness()
public static void nativeSetDpiAwareness(int awareness)
public static java.lang.String generateDetailedNativeBaseName(java.lang.String baseName)
baseName
- The base file name.public static WrapperResources loadWrapperResources(java.lang.String domain, java.lang.String folder)
domain
- Domain of the resource.folder
- Location of the resource.public static java.lang.String getVersion()
public static java.lang.String getBuildTime()
public static int getJVMId()
public static WrapperProcess exec(java.lang.String command) throws java.lang.SecurityException, java.io.IOException, java.lang.NullPointerException, java.lang.IllegalArgumentException, WrapperJNIError, WrapperLicenseError, java.lang.UnsatisfiedLinkError
When the JVM exits or is terminated for any reason, the Wrapper will clean up any child processes launched with this method automatically before shutting down or launching a new JVM.
This method is the same as calling
WrapperManager.exec(command, new WrapperProcessConfig());
The returned WrapperProcess object can be used to control the child process, supply input, or process output.
Professional Edition feature.
command
- A specified system command in one String.java.io.IOException
- Will be thrown if an I/O error occursjava.lang.NullPointerException
- If command is null.java.lang.IllegalArgumentException
- If command is emptyjava.lang.SecurityException
- If a SecurityManager is present and its
checkExec method doesn't allow creation of a
subprocess.WrapperJNIError
- If the native library has not been loaded, or is in the
process of shutting down when config is not detached.WrapperLicenseError
- If the function is called other than in
the Professional Edition, if the native
library has not been loaded.java.lang.UnsatisfiedLinkError
- If the posix_spawn function couldn't be foundisProfessionalEdition()
,
exec(String command, WrapperProcessConfig config)
,
WrapperProcessConfig
public static WrapperProcess exec(java.lang.String command, WrapperProcessConfig config) throws java.lang.SecurityException, java.io.IOException, java.lang.NullPointerException, java.lang.IllegalArgumentException, WrapperJNIError, WrapperLicenseError, java.lang.UnsatisfiedLinkError
By configuring the WrapperProcessConfig object, it is possible to control whether or not the child process will be automatically cleaned up when the JVM exits or is terminated. It is also possible to control how the child process is launched to work around memory issues on some platforms.
For example, on Solaris when the JVM is very large, doing a fork will duplicate the entire JVM's memory space and cause an out of memory error or JVM crash, to avoid such memory problems the child process can be launched using posix spawn as follows:
WrapperManager.exec( command, new WrapperProcessConfig().setStartType( WrapperProcessConfig.POSIX_SPAWN ) );
Please review the WrapperProcessConfig class for a full list of options.
The returned WrapperProcess object can be used to control the child process, supply input, or process output.
Professional Edition feature.
command
- A specified system command in one String.config
- A WrapperProcessConfig object representing the Start/Run
Configurations of the subprocessjava.io.IOException
- Will be thrown if an I/O error occursjava.lang.NullPointerException
- If command is null.java.lang.IllegalArgumentException
- If command is empty or the configuration is invalidjava.lang.SecurityException
- If a SecurityManager is present and its
checkExec method doesn't allow creation of a
subprocess.WrapperJNIError
- If the native library has not been loaded, or is in the
process of shutting down when config is not detached.WrapperLicenseError
- If the function is called other than in
the Professional Edition, if the native
library has not been loaded.java.lang.UnsatisfiedLinkError
- If the posix_spawn function couldn't be foundisProfessionalEdition()
,
WrapperProcessConfig
public static WrapperProcess exec(java.lang.String[] cmdArray) throws java.lang.SecurityException, java.io.IOException, java.lang.NullPointerException, java.lang.IndexOutOfBoundsException, java.lang.IllegalArgumentException, WrapperJNIError, java.lang.UnsatisfiedLinkError, WrapperLicenseError
When the JVM exits or is terminated for any reason, the Wrapper will clean up any child processes launched with this method automatically before shutting down or launching a new JVM.
This method is the same as calling
WrapperManager.exec(cmdArray, new WrapperProcessConfig());
The returned WrapperProcess object can be used to control the child process, supply input, or process output.
Professional Edition feature.
cmdArray
- A specified system command in array format for each
parameter a single element.java.io.IOException
- Will be thrown at any error realated with Memory
allocation, or if the command does not exist.java.lang.NullPointerException
- If cmdarray is null, or one of the elements
of cmdarray is null.java.lang.IndexOutOfBoundsException
- If cmdarray is an empty array (has
length 0)java.lang.SecurityException
- If a SecurityManager is present and its
checkExec method doesn't allow creation of a
subprocess.java.lang.IllegalArgumentException
- If there are any problems with the
WrapperProcessConfig object.WrapperJNIError
- If the native library has not been loaded, or is in the
process of shutting down when config is not detached.WrapperLicenseError
- If the function is called other than in
the Professional Edition, if the native
library has not been loaded.java.lang.UnsatisfiedLinkError
- If the posix_spawn function couldn't be foundisProfessionalEdition()
public static WrapperProcess exec(java.lang.String[] cmdArray, WrapperProcessConfig config) throws java.lang.SecurityException, java.io.IOException, java.lang.NullPointerException, java.lang.IndexOutOfBoundsException, java.lang.IllegalArgumentException, WrapperJNIError, WrapperLicenseError, java.lang.UnsatisfiedLinkError
By configuring the WrapperProcessConfig object, it is possible to control whether or not the child process will be automatically cleaned up when the JVM exits or is terminated. It is also possible to control how the child process is launched to work around memory issues on some platforms.
For example, on Solaris when the JVM is very large, doing a fork will duplicate the entire JVM's memory space and cause an out of memory error or JVM crash, to avoid such memory problems the child process can be launched using posix spawn as follows:
WrapperManager.exec( cmdArray, new WrapperProcessConfig().setStartType( WrapperProcessConfig.POSIX_SPAWN ) );
Please review the WrapperProcessConfig class for a full list of options.
The returned WrapperProcess object can be used to control the child process, supply input, or process output.
Professional Edition feature.
cmdArray
- A specified system command in array format, for each
parameter a single element.config
- A WrapperProcessConfig object representing the Start/Run
Configurations of the subprocessjava.io.IOException
- Will be thrown if an I/O error occursjava.lang.NullPointerException
- If cmdarray is null, or one of the elements
of cmdarray is null.java.lang.IndexOutOfBoundsException
- If cmdarray is an empty array (has
length 0)java.lang.SecurityException
- If a SecurityManager is present and its
checkExec method doesn't allow creation of a
subprocess.java.lang.IllegalArgumentException
- If there are any problems with the
WrapperProcessConfig object.WrapperJNIError
- If the native library has not been loaded, or is in the
process of shutting down when config is not detached.WrapperLicenseError
- If the function is called other than in
the Professional Edition, if the native
library has not been loaded.java.lang.UnsatisfiedLinkError
- If the posix_spawn function couldn't be foundisProfessionalEdition()
public static boolean isNativeLibraryOk()
public static java.lang.String getOS()
public static java.lang.String getArch()
public static boolean isWindows()
public static boolean isMacOSX()
public static boolean isAIX()
public static boolean isZOS()
public static boolean isProfessionalEdition()
public static boolean isStandardEdition()
public static void fireUserEvent(int eventNr)
eventNr
- The user-event number to fire. Must be in the range of 1-32767.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("fireUserEvent")
permission.WrapperLicenseError
- If the function is called other than in
the Professional Edition, if the native
library has not been loaded, or if the
backend has already been closed.public static void setConsoleTitle(java.lang.String title)
As an alternative, it is also possible to set the console title from within the wrapper.conf file using the wrapper.console.title property.
title
- The new title. The specified string will be encoded
to a byte array using the default encoding for the
current platform.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("setConsoleTitle")
permission.WrapperPermission
public static WrapperUser getUser(boolean groups)
groups
- True if the user's groups should be returned as well.
Requesting the groups that a user belongs to increases
the CPU load required to complete the call.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("getUser") permission.WrapperPermission
public static WrapperUser getInteractiveUser(boolean groups)
If a user is not currently logged on then this method will return null. User code can repeatedly call this method to detect when a user has logged in. To detect when a user has logged out, there are two options. 1) The user code can continue to call this method until it returns null. 2) Or if the WrapperListener method is being implemented, the WrapperListener.controlEvent method will receive a WRAPPER_CTRL_LOGOFF_EVENT event when the user logs out.
On XP systems, it is possible to switch to another account rather than actually logging out. In such a case, the interactive user will be the first user that logged in. This will also be the only user with which the service will interact. If other users are logged in when the interactive user logs out, the service will not automatically switch to another logged in user. Rather, the next user to log in will become the new user which the service will interact with.
This method will always return NULL on versions of NT prior to Windows 2000. This can not be helped as some required functions were not added to the windows API until NT version 5.0, also known as Windows 2000.
groups
- True if the user's groups should be returned as well.
Requesting the groups that a user belongs to increases
the CPU load required to complete the call.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("getInteractiveUser")
permission.WrapperPermission
public static java.util.Properties getProperties()
java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("getProperties")
permission.WrapperPermission
public static int getWrapperPID()
java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("getWrapperPID") permission.WrapperPermission
public static int getJavaPID()
java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("getJavaPID") permission.WrapperPermission
public static void requestThreadDump()
java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("requestThreadDump")
permission.WrapperPermission
public static void appearHung()
java.lang.IllegalStateException
- If testing methods have been disabled by setting
the wrapper.disable_tests=true system property.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("test.appearHung") permission.WrapperPermission
public static void appearSlow(int slowSeconds)
slowSeconds
- The number of seconds to delay reponding to any incoming
commands from the wrapper.java.lang.IllegalStateException
- If testing methods have been disabled by setting
the wrapper.disable_tests=true system property.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("test.appearSlow") permission.WrapperPermission
public static void appearOrphan()
public static void accessViolation()
java.lang.IllegalStateException
- If testing methods have been disabled by setting
the wrapper.disable_tests=true system property.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("test.accessViolation")
permission.WrapperPermission
public static void accessViolationNative()
java.lang.IllegalStateException
- If testing methods have been disabled by setting
the wrapper.disable_tests=true system property.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("test.accessViolationNative")
permission.WrapperPermission
public static void raiseExceptionNative(int code)
code
- Exception code to Raise.java.lang.IllegalStateException
- If testing methods have been disabled by setting
the wrapper.disable_tests=true system property.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("test.raiseExceptionNative")
permission.WrapperPermission
public static void raiseFailFastExceptionNative()
java.lang.IllegalStateException
- If testing methods have been disabled by setting
the wrapper.disable_tests=true system property.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("test.raiseFailFastExceptionNative")
permission.WrapperPermission
public static boolean isControlledByNativeWrapper()
public static boolean isLaunchedAsService()
public static boolean isIgnoreUserLogoffs()
public static boolean isDebugEnabled()
public static void start(WrapperListener listener, java.lang.String[] args)
This method must be called on startup and then can only be called once so there is no reason for any security permission checks on this call.
listener
- The WrapperListener instance which represents the
application being started.args
- The argument list passed to the JVM when it was launched.public static boolean isShuttingDown()
public static void requestShutdownLock() throws WrapperShuttingDownException
Normal non-daemon threads should not require these locks as the very fact that the non-daemon thread is still running will prevent the JVM from shutting down.
It is possible to make multiple calls within a single thread. Each call should always be paired with a call to releaseShutdownLock().
WrapperShuttingDownException
- If called after the Wrapper has
already begun the shutdown of the
JVM.public static void releaseShutdownLock() throws java.lang.IllegalStateException
java.lang.IllegalStateException
- If called without first calling requestShutdownLock() from
the same thread.public static void restart() throws java.lang.SecurityException
This method will not return.
java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("restart") permission.WrapperPermission
public static void restartAndReturn() throws java.lang.SecurityException
This method requests that the JVM be restarted but then returns. This allows components to initiate a JVM exit and then continue, allowing a normal shutdown initiated by the JVM via shutdown hooks. In applications which are designed to be shutdown when the user presses CTRL-C, this may result in a cleaner shutdown.
java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("restart") permission.WrapperPermission
public static void stop(int exitCode)
This method will not return.
exitCode
- The exit code that the Wrapper will return when it exits.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("stop") permission.WrapperPermission
public static void stopAndReturn(int exitCode)
This method requests that the JVM be shutdown but then returns. This allows components to initiate a JVM exit and then continue, allowing a normal shutdown initiated by the JVM via shutdown hooks. In applications which are designed to be shutdown when the user presses CTRL-C, this may result in a cleaner shutdown.
exitCode
- The exit code that the Wrapper will return when it exits.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("stop" ) permission.WrapperPermission
public static void stopImmediate(int exitCode)
exitCode
- The exit code that the Wrapper will return when it exits.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("stopImmediate") permission.WrapperPermission
public static void signalStarting(int waitHint)
This call will have no effect if the current startup timeout is already more than 'waitHint' milliseconds in the future.
waitHint
- Time in milliseconds to allow for the startup to
complete.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("signalStarting") permission.WrapperPermission
public static void signalStopping(int waitHint)
This call will have no effect if the current shutdown timeout is already more than 'waitHint' milliseconds in the future.
waitHint
- Time in milliseconds to allow for the shutdown to
complete.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("signalStopping") permission.WrapperPermission
public static void signalStopped(int exitCode)
exitCode
- The exit code.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("signalStopped") permission.WrapperPermission
public static boolean hasShutdownHookBeenTriggered()
public static void suspendTimeouts(int seconds)
Timeouts may also be suspended using actions specified in the configuration file (filters, timers, etc.), or from the command file.
If several requests to suspend timeouts are made, the number of seconds specified by each request will not be summed. Instead the newly specified time will replace the remaining suspension time if it is longer, and will be ignored otherwise.
seconds
- Number of seconds to suspend timeouts.public static void resumeTimeouts()
Timeouts may also be resumed using actions specified in the configuration file (filters, timers, etc.), or from the command file.
public static void log(int logLevel, java.lang.String message)
Log messages will currently by trimmed by the Wrapper at 4k (4096 bytes).
Because of differences in the way console output is collected and messages logged via this method, it is expected that interspersed console and log messages will not be in the correct order in the resulting log file.
This method was added to allow simple logging to the wrapper.log file. This is not meant to be a full featured log file and should not be used as such. Please look into a logging package for most application logging.
logLevel
- The level to log the message at can be one of
WRAPPER_LOG_LEVEL_DEBUG, WRAPPER_LOG_LEVEL_INFO,
WRAPPER_LOG_LEVEL_STATUS, WRAPPER_LOG_LEVEL_WARN,
WRAPPER_LOG_LEVEL_ERROR, or WRAPPER_LOG_LEVEL_FATAL.message
- The message to be logged.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("log") permission.WrapperPermission
public static WrapperWin32Service[] listServices() throws java.lang.SecurityException
java.lang.SecurityException
- If a SecurityManager has not been set in the
JVM or if the calling code has not been
granted the WrapperPermission "listServices"
permission. A SecurityManager is required
for this operation because this method makes
it possible to learn a great deal about the
state of the system.WrapperPermission
public static WrapperWin32Service sendServiceControlCode(java.lang.String serviceName, int controlCode) throws WrapperServiceException, java.lang.SecurityException
The control code sent can be one of the system control codes: WrapperManager.SERVICE_CONTROL_CODE_START, WrapperManager.SERVICE_CONTROL_CODE_STOP, WrapperManager.SERVICE_CONTROL_CODE_PAUSE, WrapperManager.SERVICE_CONTROL_CODE_CONTINUE, or WrapperManager.SERVICE_CONTROL_CODE_INTERROGATE. In addition, user defined codes in the range 128-255 can also be sent.
serviceName
- Name of the Windows service which will receive the
control code.controlCode
- The actual control code to be sent. User defined
control codes should be in the range 128-255.WrapperServiceException
- If there are any problems accessing the
specified service.java.lang.SecurityException
- If a SecurityManager has not been set in the
JVM or if the calling code has not been
granted the WrapperServicePermission
permission for the specified service and
control code. A SecurityManager is required
for this operation because this method makes
it possible to control any service on the
system, which is of course rather dangerous.WrapperServicePermission
public static void addWrapperEventListener(WrapperEventListener listener, long mask)
listener
- WrapperEventListener to be start receiving events.mask
- A mask specifying the event types that the listener is
interrested in receiving. See the WrapperEventListener
class for a full list of flags. A mask is created by
combining multiple flags using the binary '|' OR operator.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the appropriate
WrapperEventPermission(...) permission.WrapperEventPermission
public static void removeWrapperEventListener(WrapperEventListener listener)
listener
- WrapperEventListener to be stop receiving events.java.lang.SecurityException
- If a SecurityManager is present and the
calling thread does not have the
WrapperPermission("removeWrapperEventListener")
permission.WrapperPermission
public static java.io.File getWrapperLogFile()
java.lang.IllegalStateException
- If this method is called before the Wrapper
instructs this class to start the user
application.public void run()
run
in interface java.lang.Runnable
Copyright 1999, 2024 Tanuki Software Inc., All Rights Reserved.