On Mon, 10 Sep 2001 18:19, Ulrich Mayring wrote: > Hello, > > we have severe problems here with classloading, which we cannot > reproduce at will. Sometimes jars in the general Avalon lib directory > are not found by a block. Sometimes jars in a block's lib directory are > found by other blocks (even by blocks in another .sar application), > sometimes not even by their own block. Sometimes Avalon loads blocks and > sars in alphabetical order, sometimes not. Something is seriously weird > here and to put my finger on it I'd like to know how and when Avalon > loads libraries in a multi-block, multi-sar environment like this: > > ~avalon/lib > > ~avalon/apps/foo.sar > ~avalon/apps/foo/blocks/block1/lib > ~avalon/apps/foo/blocks/block2/lib > > ~avalon/apps/bar.sar > ~avalon/apps/bar/blocks/block3/lib > ~avalon/apps/bar/blocks/block4/lib > > ~avalon/apps/baz.sar > ~avalon/apps/baz/blocks/block5/lib > > Now, suppose block3 and block5 need the same jar - where do I put it? > What is the general strategy of Avalon loading jars?
The way it is *supposed* to work is the following. The following are included once per JVM <base>/lib/*.zip <base>/lib/*.jar The following are included once per application <base>/apps/<myapp>/lib/*.jar <base>/apps/<myapp>/lib/*.zip <base>/apps/<myapp>/blocks/*.bar At this current stage there is no directory that is "shared" between apps but are loaded multiple times. For instance there is no way to have the same archives loaded into different classloaders at this point. People have requested this so you could have something like <base>/share/*.jar that would be loaded once per app. However at this stage my thinking is we should follow the servlet/ejb specs and they require such dependencies to be specified in the .jars using the jdk1.3 "Optional Package" mechanism. You place something like Extension-List: required1 required1-Extension-Name: excalibur.required1 required1-Specification-Version: 1.0 required1-Implementation-Version: 1.0.2 required1-Implementation-Vendor-Id: org.apache.jakarta required1-Implementation-URL: http://jakarta.apache.org/avalon/excalibur/required1.jar In any jar that depends on this shared library. I am about halfway through implementing the infrastructure for it at the moment but I wont have the chance to finish it in near future. -- Cheers, Pete *-----------------------------------------------------* | Never argue with an idiot, they'll drag you down to | | their level, and beat you with experience | *-----------------------------------------------------* --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
