Block Engine Configuration -------------------------- on
http://avalon.apache.org/sandbox/merlin/meta/model/block/container/index.html
it reads: "An engine is an extended classloader."
that does not make sense to me. I would call it "classloader":
<classloader>
<classpath>
<repository>
<resource id="tutorial:composition-api" version="1.0"/>
</repository>
</classpath>
</classloader>also, what is the actual difference between
<engine>
<library dir=".">
<include name="dist">
<include name="lib">
</library>
</engine>and
<engine>
<classpath>
<fileset dir="./dist">
<include name="*.jar"/>
</fileset>
<fileset dir="./lib">
<include name="*.jar"/>
</fileset>
</classpath>
</engine>? IIUC, the <library/> directive can contain lifecycle extension declarations, whereas the normal <classpath/> does not. So <classpath/> is about making stuff available to components in a block, and <library/> about making stuff available to the block's container (where the container also gets access to the <classpath/> stuff). Right?
I'd just state it like that, and change <library/> to <container-classpath/> or something similar. Perhaps having a <classloader/> and a <systemclassloader/> containing PATH-like structures.
.xprofile and block.xml
-----------------------
I started changing the samples, but it occured to me that the rule is "everything that can be defined in the .xprofile can be overriden inside the <component/> element of a block.xml". What should be added is what the rules are for overriding/merging those, and then the .xprofile settings seperated out. Right?
Where do I find those rules?
Custom containers
-----------------
Embedding fortress is the goal. Step one is including it as a component. That works of course, but I want the components hosted in a fortress container exported and available to its peers in some way.
IOW, I think I want something like
<block>
<info>
<name>merlin-fortress-interop-demo</name>
</info>
<implementation>
<engine>
<classpath>
<fileset dir="lib/fortress">
<include name="avalon-fortress-complete-1.0.jar"/>
</fileset>
</classpath>
</engine> <container name="fortress"
class="org.apache.avalon.merlin.fortress.FortressContainer"> <configuration>
<class>org.apache.avalon.fortress.impl.DefaultContainer</class>
<xconf>
<!-- fortress.xconf contents here -->
</xconf>
<xlog>
<!-- fortress.xlog contents here -->
</xlog>
</configuration>
</container></implementation>
<component name="test1" class="tutorial.FortressCallingComponent" activation="startup">
<dependencies>
<!-- what does this look like??? -->
<dependency key="somethinghostedinfortress" type="Component1"/>
</dependencies></component> </block>
where o.a.a.m.f.FortressContainer creates a Context that is passed to f.impl.DefaultContainerManager to set up a f.impl.DefaultContainer. Idea is simple, how to do it is very blurry. For example:
- what is the minimum contract o.a.a.m.f.FortressContainer should support? Clearly, it will not do everything a 'normal' merlin container instance does. For example, it's not going to support stuff like container nesting. It's just going to provide whatever it is that fortress provides.
- what interfaces should it implement besides Container? The Container interface is all but empty; that can't be right, can it?
- what's the deal with the Merlin DefaultContainer and StandardBlock? There's next to no implementation in DefaultContainer, yet this works in 'some' way 'somewhere'. I have a feeling I'll be wanting to tell lots of assembly and appliance stuff to keep out of the way...
:-$
a few pointers would be nice :d
g'night,
- LSD
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
