On Tue, 6 Jan 2004, Jeremy Boynes wrote: > Yeah, sorry - it's taking longer than expected but I have to work as > well :-)
If you think it's going to be a problem, we could always put it in a branch so more people can work on it before it's "done". > It is very close to the 88 model. > > There are three phases: "deploy", "distribute" and "run" > > In the "deploy" phase, a ConfigurationBuilder takes a set of URLs and > runs them by a set of Deployers to build a Configuration. This is a > jar-formatted file containing code plus a set of persisted GBeans. I'm > thinking of calling it a "CAR" file - any thoughts? > > Because it is a single file it is easy to copy between nodes (somehow). > The "distribute" phase does just that; it is copied to each target which > then stores in a local ConfigurationStore. > > Once all the distribution has happened, then the various targets can be > started by bringing the Configuration online. This will create a new > classloader, unpersist the GBeans and then start them all (with the > DependencyService sorting out the start order). I guess my concern is that the JSR-88 "distribute" stage (which here seems to be deploy + distribute) should do validation. So around the time of CAR assembly, we want to make sure that all the DDs are valid, all the required code is present, the classes have the right methods and superclasses, all resource refs are resolved, etc. That can be done once, by the ConfigurationBuilder (but it needs a live ClassLoader to do it). Then when we distribute it to servers (however), they may do more validation if there's anything different from server to server (i.e. if there are different security realms per server, they could validate the security mappings, but there may be nothing to do here). Bottom line, when you get to the "run" stage (which I assume corresponds to calling "start" on the JSR-77 MBean), I want the only possible failure to be that some resource that we lazily resolve isn't present at runtime. I don't want you to get that far only to discover that you misspelled the EJB class name in your DD, or whatever. Is that pretty much what you have in mind? Aaron