Currently we have a file system based configurator for creating config
contexts which loads up axis2.xml and does various things. Unfortunately
its doing a bit more than what its name advertises. Here's a refactoring
that cleans stuff up properly:

- create a new configurator called the ClassPathConfigurator which works
as follows:
        - finds the default axis2.xml from the classpath
        - finds modules from the classpath
        - no services deployed by the configurator: so this is primarily for
stand-alone client scenarios
NOTE: This is basically how our client side works now. The idea is to
move the code to a specific configurator to clean up the pieces.

- create a configurator called URLConfigurator which works as follows:
        - constructor takes a URL to the axis2.xml file (or whatever the
name .. basically the URL of a resource which has axis2.xml stuff)
                - if the URL is null, then a default axis2.xml is loaded from 
the
classpath (as above)
                [This may seems a bit weird, but its designed to make the 
simple case
simple: in many cases there's no need to change the default axis2.xml.]
        - configurator has a method called loadRepository which takes a URL to
the repository
                - if the URL is a file: URL, then we treat that as we do now 
and load
the stuff off the file system .. and support hot deployment etc.
                - if the URL is another kind of URL, then we assume the shape 
of the
repository pointed to is as follows:
        .../
                services/
                        services.list
                        service1.aar
                        service2.aar
                        ...
                modules/
                        modules.list
                        module1.mar
                        module2.mar
                        ...

                - Note that we need the services.list and modules.list files 
because
there's no way to generically get a list of stuff from a URL to a
directory. (And no, we're not going to do screen scraping.)
                - The services.list and modules.list files are simply naming 
the .aar
and .mar files respectively one per line. 

This is basically a small cleanup ..

Sanjiva.

Reply via email to