As you would know red5 is a media server package, which runs on top or other server cores like Tomcat and Jetty. There are few minor differences , hence in the way both compilations handle events and behaviors. The one we will be talking about here is specifically the “appStop” event. The “appStop” is suppose to fire off whenever the application stops/shuts down. The anomaly here is that on a tomcat based red5 compilations (which is the default one) the “appStop” does not fire up. This is because the is no straight forward “hook” / “point of entry” to determine when the server core stops. Hence we need to create a “Shutdown Hook” to handle the server/application shutdown by ourself.
The best way to do this is to create a internal / private class in your Application class source. Sample:
/* ShutDown Hook for Red5 Application */
class ShutdownHook
extends Thread
{
Application app
;
public ShutdownHook
(Application app
)
{
this.
app = app
;
}
public void run
()
{
// do something here
}
}
Next we relate it to our Application class by the “addShutdownHook” method. This method is not something for red5 only. Its the most common way to intercept and handle your java application shutdown. So in the Application class appStart() method we can add:
public boolean appStart
(IScope app
)
{
Runtime.
getRuntime().
addShutdownHook(new ShutdownHook
(this));
return true;
}
We add it to the appStart() method to make sure it is called only once.
Note how we pass the reference to the Application class itself to the constructor “ShutdownHook”. Now by defining the properties as “protected” or “public” you can access then when the application/server is shutting down and do any cleanup jobs that you may have.