I like the idea of separate services through OSGi.
One way to quickly do it would be to create small
webapps concentrating on each use case ...(1)-(4).
Then make these available the same way that
Tomcat makes available its administration webapps.
This would keep ADS's dependencies as they are now,
yet all the use cases would be supported.
The webapps could use SDO as their "Model" layer, and the
DAS as their integration layer.
A Tomcat/Jetty ADS Package could be developed which
preconfigures the two such that the webapps are supported
right out of the box.
Cheers,
- Ole
Alex Karasulu wrote:
For some time now a few people have been discussing embedding an HTTP
service into ApacheDS for
a number of reasons:
(1) to expose a DSML service
(2) host a web based configuration and management interface
(3) for first start configuration
(4) for other self service interfaces useful for directory users
Just this morning I responded to an email from Peter Neubauer regarding
#4 to have a simple
self service application so users can manage various aspects of their
account. Such an application
would be trivial to implement if ApacheDS came with an optional HTTP
service which could be
enabled via it's configuration.
After this email Emmanuel and I had a brief conversation about this. We
discussed how
easy it would be to integrate Jetty with ApacheDS since this was already
done for Triplesec.
Furthermore we discussed how just having the service present would allow
other parties to
extend ApacheDS functionality for custom use in their environments.
I have several things on my plate at the moment but I think I should try
to grok this in the
next day or two just to the open the door to these other possibilities.
Adding this new service to ApacheDS will impose some additional
dependencies since the
service will be optionally started by the server side JNDI provider
using the configuration.
Namely there will be a dependency on Jetty even if this service is not
turned on. There are
several ways to avoid this dependency.
(1) Leverage OSGi to just provide the service in a decoupled fashion
(2) Add a "plugin" mechanism into the server-jndi module to load protocol
providers dynamically at runtime
Both approaches have pros and cons. The first will take time until we
get to OSGi. The
second requires additional work which would be redundant once an OSGi
container is used.
For these reasons I think it might be best if we just add this
dependency for now and refactor
later depending on what happens in the future.
Alex