> Yo!

hi stephen,

> After adding the model via something like the model.addContainmentModel(
> url ) operation or as your describing above - what you have is a new
> sub-model within the container - however, the sub-model isn't wired-up
> yet.  Once you have added all of the models you want you need to
> commission the model.  Commissioning the model results in the automatic
> assembly (wiring) of consumer components with provider components and so
> on.  Once commissioned you can safely proceed with component
> instantiation.
>
> For example for a container:
>
>      ContainmentModel model = kernel.getModel();
>      ContainmentModel test = model.addContainmentModel( myBlockUrl );
>      test.commission();
>
> Commissioning of a container results in the automatic deployment of any
> components that have startup policy set to true, or any components
> implied by the consequence of assembly.
>
> With a commissioned container you can go ahead and access actual
> component models from the container, create new component instances,
> etc.  The dynamics tutorial contains details on how to do this,
> including dynamic re-configuration of component models and so on.

i tried to merge some lines from the dynamics tutorial:

    InitialContextFactory initial = new DefaultInitialContextFactory("merlin");

    File home = initial.getHomeDirectory();
    initial.setCacheDirectory(new File(home, "system"));
    InitialContext context = initial.createInitialContext();

    String spec = "artifact:merlin/merlin-impl#3.3.0";
    Artifact artifact = Artifact.createArtifact(spec);
    Builder builder = context.newBuilder(artifact);

    Factory factory = builder.getFactory();
    Map criteria = factory.createDefaultCriteria();
    criteria.put("merlin.deployment", new String[] { "bin"});
    DefaultKernel kernel = (DefaultKernel) factory.create(criteria);

    ContainmentModel containmentModel = kernel.getModel();
    //    URL blockURL = new URL("file:bin/BLOCK-INF/block.xml");
    //    ContainmentModel block = containmentModel.addContainmentModel(blockURL);    
// <====== EXCEPTION 2
    //    block.commission();

    ServiceModel[] services = containmentModel.getServiceModels();
    ReferenceDescriptor reference = new 
ReferenceDescriptor(Identifiable.class.getName());
    ComponentModel componentModel = (ComponentModel) 
containmentModel.getModel(reference);    // <====== EXCEPTION 1

    componentModel.commission();
    Identifiable ident = (Identifiable) componentModel.resolve();

    System.out.println("====> " + ident.getIdentity());

but i get an exception:

[INFO   ] (econ.hello): initialization
[INFO   ] (econ.random): initialization
[INFO   ] (econ.random): processing request
[INFO   ] (econ.hello): received random value: 1875652455
[INFO   ] (econ.ident): contextualize
[INFO   ] (econ.hello): using identifiable: /econ/ident
org.apache.avalon.composition.model.ProviderNotFoundException: Unable to locate a 
service provider for the reference: [
tutorial.Identifiable:1.0.0].
 at
org.apache.avalon.composition.model.impl.DefaultContainmentModelAssemblyHelper.findServiceProvider(DefaultContainmentModelAssemblyHe
lper.java:388)
 at
org.apache.avalon.composition.model.impl.DefaultContainmentModelAssemblyHelper.findServiceProvider(DefaultContainmentModelAssemblyHe
lper.java:332)
 at 
org.apache.avalon.composition.model.impl.DefaultContainmentModel.getModel(DefaultContainmentModel.java:755)
 at de.escnet.signalling.client.MerlinEmbedder.main(MerlinEmbedder.java:68)

if i uncomment what you have suggested, i get another exception:

[INFO   ] (econ.hello): initialization
[INFO   ] (econ.random): initialization
[INFO   ] (econ.random): processing request
[INFO   ] (econ.hello): received random value: -1892010755
[INFO   ] (econ.ident): contextualize
[INFO   ] (econ.hello): using identifiable: /econ/ident
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 de.escnet.signalling.client.MerlinEmbedder.main(MerlinEmbedder.java:61)
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

i find this all quite confusing. thank you very much, that you
keep responding that fast and detailed!!!

/eike





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

Reply via email to