On Jan 3, 2007, at 3:28 PM, David Blevins wrote:

So this kind of idea has been in my head for a while. Basically, the idea is for an interactive assembler implementation which people could call to add/remove containers, resources, and beans at runtime. We'd also use it to support other services which could now also do the same.

The classic assembler is a one-shot builder, it constructs everything and it's job is done. What I'm imagining the Dynamic Assembler to be is more of an API for people who want to make calls to build up and add to the container system at runtime. It'd leverage the InfoObject tree we have now to allow people to do things like:

addContainer(ContainerInfo info)
addEjbJar(EjbJarInfo info)
addResource(ResourceInfo info)

There would be equivalent methods for removing any of the above. We might even have equivalent overloaded versions that might look like this:


Ok.... Take a look at the heavily reworked Assembler class:

http://svn.apache.org/repos/asf/incubator/openejb/trunk/openejb3/ container/openejb-core/src/main/java/org/apache/openejb/assembler/ classic/Assembler.java

It should be good to go methods wise. I basically refactored the classic assembler till it looked like the DynamicAssembler I had envisioned. Partway there I was hoping we might come out the other end with one assembler and wouldn't have to maintain two or throw away one. That turned out to be the case, our classic assembler is the dynamic assembler. We may want to rename the package, but logically it performs every function the old assembler did so maybe not.

addContainer(String id, Class impl, String type, Properties containerProps)
addEjbJar(org.apache.openejb.EjbJar ejbJar)
addEjbJar(URL jarLocation)
addResource(URL jdbcUrl)

The ConfigurationFactory is the class that will have these methods, there not quite there yet but we should be able to do a lot of damage with the combinations of these two things:
  ConfigurationFactory.createService
  EjbJarInfoBuilder.buildInfo

Off to clean up the ConfigurationFactory ....

-David

Reply via email to