portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Barnhill William" <barnhill_will...@bah.com>
Subject FYI: work in progress
Date Sat, 24 Jan 2004 16:50:07 GMT
Hello all,

Just so everyone knows, I am currently working on a commons-services 
package,  to attempt to do for service frameworks what commons-logging 
has does for logging frameworks. It is progressing, but not yet ready to 
publish. I plan to post code and docs on my web site when it's ready.  
I'll provide the URL at that time.  My aim is for this to be accepted 
into the Jakarta commons sandbox, if I can develop sufficient interest 
in the package.

The purpose of the package is to provide a common services API suitable 
for use in an enterprise environment.  This package would perform the 
same role for various service frameworks that te Jakarta commons-logging 
package does for logging frameworks.
The requirements I am currently working from follow, and comments are 
both welcome and appreciated:
1. MUST eat it's own dogfood when possible :), i.e. MUST user Jakarta 
packages where applicable such as commons-logging and commons-configuration

2. MUST NOT access property files, but instead use commons-configuration

3. MUST have a helper class that has a method to read a property file 
into a commons-configuration HierarchicalConfiguration

4. MUST have a helper class that has a method to write a 
commons-configuration HierarchicalConfiguration into a property file

5. MUST NOT access XML files, but instead use a 
HierarchicalConfigurationXmlReader to access the XML stored within a 

6. MUST not express any knowedge of a particular service framework in 
the core package.

7. Services MUST be requested via a lookup mechanism based on resource 
URIs. The following are the only requirements for the resource URI: (1) 
It is Hierarchial, (2) It is not Opaque.  The specific scheme and path 
meanings are purposely not specified and would be decided outside this 
framework, but the following URI formats are offered for possible use:
   ifc.java:///fully/qualified/pkg/ifcname -- To lookup a service by the 
interface it provides
   ifc.java:///fully/qualified/pkg/  -- to look up a list of services 
that provide interfaces in this package  
   ifc.java:///fully/qualified/pkg/...  -- to look up a list of services 
that provide interfaces in this package and all subpackages  
   role:///role/hiearchary/rolename -- To lookup a service by the role 
that it fulfills
   role:///role/hiearchary/  -- To lookup a list of services that 
fulfill any role at that specified heirarchy level
   role:///role/hiearchary/... -- To lookup a list of services that 
fulfill any role at that specified heirarchy level and any sublevels

8. The interfaces and conceptual purpose of its methods MUST coincide 
with the following statements:
a. ServiceToolkit -- Manages ServiceFactorySource instances and their 
associated metadata
b. ServiceFactorySource -- Maps resource Ids to ServiceFactories, 
providing the ServiceFactories and their associated metadata
c. ServiceFactory -- Provides the ability to request/release service 
instances, based on the passed resource identifier or service id
d. ServiceEventListener -- Event listener for service events, this 
expected to be exposed as a service by event capable components.
e. ServiceEvent -- Encapsulate an event passed to services, includes an 
event identifier URI and a map containing event data.

9. An example implementation of an adapter package MUST be provided that 
uses these interfaces to provide access to a known service framework. 
The initial implementation will be for Avalon's Merlin framework.  Two 
other implementations are planned: Cornerstone, WSIF

Basically this is just to let everyone know my current intent, and that 
my notes on Cornerstone are on hold until after the package is done.
The interfaces and configuration section are almost done, and I have 
started the Avalon adapter package.

As soon as the Avalon adapter package is working I will post URLs to 
sources and binaries for the following packages:
(1) org.apache.commons.services.api.*
(2) org.apache.commons.services.util.*
(3) org.apache.commons.services.avalon.*
(4) org.apache.commons.services.demo.*

Obviously, if I cannot get enough support for including this into the 
commons then I'll need to change the org.apache.commons portion of the 
package names.


Bill Barnhill

To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org

View raw message