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