dev@glassfish.java.net

new deployment events

From: Jerome Dochez <Jerome.Dochez_at_Sun.COM>
Date: Thu, 12 Feb 2009 20:14:16 -0800

A number of people have been asking for some new events to be sent
when deployment is happening

I have added 3 events that will be sent for each deployment

Those events are defined in the
org.glassfish.internal.deployment.Deployment contract definition

     public final EventTypes<ExtendedDeploymentContext> DEPLOYMENT_START
     public final EventTypes<ExtendedDeploymentContext>
DEPLOYMENT_FAILURE
     public final EventTypes<ApplicationInfo> DEPLOYMENT_SUCCESS

to be able to be notified of any application being deployed, you can
just do

@Inject
Events events;


....

events.register(new EventListener() {
        
        public void event(Event e) {
                if (e.is(Deployment.DEPLOYMENT_START)) {
                        System.out.println("new deployment detected");
                }
        }
});

Each even carries the ExtendedDeploymentContext object which has all
relevant information about what's being deployed which can be accessed
typed safely like that :
                        ExtendedDeploymentContext dc =
Deployment.DEPLOYMENT_START.getHook(e);

Also some folks have been willing to know what caused a deployment
operation to happen. For instance there is different between first
time deployment and loading when server restart. In order to
disambiguate, each deployment operation has an origin attribute which
identified what caused the deployment operation.

     public enum Origin { load, deploy, unload, undeploy }

so say you want to have code that do something when you are in deploy
(versus just a server restart), you would do with a DeploymentContext
(dc)
        
        DeployCommandParameters params =
dc.getCommandParameters(DeployCommandParameters.class);
        switch(params.origin) {
                case Origin.Deploy :
                        System.out.println("This is a first time deployment of this
operation");
                        break;
                case Origin.Load :
                        System.out.println("this is a reload after server restart or
disable/enable");
                        break;
        }
        
Jerome