Hello,


It seems that by now we do not have a clear idea of how to "connect" JSR77 and JSR88.


For instance, when a J2EE module is deployed by dropping it in the "auto-deploy" folder, ApplicationDeployer (invoked remotely by a JSR88 client in order to perform various deployment operations) needs to be notified. Also, when the JSR77 state of this module changes, ApplicationDeployer needs also to be notified.

ApplicationDeployer needs to be notified in order to track the state (running, stopped), the type (EJB, WAR, EAR et cetera) and various other pieces of information.

Multiple solutions could be implemented in order to "sync" the JSR77 and JSR88 models.

And this is a possible one only based on naming conventions:

Whatever the type of deployment, a MBean matching the pattern "*:role=DeploymentUnit,url=" + ObjectName.quote(url.toString()) + ",*" MUST be created. This is a requirement of the DeploymentController.

This naming convention could be extended to also include a moduleType property, if the deployment is a J2EE module. The value of this property is the ModuleType.toString value of this J2EE module.

Moreover, JSR88 requires a unique module ID and this module ID could also be an additional property (this is even suggested by the specifications).

For instance, if one drops a WAR in "auto-deploy", then the name of the deployment unit could be:
geronimo.deployment:role=DeploymentUnit,url=test,moduleType=war,moduleID=1


This way, ApplicationDeployer "just" have to query the MBeanServer to retrieve all the ModuleType.WAR modules.

ApplicationDeployer also needs to retrieve the state of these J2EE modules and this can be achieved also by using a naming convention: the name of the actual J2EE deployments, which MUST be compliant with JSR77, could also use the moduleType and moduleID additional properties.

This way, ApplicationDeployer "just" have to query the MBeanServer to retrieve the running ModuleType.WAR modules.

I think that the following methods of ApplicationDeployer could be implemented rather easily if one enforces these naming conventions:

public TargetModuleID[] getRunningModules(ModuleType moduleType, Target[] targetList);
public TargetModuleID[] getNonRunningModules(ModuleType moduleType, Target[] targetList);
public TargetModuleID[] getAvailableModules(ModuleType moduleType, Target[] targetList);
public void start(TargetModuleID[] moduleIDList);
public void stop(TargetModuleID[] moduleIDList);
public void undeploy(TargetModuleID[] moduleIDList);


The BIG issue of this solution is that it is based on naming conventions not really easy to enforce.

Another solution is to implement a "standard" monitoring infrastructure in order to register and track the available J2EE modules.

Any preference? Any other idea?

Gianny

_________________________________________________________________
High-speed Internet access as low as $29.95/month (depending on the local service providers in your area). Click here. https://broadband.msn.com




Reply via email to