hi stephen,

the "bin/BLOCK-INF/block.xml" looks like:

<container name='econ'>

   <classloader>
     <classpath>
       <repository>
         <resource id="avalon-framework:avalon-framework-impl" version="4.1.5"/>
       </repository>
     </classpath>
   </classloader>

   <component name='hello' class='tutorial.impl.HelloComponent'/>

</container>

in HelloComponent.xinfo there is:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE type PUBLIC "-//AVALON/Type DTD Version 1.0//EN" 
"http://avalon.apache.org/dtds/meta/type_1_1.dtd"; >

<type>
  <info>
    <name>hello</name>
    <version>1.0.0</version>
    <lifestyle>singleton</lifestyle>
    <collection>hard</collection>
  </info>
  <dependencies>
    <dependency key="random" type="tutorial.RandomGenerator" version="1.0.0"/>
    <dependency type="tutorial.Identifiable"/>
  </dependencies>
</type>

and the concole shows:

[DEBUG  ] (kernel.logger): logging system established
[DEBUG  ] (kernel.logger): adding category [kernel]
[DEBUG  ] (kernel): logging system established
[DEBUG  ] (kernel): repository established: C:\Dokumente und 
Einstellungen\Stepper\.avalon\repository, http://www.dpml.net/,
http://www.ibiblio.org/maven/
[DEBUG  ] (kernel.logger): adding category [kernel]
[INFO   ] (kernel): info report
-----------------------------------------------------------
Merlin Kernel Environment Listing
-----------------------------------------------------------

  ${user.dir} == C:\develop\workspace\MerlinTest
  ${user.home} == C:\Dokumente und Einstellungen\Stepper

  ${avalon.repository.cache} == C:\develop\tools\merlin\system
  ${avalon.repository.online} == true
  ${avalon.repository.hosts} == http://www.dpml.net,http://www.ibiblio.org/maven

  ${merlin.lang} == null
  ${merlin.home} == C:\develop\tools\merlin
  ${merlin.system} == C:\develop\tools\merlin\system
  ${merlin.config} == C:\develop\tools\merlin\config
  ${merlin.kernel} == file:/C:/develop/tools/merlin/config/kernel.xml
  ${merlin.logging.implementation} == 
artifact:avalon-logging/avalon-logging-logkit-impl#1.0.0
  ${merlin.logging.config} == null
  ${merlin.runtime} == artifact:avalon-activation/avalon-activation-impl#2.0.0
  ${merlin.override} == null
  ${merlin.dir} == C:\develop\workspace\MerlinTest
  ${merlin.temp} == C:\DOKUME~1\Stepper\LOKALE~1\Temp
  ${merlin.context} == C:\develop\workspace\MerlinTest\home
  ${merlin.anchor} == C:\develop\workspace\MerlinTest
  ${merlin.info} == true
  ${merlin.debug} == true
  ${merlin.audit} == false
  ${merlin.server} == true
  ${merlin.autostart} == true
  ${merlin.code.security.enabled} == false
  ${merlin.deployment.timeout} == 1000
  ${merlin.repository} == C:\Dokumente und Einstellungen\Stepper\.avalon\repository
  ${merlin.repository.hosts} == http://www.dpml.net/,http://www.ibiblio.org/maven/
  ${merlin.deployment} ==

-----------------------------------------------------------
[DEBUG  ] (kernel): building application model
[DEBUG  ] (kernel.logger): adding root category
[DEBUG  ] (kernel.logger): adding root category
[DEBUG  ] (kernel.logger): adding root category
[DEBUG  ] (classloader): base: ${merlin.dir}
[DEBUG  ] (classloader): classpath:
[DEBUG  ] (classloader.types): type install count: 0
[DEBUG  ] (classloader.types): type registration complete
[DEBUG  ] (kernel): state: initializing
[DEBUG  ] (kernel): kernel established
[DEBUG  ] (kernel): state: initialized
[DEBUG  ] (kernel): install phase
[DEBUG  ] (kernel): customize phase
[DEBUG  ] (kernel): startup phase
[DEBUG  ] (kernel): application assembly
[DEBUG  ] (kernel): state: assembly
[DEBUG  ] (): assembly phase
[DEBUG  ] (kernel): application deployment
[DEBUG  ] (kernel): state: deployment
[DEBUG  ] (kernel): state: started
[DEBUG  ] (): including composite block: file:bin/BLOCK-INF/block.xml
[DEBUG  ] (): installing: econ
[DEBUG  ] (kernel.logger): adding category [econ]
[DEBUG  ] (kernel.logger): adding category [econ]
[DEBUG  ] (econ): creating child classloader for: [econ]
[DEBUG  ] (econ.classloader): base: ${merlin.dir}
[DEBUG  ] (econ.classloader): classpath: file:/C:/Dokumente und
Einstellungen/Stepper/.avalon/repository/avalon-framework/jars/avalon-framework-impl-4.1.5.jar
[DEBUG  ] (econ.classloader.scanner): scanning: file:/C:/Dokumente und
Einstellungen/Stepper/.avalon/repository/avalon-framework/jars/avalon-framework-impl-4.1.5.jar
[DEBUG  ] (econ.classloader.types): type install count: 0
[DEBUG  ] (econ.classloader.types): type registration complete
[DEBUG  ] (kernel.logger): adding category [econ]
[DEBUG  ] (kernel.logger): adding category [econ.hello]
org.apache.avalon.composition.model.ModelException: Unable to create a nested 
deployment model: hello in the containment model /.
 at
org.apache.avalon.composition.model.impl.DefaultContainmentModelComponentHelper.createComponentContext(DefaultContainmentModelCompon
entHelper.java:150)
 at 
org.apache.avalon.composition.model.impl.DefaultContainmentModel.createComponentModel(DefaultContainmentModel.java:899)
 at 
org.apache.avalon.composition.model.impl.DefaultContainmentModel.createDeploymentModel(DefaultContainmentModel.java:645)
 at 
org.apache.avalon.composition.model.impl.DefaultContainmentModel.addModel(DefaultContainmentModel.java:604)
 at 
org.apache.avalon.composition.model.impl.DefaultContainmentModel.<init>(DefaultContainmentModel.java:182)
 at 
org.apache.avalon.composition.model.impl.DefaultModelFactory.createContainmentModel(DefaultModelFactory.java:330)
 at 
org.apache.avalon.composition.model.impl.DefaultContainmentModel.createContainmentModel(DefaultContainmentModel.java:987)
 at 
org.apache.avalon.composition.model.impl.DefaultContainmentModel.createContainmentModel(DefaultContainmentModel.java:932)
 at 
org.apache.avalon.composition.model.impl.DefaultContainmentModel.createContainmentModel(DefaultContainmentModel.java:1152)
 at 
org.apache.avalon.composition.model.impl.DefaultContainmentModel.addContainmentModel(DefaultContainmentModel.java:574)
 at 
org.apache.avalon.composition.model.impl.DefaultContainmentModel.addContainmentModel(DefaultContainmentModel.java:568)
 at MerlinEmbedder.main(MerlinEmbedder.java:62)
Caused by: org.apache.avalon.composition.model.TypeUnknownException: Unable to locate 
a component type descriptor for the component
class [tutorial.impl.HelloComponent] in the classloader.  Please verify that the 
component classname is correct and that a component
type descriptor is included in a jar file available within the container classloader.
 at 
org.apache.avalon.composition.model.impl.DefaultTypeRepository.getType(DefaultTypeRepository.java:255)
 at 
org.apache.avalon.composition.model.impl.DefaultTypeRepository.getType(DefaultTypeRepository.java:220)
 at
org.apache.avalon.composition.model.impl.DefaultContainmentModelComponentHelper.createComponentContext(DefaultContainmentModelCompon
entHelper.java:125)
 ... 11 more

does this help further?

/eike


"Stephen McConnell" <[EMAIL PROTECTED]> schrieb im Newsbeitrag news:[EMAIL PROTECTED]
> The above line looks like a problem in the making.  The
> "merlin.deployment" property is used when you want to add a set of
> blocks via properties (the merlin.deployment should be a comma separated
> set of block urls).  But for the purposes of this example - its not
> needed because your adding a block url explicitly a few lines down.
>
> Instead you may want to replace the line with the following criteria
> modifiers.
>
>       criteria.put( "merlin.debug", "true" );
>       criteria.put( "merlin.info", "true" );
>
>
> >     DefaultKernel kernel = (DefaultKernel) factory.create(criteria);
>
> So assuming you have removed the merlin.deployment line, the result of
> the above would be an empty root container.
>
> >     ContainmentModel containmentModel = kernel.getModel();
> >     //    URL blockURL = new URL("file:bin/BLOCK-INF/block.xml");
> >     //    ContainmentModel block = containmentModel.addContainmentModel(blockURL); 
> >    // <====== EXCEPTION 2
> >     //    block.commission();
>
> You need to add something to your container - so I recommend you
> uncomment the comments .  Basically all that is happening is that your
> getting a reference to the root model, and requesting the addition of a
> sub-container based on the block referenced by the url.
>
>       ContainmentModel containmentModel = kernel.getModel();
>       URL blockURL = new URL("file:bin/BLOCK-INF/block.xml");
>       ContainmentModel block =
>         containmentModel.addContainmentModel(blockURL);
>
> With the debug policy turned on you should see some messages about the
> registration of component types (whatever is in the supplied block.xml).
>   If the next step produces errors then its very probably an issue with
> the contents of the block.
>
>       block.commission();
>
> Just for reference - can you post the content of block.xml and any
> exception you get.





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to