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