I'm on a project now that is using ATG Dynamo. While I don't like
Dynamo so much, I do think there IoC container, Nucleus, while very
simple, is pretty nice. I especially like the way it handles
namespacing. I was just wondering if the list had any experience with
it/opinions on it? It has been around since 1997 and handles
constructor-based and setter-based injection. I still prefer
Spring...but I do think that Nucleus has some ideas worth looking at.
In a nutshell, the container is provided a list of folders to use a
its search path. The folders contain .properties files that hold the
bean definitions (one file per bean). The location of the file in the
folder + the file name (minus .properties) becomes the bean's fully
qualified name. For example, if you have /com/foo/Test.properties,
then the container has a bean whose id is /com/foo/Test and the bean
is defined by the properties in the file. There is a special $class
property that identifies the class to instantiate, then the other
properties are injected into the bean. You can refer to other beans
in the container too:
dataSource=/com/foo/DataSource
If a bean definition is located in multiple folders in the search
path, the files are combined in memory...where properties defined
later will overwrite those defined earlier in the path.
There is also a lifecycle the beans can participate in, but they
require the use of Marker Interfaces.
Pretty much the entire Server is built on top of Nucleus. There is an
admin console that you can use to browse the container at runtime and
modify the values (configured and live) for the beans (even the beans
for webapps). I keep seeing it as a cross between JNDI, IoC
container, and JMX...at least conceptually. It sounds a bit in the
same vein as what is happening with Geronimo (at least from the very
little I've heard).
Again, just wondering what other people thought. I'd never heard of it
before 2 weeks ago even thought its been around for 8 years. I guess
that should be expected since it is proprietary and specific to ATG.
I really think it would have served ATG better to open source Nucleus
and Repository (their ORM framework...similar to hibernate). As it
stands there is a huge learning curve for developers coming
in...having it out there would have reduced that some...if people
picked it up and liked it that is ;).
If interested, you can read the details at
http://www.atg.com/repositories/ContentCatalogRepository_en/manuals/ATG7.0/dynprog/index.html
Chapter 2.
James
|