Alex Karasulu wrote:
John E. Conlon wrote:
Alex Karasulu wrote:
John E. Conlon wrote:
Hi Alex,
Thanks for the comments. See inline for responses.
Truly thanks for your effort to push OSGi along. I really want to go
this route but I want all our bases covered.
Having read your response and Emmanuel's, I think I would like to
wait until we have a *non*-snapshot release of the OSGi plugin in
the Maven repository to use before tackling this in May or better
yet June. I don't want the build to depend on SNAPSHOT plug-ins
because I would not allow a production release so long as we did.
We can re-evaluate this and prep the team by then so we can all
participate in this OSGi aim together. It would be nice to have you
involved with the guts of ApacheDS as well as being on the periphery
with the OSGi effort and likewise I'd like to see the rest of the
team more involved with the OSGi effort. I'd like to also see if
you can get OSGi to give us certain things like JMX for free so we
can better control and instrument the server.
Although I have seen much activities on JMX done at Felix, I have not
used any JMX with the server. On the other hand we have a simple
command line interface that we use for searching and one for loading
ldif directly into the backend. (Without an LDAP server.)
Can you elaborate on the we? Is this your company?
No its we, Apache DS.
There is a sandbox project called apache-core-felix-tui that offers a
felix text user interface for simple searching and loading ldif into a
jndi backend.
Another thought - more radical though (its late) is to run our bundles
in the same OSGi environment (Felix or Eclipse) with LDAPStudio. LDAP
Studio is after all an Eclipse RCP - "Composed of several Eclipse (OSGi)
plugins, LDAP Studio can be easily upgraded with additional plugins. "
I want to know what our benefits are going to be and who is going to
be involved with making sure we get those benefits. Also what's the
deal with Spring-OSGi? Is there some advantage to be gained there?
Do we get the best of both worlds?
That's the goal of the Spring-OSGi - An IOC within the module (aka
jar) that also manages registered service dependencies and service
publications between the modules (bundles). Here is the home site:
http://www.springframework.org/osgi
In the sandbox work, the core server module utilizes a similar
server.xml to the familiar one, but with a few new Spring-OSGi
namespace enhancements.
The core server bundle's primary purpose is to offer to all other
bundles an InitialContextServiceFactory service. (A seperate bundle
offers the LDAP service.) It is still spring and pojo mostly
though. Within the project for testing purposes OSGi can effectively
be ignored, on just uses plan old JUnit or the Spring context
extensions. As mentioned before 'in container testing' is done in an
integration suite project that parallels the first. (Bundle/jars have
to be built first to test them.)
Do you already have these tests based on Spring-OSGi in place already
to test out the behavior of the bundles?
Not all the bundles but some. LoggingService and Mina have
integrations tests in place. Note Logging Service will most likely be
going away as I have worked with the Ceki to replace it with an OSGi
supported Slf4j (on current slf4j trunk which is at 1.3.0-SNAPSHOT).
Full very nice integration test suite is in place over at the slf4j that
is based on Swing-OSGi.
Also please note that Spring-OSGi API is very much in a state of flux
although the testing APIs seems to be pretty stable.
The big mama test to do is the integration test suite for the
configuration admin service implementation that I committed a few weeks
ago to the sandbox. The configuration admin service sits on top of a
DAOConfigurationStore interface which in our case is a
JndiConfigurationStore implementation. The JndiConfigurationStore
depends on the InitialContextFactory service I described below.
Configuration Admin configurations are persisted in our backend and
these can be created and manipulated via Ldap or the Configuration Admin
APIs. The ConfingAdmin already has a pretty complete set of Unit tests
and Spring integration tests internal to the project but to test this
via the Spring-OSGi OSGi integration test, I will need all the bundles
we (apacheDS) have created to date. Sort of a super integration test.
(PS - My company is using the earlier version of the Configuration Admin
and all the ApacheDS bundles to configure it's secret stuff. ;-) )
Here is what our ApacheDS Spring-OSGi service publication looks like:
<!-- Register the InitialContextFactoryImpl bean as an OSGi service -->
<osgi:service id="initialContextFactory"
ref="initialContextFactoryService"
interface="javax.naming.spi.InitialContextFactory" />
<bean name="initialContextFactoryService"
class="org.apache.directory.osgi.backend.InitialContextFactoryImpl"
destroy-method="destroy"
init-method="init">
<constructor-arg ref="environment"/>
<constructor-arg ref="configuration"/>
</bean>
Benefit that is offered via OSGi is that it makes it easy to move in
either a embedded server or a JNDi reference via properties to a
remote one. (At run time without shutting down the JVM.) Could have
a combination of multiple servers running in the same VM or mixes of
local and remote servers.
Yeah that's cool. I like that.
Let's get your documentation into the Apache confluence under the
1.5 confluence's developer guide area and more people on this team
looking at it and commenting on it.
Will do.
This sound good?
No problems on resetting our priorities out to June.
Thanks for understanding.
Alex