I've just added a service package to Excalibur scratchpad. The package contains the principal class ServiceLoader which basically loads, configures, contextualizes, services, and initializes components based on a set of supplied jar files. The loader reads in manifest entries to locate available services using the Avalon Block declaration, and builds services using information available in the associated .xinfo resources.
If your interested in this utility, the easiest way to build it is to checkout the apache-avalon-apps/enterprise/tools package and do the following $ ant all $ ant demo What you will see is a couple of service being loaded, executed and disposed of. Nothing dramatic, but very helpful during development in executing and validating implementations. To complete the implementation I really need some assistance in two areas. 1. The implementation includes an Ant task that lets you run a component - however, the set-up of the task is rather painful due to duplicate definition of classpaths - I really need an ant expert to help me out on this one. 2. The ServiceLoader implementation makes a distinction between different types of services based on implementation policy declared in the .xinfo file. At this stage the implementation provides support for TRANSIENT and SINGLETON services. I would have liked the release to have included POOLED services, however, I have not been able to figure out a clean approach to describing an implementation meta-profile for a pooled provider using the Excalibur mpool interfaces. There are two issues I'm running into concerning mpool. First of, ServiceManager and ComponetManager both expose a release operation takes as an argument an Object to be release back to a pool. The ExcaliburComponentManager basically holds references to all pooled objects so it knows which pool to return object to, however, the approach seems awkward. I would prefer an approach where the service manager implementation could locate a pool provider (handler) based on the type of object that is returned. This would require the addition of an operation to one the mpool interfaces to get the base class of the pool factory. The second topic is sorting out a definition of a pool such that a pool implementation can be dynamically created by the ServiceLoader. I figure this could be easily achieved by included a pool factory and initial size info in a implementation profile, however, I'm not using pooled providers so I'm hoping someone else can provide guidance here. Documentation of the ServiceLoader is reasonably complete. It is available through the javadoc and on-line at: http://home.osm.net/doc/tools/overview-summary.html (then click on org.apache.avalon.excalibur.service package link) Cheers, Steve. Stephen J. McConnell, OSM sarl digital products for a global economy http://www.osm.net mailto:[EMAIL PROTECTED] -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>