public class DemoApp extends java.lang.Object implements WrapperListener
It is also an example of Integration Method #3, where you implement the WrapperListener interface manually.
NOTE that in most cases you will want to use Method #1, using the WrapperSimpleApp helper class to integrate your application. Please see the integration section of the documentation for more details.
Modifier and Type | Method and Description |
---|---|
void |
controlEvent(int event)
Called whenever the native wrapper code traps a system control signal
against the Java process.
|
protected boolean |
doAction(java.lang.String action) |
protected DemoAppMainFrame |
getFrame() |
static WrapperResources |
getRes() |
protected boolean |
isTestCaseRunning() |
static void |
main(java.lang.String[] args)
IMPORTANT: Please read the Javadocs for this class at the top of the page
before you start to use this class as a template for integrating your own
application.
|
protected void |
setTestCaseRunning(boolean val) |
java.lang.Integer |
start(java.lang.String[] args)
The start method is called when the WrapperManager is signaled by the
native wrapper code that it can start its application.
|
int |
stop(int exitCode)
Called when the application is shutting down.
|
protected DemoAppMainFrame getFrame()
protected void setTestCaseRunning(boolean val)
protected boolean isTestCaseRunning()
public static WrapperResources getRes()
public void controlEvent(int event)
WrapperListener
The WRAPPER_CTRL_C_EVENT will be called whether or not the JVM is controlled by the Wrapper. If controlled by the Wrapper, it is undetermined as to whether the Wrapper or the JVM will receive this signal first, but the Wrapper will always initiate a shutdown. In most cases, the implementation of this method should call WrapperManager.stop() to initiate a shutdown from within the JVM. The WrapperManager will always handle the shutdown correctly whether shutdown is initiated from the Wrapper, within the JVM or both. By calling stop here, it will ensure that the application will behave correctly when run standalone, without the Wrapper.
WRAPPER_CTRL_CLOSE_EVENT, WRAPPER_CTRL_LOGOFF_EVENT, and WRAPPER_CTRL_SHUTDOWN_EVENT events will only be encountered on Windows systems. Like the WRAPPER_CTRL_C_EVENT event, it is undetermined as to whether the Wrapper or JVM will receive the signal first. All signals will be triggered by the OS whether the JVM is being run as an NT service or as a console application. If the JVM is running as a console application, the Application must respond to the CLOSE and LOGOFF events by calling WrapperManager.stop() in a timely manner. In these cases, Windows will wait for the JVM process to exit before moving on to signal the next process. If the JVM process does not exit within a reasonable amount of time, Windows will pop up a message box for the user asking if they wish to wait for the process or exit or forcibly close it. The JVM must call stop() in response to the SHUTDOWN method whether running as a console or NT service. Usually, the LOGOFF event should be ignored when the Wrapper is running as an NT service.
WRAPPER_CTRL_TERM_EVENT events will only be encountered on UNIX systems.
If the wrapper.ignore_signals property is set to TRUE then any WRAPPER_CTRL_C_EVENT, WRAPPER_CTRL_CLOSE_EVENT, WRAPPER_CTRL_TERM_EVENT, or WRAPPER_CTRL_HUP_EVENT events will be blocked prior to this method being called.
Unless you know what you are doing, it is suggested that the body of this method contain the following code, or its functional equivalent.
public void controlEvent( int event ) { if ( ( event == WrapperManager.WRAPPER_CTRL_LOGOFF_EVENT ) && ( WrapperManager.isLaunchedAsService() || WrapperManager.isIgnoreUserLogoffs() ) ) { // Ignore } else { WrapperManager.stop( 0 ); } }
controlEvent
in interface WrapperListener
event
- The system control signal.public java.lang.Integer start(java.lang.String[] args)
WrapperListener
If this method throws an exception the Wrapper will shutdown the current JVM in an error state and then relaunch a new JVM. It is the responsibility of the user code to catch any exceptions and return an appropriate exit code if the exception should result in the Wrapper stopping.
start
in interface WrapperListener
args
- List of arguments used to initialize the application.public int stop(int exitCode)
WrapperListener
By default, the stop() method will only be called if the start() method has completed and returned null. There are however cases in which the stop method should be called on shutdown even if the start method has not returned or returned an exit code. This functionality can be enabled by setting the following property in the Wrapper configuration file: wrapper.listener.force_stop=TRUE.
WARNING - Directly calling System.exit in this method will result in a deadlock in cases where this method is called from within a shutdown hook. This method will be invoked by a shutdown hook if the JVM shutdown was originally initiated by a call to System.exit.
stop
in interface WrapperListener
exitCode
- The suggested exit code that will be returned to the OS
when the JVM exits. If WrapperManager.stop was called
to stop the JVM then this exit code will reflect that
value. However, if System.exit or Runtime.halt were
used then this exitCode will always be 0. In these
cases, the Wrapper process will be able to detect the
actual JVM exit code and handle it correctly.protected boolean doAction(java.lang.String action)
public static void main(java.lang.String[] args)
args
- Main arguments.Copyright 1999, 2024 Tanuki Software Inc., All Rights Reserved.