Stephen, I was taking a stab at porting over the Turbine Merlin Component service to the latest and greatest. I noticed a lot of SNAPSHOT versions. Should I be looking at the MerlinServlet as the best example to mimic? I worked with it, but am getting exceptions like this:
---- exception report ---------------------------------------------------------- Turbine/Merlin problem. Exception: org.apache.avalon.repository.RepositoryException Message: Unable to establish a factory for the supplied artifact: artifact: [jar: avalon-logging:avalon-logkit-impl;1.0-SNAPSHOT] build: 20040125.130218 factory: org.apache.avalon.logging.logkit.DefaultLoggingFactory source: file:/C:/java/maven/repository/avalon-logging/jars/avalon-logkit-impl-1.0-SN APSHOT.jar repository: cache:.\target, http://dpml.net/, http://ibiblio.org/maven/ ---- cause --------------------------------------------------------------------- Exception: java.lang.NoClassDefFoundError Message: org/apache/log/LogTarget ---- stack trace --------------------------------------------------------------- java.lang.NoClassDefFoundError: org/apache/log/LogTarget java.lang.Class.getDeclaredConstructors0(Native Method) java.lang.Class.privateGetDeclaredConstructors(Class.java:1610) java.lang.Class.getConstructor0(Class.java:1922) java.lang.Class.getConstructor(Class.java:1019) org.apache.avalon.repository.main.AbstractBuilder.createDelegate(AbstractBui lder.java:107) org.apache.avalon.repository.main.DefaultBuilder.<init>(DefaultBuilder.java: 276) It seems like the logging isn't getting set up properly because it needs LogTarget? Which doesn't seem to exist? Basically, I am trying to find the shortest path to getting a working kernel up and running. I'll attach my current .java class for you to see. (note, it is rather rough!). Eric Pugh However, it is being masked by this error: > -----Original Message----- > From: Stephen McConnell [mailto:[EMAIL PROTECTED] > Sent: Sunday, January 25, 2004 11:36 PM > To: Avalon framework users > Subject: Re: [merlin] introduction to embedding > > > Sonu Vijay wrote: > > > Hi, > > > > What does the "merlin.deployment" property exactly > > specify.I read abt it yesterday somewhere on avalon > > site but can't find it now. > > The DefaultFactory class in the merlin/kernel/impl package is > responsible for (a) establishing an initial factory criteria, and (b) > creating a kernel instance using a default or modified criteria > argument. When the DefaultFactory prepares the initial criteria, it > builds up the default values using a combination of: > > - hard coded defaults > - defaults derived from merlin.properties files in > * MERLIN_HOME/merlin.properties > * ${merlin.dir}/merlin.properties > * ${user.home}/merlin.properties > - system properties > > Property names and the corresponding allowable values are declared in > the following page: > > http://avalon.apache.org/merlin/merlin/kernel/properties.html > > The merlin.deployment property defines a comma separated sequence of > blocks to be included in the root merlin application block on startup. > > Stephen. > > > > > > > thanks > > > > > > --- Stephen McConnell <[EMAIL PROTECTED]> wrote: > > > >>Mathews Julien wrote: > >> > >> > >>>Yeah Stephen, This helps in making things more > >> > >>clear. > >> > >>>Stephen wrote: > >>>The > >>> > >>> > >>>>avalon-repository > >>>> system uses artifact references as the key to > >> > >>locating meta data > >> > >>>> about embedded classloaders. The classloader > >> > >>meta data is > >> > >>>> maintained as a properties file with the .meta > >> > >>extension. For > >> > >>>> example the above artifact meta address > >> > >>translates to: > >> > >>>>The content of the meta file is automatically > >> > >>generated using the > >> > >>>>avalon-plugin avalon:artifact goal. > >>> > >>> > >>> > >>>How does the avalon:artifact goal generate the > >> > >>meta information in the > >> > >>>.meta info. I mean where does is get the info abt > >> > >>the "implementation > >> > >>>dependencies" etc. > >>> > >>> > >>>>From some project.xml or some meta tags or where > >> > >>? > >> > >>The avalon:artifact goal scans the project PMC > >>(Maven's project > >>definition) and looks at all of the dependencies > >>that are listed. For > >>each dependency, the plugin looks for a declared > >>dependency properties > >>and does some special processing for properties > >>named > >>"avalon.classloader". For example the following is > >>a dependency > >>declaration within the merlin/kernel/impl > >>project.xml: > >> > >> <dependency> > >> <groupId>merlin</groupId> > >> <artifactId>merlin-api</artifactId> > >> <version>3.3-SNAPSHOT</version> > >> <properties> > >> > >><avalon.classloader>spi</avalon.classloader> > >> </properties> > >> </dependency> > >> > >>The plugin will look for the property name > >>"avalon.classloader" and if > >>the property value is "api" then the dependency will > >>be loaded into an > >>api classloader. If the property is "spi" the > >>dependency will be loaded > >>into a spi classloader which is created as a child > >>of the spi loader. > >>If no "avalon.classloader" property is declared that > >>dependency will be > >>loaded into a impl classloader which is created as a > >>child of the spi > >>loader. > >> > >>The avalon-repository bootstrapping system will > >>attempt to construct a > >>classloader chain that looks like the following: > >> > >> |----------------------| > >> | api classloader | > >> |----------------------| > >> ^ > >> | > >> |----------------------| > >> | spi classloader | > >> |----------------------| > >> ^ > >> | > >> |----------------------| > >> | imp classloader | > >> |----------------------| > >> > >> > >> > >>>Could you pls explain a little bit. > >> > >>The avalon:artifact source file is a jelly script in > >> > >>avalon/util/plugin/plugin.jelly. > >> > >>Cheers, Stephen. > >> > >> > >> > >>>Thanks > >>>Mathews > >>> > >>> > >>> > >>> > >>>>From: Stephen McConnell <[EMAIL PROTECTED]> > >>>>Reply-To: "Avalon framework users" > >> > >><[EMAIL PROTECTED]> > >> > >>>>To: Avalon Users <[EMAIL PROTECTED]> > >>>>Subject: [merlin] introduction to embedding > >>>>Date: Sun, 25 Jan 2004 16:17:19 +0100 > >>>> > >>>> > >>>>This is a little introduction to embedding > >> > >>Merlin. The descriptions > >> > >>>>starts off with an overview of the Avalon > >> > >>Repository bootstrapping > >> > >>>>system - which at the end of the day is the core > >> > >>embedding technology > >> > >>>>used within the merlin platform. > >>>> > >>>>Simple Embedding Example: > >>>>------------------------- > >>>> > >>>>1. creating an initial context > >>>> > >>>> File cache = new File( "my-cache" ); > >>>> InitialContext context = new > >> > >>DefaultInitialContext( cache ); > >> > >>>> The above code defines a cache directory for > >> > >>the repository > >> > >>>> system to use when loading resources needed in > >> > >>your embedded > >> > >>>> application - and provides the directory as an > >> > >>argument when > >> > >>>> creating a new InitialContext object. The > >> > >>InitialContext is > >> > >>>> you hook into the repository system and the > >> > >>embedding machinery. > >> > >>>>2. declare what you want to embed > >>>> > >>>> String spec = > >>>> > >> > > "artifact:avalon-logging/avalon-logkit?version=1.0-SNAPSHOT" > > > >>>> Artifact artifact = > >>>> Artifact.createArtifact( spec ); > >>>> > >>>> An artifact is a logical reference to a jar > >> > >>file (or other type > >> > >>>> of resource) that the repository can access. > >> > >>The avalon-repository > >> > >>>> system uses artifact references as the key to > >> > >>locating meta data > >> > >>>> about embedded classloaders. The classloader > >> > >>meta data is > >> > >>>> maintained as a properties file with the .meta > >> > >>extension. For > >> > >>>> example the above artifact meta address > >> > >>translates to: > >> > >>>> > >> > > [host]/avalon-logging/jars/avalon-logkit-impl-1.0-SNAPSHOT.jar.meta > > > >>>> The content of the meta file is automatically > >> > >>generated using the > >> > >>>> avalon-plugin avalon:artifact goal. Two real > >> > >>examples are attached > >> > >>>> (the logkit factory and the merlin factory > >> > >>meta). > >> > >>>> The contents of the meta file includes: > >>>> > >>>> * a ordered list of jar files that are > >> > >>required to > >> > >>>> construct a classloader for the embedded > >> > >>application > >> > >>>> * the name of a factory class to be used as > >> > >>the embedded > >> > >>>> instance creator > >>>> > >>>>3. create the factory > >>>> > >>>> Using the initial context and the artifact you > >> > >>now have everything > >> > >>>> you need to create you embedded instance. > >>>> > >>>> Builder builder = m_context.newBuilder( > >> > >>artifact ); > >> > >>>> Factory factory = builder.getFactory(); > >>>> > >>>> Behind the scenes the avalon-repository system > >> > >>has gone off, pulled > >> > >>>> down the meta data, downloaded and cached all > >> > >>of the classloader > >> > >>>> entries, constructed a new classloader, and > >> > >>instantiated the > >> > >>>> factory. > >>>> > >>>>4. parameterizing the factory > >>>> > >>>> The factory object is the central entry point > >> > >>of > > > > === message truncated === > > > > > > __________________________________ > > Do you Yahoo!? > > Yahoo! SiteBuilder - Free web site building tool. Try it! > > http://webhosting.yahoo.com/ps/sb/ > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > -- > > |------------------------------------------------| > | Magic by Merlin | > | Production by Avalon | > | | > | http://avalon.apache.org/merlin | > | http://dpml.net/merlin/distributions/latest | > |------------------------------------------------| > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
