dev@glassfish.java.net

Re: new deployment events

From: Marina Vatkina <Marina.Vatkina_at_Sun.COM>
Date: Fri, 13 Feb 2009 10:33:47 -0800

Jerome Dochez wrote:
>
> On Feb 13, 2009, at 10:18 AM, Marina Vatkina wrote:
>
>> Jerome Dochez wrote:
>>
>>> On Feb 13, 2009, at 7:10 AM, Hong Zhang wrote:
>>>
>>>> Hi, Jerome
>>>> We probably also need some undeployment events.
>>>
>>> maybe but not for CMP case...
>>
>>
>> Especially for the CMP case ;)
>>
>>>> I know cmp code needs to get the undeployment events for dropping
>>>> tables in v2. Actually now to think of it, maybe we should just
>>>> add a CMP Deployer to create/delete tables? When will adding the
>>>> Deployer more appropriate than using events in the current
>>>> infrastructure?
>>>>
>>> Deployers are the only supported way to add containers to v3, these
>>> events should not be used to deploy stuff, because we would not be
>>> able to register the Engine in the domain.xml and other important
>>> things.
>>> For CMP, they need a CMPDeployer and with Origin.unload and
>>> Origin.undeploy. they should now when to drop tables or not. Same
>>> for creating with load/deploy
>>
>>
>> We were creating tables when all the rest of the deployment
>> succeeded. If we create tables during CMP jar deploy, but the
>> deployment fails at the end for some reason, the tables are left behind.
>
> no they are not, if the deployment fail, your Deployer's clean method
> will be called and when you receive a clean() call with a Origin.Deploy
> or Origin.Load, you know something went really wrong during deployment,
> and you are being rollbacked

Not always - if the setting is to create the tables but not drop - in v2 we
won't even attempt to create them.

>
>> I think we dropped the tables the 1st thing during the undeploy.
>>
> why do it matter when you drop the tables ?

Because the .sql files and any DDs are still there.
>
>> Also we were able to report a problem during this process without
>> causing the deploy/undeploy to fail.
>>
> sure your clean() method can issue warnings still not failing
> undeployment.

Will we need to remember the messages until then? Can Report accumulate the
messages (and report them even in case of a success)?

thanks,
-marina

>
>> thanks,
>> -marina
>>
>>> jerome
>>>
>>>> Thanks,
>>>>
>>>> - Hong
>>>>
>>>>> 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
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>