Olaf, If you are interested in seeing my crummy little ECM container for WW2 I can send that to you. However, I want to check out the more sophisticted approach for WW2 that is here: http://jira.opensymphony.com/secure/ViewIssue.jspa?id=22510, however it hasn't been applied I don't think.
Eric > -----Original Message----- > From: Stephen McConnell [mailto:[EMAIL PROTECTED] > Sent: Monday, December 22, 2003 1:02 AM > To: Avalon framework users > Subject: Re: [Merlin] Is there somebody out there? > > > > > Olaf Bergner wrote: > > >First off, I would like to say thank you for your efforts. > It's getting a > >little late now, here in germany at least, so I will take a > closer look at > >your answers tomorrow. > > > > > > > >>-----Original Message----- > >>From: Stephen McConnell [mailto:[EMAIL PROTECTED] > >>Olaf Bergner wrote: > >> > >> > >> > >>>As a proof of concept, I am currently working on > converting a small web > >>>application of mine to merlin. Since the business logic is > completely > >>>separated from the presentation layer I thought about > transforming said > >>>business layer into avalon components to be managed by merlin. The > >>>presentation layer uses webwork2 which I find to be a > great solution and > >>>thus I would be very reluctant to discard it. > >>> > >>> > >>> > >>Just a note - I'm actually interested in the potential of embedding > >>merlin inside webwork. > >> > >> > > > >So am I. Webwork is a great, lightweight solution to > building a flexible > >presentation layer. What's more, I do recall a preliminary > solution to > >embedding custom component containers into webwork2 being > mentioned on the > >mailing list a few weeks ago. In this particular case, > discussions were > >spurred by the prospect of being able to utilize the spring > framework. > >Still, it goes to show that there's interest in adopting other IOC > >solutions. > > > > Eric Pugh was talking to me about this the other day - sounds > like some > there could be some value in digging deeper into this. > > > > > > >>>(1) I have to set up an embedded merlin > kernel/container/whatever (well, > >>>what exactly do I have to set up?) in a servlet. > >>> > >>> > >>> > >>You need to setup either: > >> > >>(a) an embedded kernel, or > >>(b) include you web app in a merlin container > >> > >> > >> > >>>Is there some canonical way of doing so? Probably not. > >>> > >>> > > > >For the time being, I would rather opt for (a) ;) In the > long run, I would > >probably be all for (b). > > > > > > > >>Yes there is (for both). > >>If you embedding the kernel in a webapp - its reasonably > strait forward > >>and there are a few people who have already done this with > Merlin 3.0 > >>and with the new 3.2 snapshot (which makes the embedding > process a lot > >>cleaner). If you go for the second option - then Timothy's email > >>provides a good summary. > >> > >> > > > >Yes, I had a look at the code under web/ prior to posting to > this list, but > >it's - as you realize - quite the opposite of what I am > trying to do right > >now, namely embedding merlin into an existing solution. > > > > Yep - the embedding in a web-app is something that can be > done now that we > have the general bootstrapping model sorted out. In fact > I've just done > this earlier today (see merlin/kernel/servlet) - its a working > work-in-progress but you should get the idea of what's happening. > > > > > > >>>(2) I will have to store a reference to this merlin thingy > in the JNDI > >>>context or servlet context. What exactly would I put there? > >>> > >>> > >>> > >>Typically you would put either: > >> > >>(a) the kernel instance, or > >>(b) the root block, or > >>(c) a specific named block, or > >>(d) a custom service manager that wraps (a, b or c) > >> > >> > > > >Referring to (b) I do realize that the code in > AbstractMerlinTestCase seems > >to imply that a given kernel's root block makes for a good > entry point into > >the merlin world. Am I mistaken in this? > > > > No your not mistaken. > The root block provides you with access to the meta-model and > the runtime > state. Through the metamodel you can add containers, > compoents, etc. and > control block deployment and decommissioning. > > >If not, what exactly - in code, if > >possible ;) - do I gain from obtaining a reference to such a > block? Is it > >possible to ask a block for a (named) component managed by > this block, i.e. > >something along the lines of > > > > final CustomComponent component = (CustomComponent) > block.resolve() ? > > > > Invoking resolve() on a block returns a proxy exposing the services > exported > by the block. Typically you will do locate( path ) to get a block or > appliance > and then resolve aginst the reurrned appliance. > > >And (c) seems to imply that there is some way of asking > merlin not only for > >the root block but for a specific named block. Is this true, > and if so, how > >would I get such a named block? > > > > > > Example.: > > Appliance appliance = m_root.locate( "/my-container/fred" ); > MyService service = (MyService) appliance.resolve(); > > Or, you can use relative addresses; > > Block myBlock = (Block) m_root.locate( "my-container" ); > Appliance appliance = myBlock.locate( "fred" ); > MyService service = (MyService) appliance.resolve(); > > > > > > > >>Also keep in mind that the Directory Project are working on a JNDI > >>InitialContextFactory that includes an embedded Merlin > instance (part of > >>the Eve product) so this could also be leveraged (maybe - > we would need > >>to check with Alex on this). > >> > >> > > > >This sounds exiting, yet I never heard about the Directory > Project, nor Eve. > >Any links? > > > > > > The Apache Directory project is an incubator project that is > a result of > the > import of the SF ldapd project. At this time they don't have > an Apache site > in place but there is info on the old SF site at this address: > http://sf.net/projects/ldapd - aside from that there is the > directory > project > mailing list - and naturally - Alex can provide lots of > additional info. > > > > > > >>How much control do you have over what resources are made > available to > >>the Action? Does it reference the request/session/app > context? Can you > >>supply parameters? Setting up a servlet to recieve a > block, or even a > >>specific set of services is not so hard - so supply on info to the > >>Action is the primary question. > >> > >> > > > >Webwork2 - I cannot comment on webwork1 - allows very easy access to > >page/request/session/application context. What's more, > Action classes may > >well easily be parameterized, either statically via params > declared in > >xwork.xml or dynamically using xwork's concept of the OGNL > value stack. This > >is not an issue. > > > > > > Good. > > > > > > >>>These questions are probably rather trivial, but the available > >>> > >>> > >>documentation > >> > >> > >>>concentrates on solutions which live entirely within merlin. > >>> > >>> > >>This leads to > >> > >> > >>>the impression that merlin is a rather closed system which does > >>> > >>> > >>not easily > >> > >> > >>>allow interfacing with "outside" code. > >>> > >>> > > > > > > > >>Ouch! > >> > >> > > > >I do honestly think that merlin is one of the most > impressive pieces of > >software I have ever seen. This is not intended as casual > flattery, but I > >mean it. You did a great job. That being said, I just wanted > to illustrate > >how a non-expert programmer like me might feel repelled simply by the > >inability to easily interface with merlin. While a more experienced > >programmer will probably feel confident with letting do > merlin most of the > >work, and will be able to think of ways to achieve this, > novices - or people > >migrating an existing app - might find themselves asking > questions like > >"Now, I spent a considerable part of my live building this ultimate > >user-manager, perfectly secure and what not, and now it's > gone to live > >somewhere else?". > > > > To-date the documetation on Merlin has focussed on usage by > the component > developer and assembler. The documetation concerning usage > of internal > api is not in place - for example - how to embed merlin - manipulation > of the metamodel, etc., etc. > > > > >>Not at all - the Merlin system provides everything you need > to do what > >>your talking about. Its just that the focus has been on > the core with > >>respect to documetation. A working embedded servlet > example is somwhere > >>on the shortlist - and an overall Avalon HTTP solution is > high up on the > >>agenda. But even higher are the subjects of a new release, the > >>profiling aspects (which link into JMX), subsystems > replacement (e.g. > >>logging), etc. But these itrems also play into the HTTP > space in that > >>they are central to the notion of turning Merlin into a web server > >>simply by adding the right facilities. > >> > >> > > > >So much to do, so little time ;) Just try to keep your head > one inch above > >the surface. Honestly, while not being an expert in this > field, I do feel > >that JMX would be a viable road to follow. How about utilizing the > >commons-modeler package? > > > > > > It's been a long while since I looked a commons-modeler. > WOuld it help at > tool level (e.g. JMX generation of descriptors etc. or am I totaly off > track)? > > > > > > >>(a) dynamic service aquisition is[n't] available yet (i.e. > lookup of a > >>service without declaring a dependency) bu this is easy to do if you > >>emabedding merlin > >> > >> > > > >Could you elaborate on this? > > > > If you have access to a block then your basically emprowered > to do a lot > of stuff. You can reach in a locate nested blocks, appliance > instance, > resolve blocks and/or applicaes to services, manipulate the > meta model, > decommission component, modify configurations, recomission, etc. > However - this is deep into the internals. Its basically what Merlin > uses to do its stuff. If fact - the "merlin" content is > rather thin - > the real content is in the composition and activation packages. > > Cheers, Steve. > > -- > > Stephen J. McConnell > mailto:[EMAIL PROTECTED] > > |------------------------------------------------| > | Magic by Merlin | > | Production by Avalon | > | | > | http://avalon.apache.org/merlin | > | http://dpml.net/ | > |------------------------------------------------| > > > > > > --------------------------------------------------------------------- > 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]
