Description
Currently, you can only create an Axis2 client that supports addressing, security, etc, if you also create new directories on the client disk, and set axis2_home to point to this repository. I think this affects embedability. It would be great if we could simply pop a module into the classpath. Obviously this isn't much of an issue on the server, but for the client it would make it much easier to embed into other projects.
One proposal on how to do that is to create a new module archiving model and use the Java JAR file Service Provider spec. http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html#Service%20Provider
We could use this with a new interface/impl pair called o.a.a.m.ModuleInfo
{
public String getModuleName();
}
Suppose the module was called foo-1.2
Then the existing loader could look for foo-1.2/lib, foo-1.2/classes, foo-1.2/etc
in other words the MAR format pushed down one level based on the module name.
Now this could simply be in a JAR called foo-1.2.jar (or foo-module-1.2.jar) and the SP stuff would identify the name and version and where to look for it.
This does leave a problem with the remote URL repository. We could maybe figure out how the JAR SP code works and replicate that for a URL based repository, thereby using the same mechanism in both cases.