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]



Reply via email to