On 2/14/11 11:14 AM, David M. Lloyd wrote:
On 02/14/2011 11:03 AM, Heiko Braun wrote:
>
> On Feb 14, 2011, at 5:54 PM, David M. Lloyd wrote:
>
>> I think we should strive to modify our
>> subsystem/extension architecture such that there are no inter-subsystem
>> dependencies.
>
>
> Sorry, I had to read your email a second time. Do you really think this will be
possible?
> A typical shared subsystem is the the TransactionManager. How can JCA be left out
> in a custom profile without including this one?
The way we've solved this in other subsystems is by introducing optional
dependencies at the service level. For example if the transaction
subsystem is configured with an ORB present, we configure JTS, otherwise
we do not; if OSGi and Txn are both present, then OSGi exposes the Txn
service.
I'm not 100% certain we can extend this technique to all cases, but I
think we should at least try to. JCA for example would obviously be
quite crippled without JTA. So I do not have an answer to that case;
maybe it suffices to print a warning message in this case. We should at
least explore it before we throw out the idea though.
Let's assume for the sake of argument that we want to expose dependency
info via the management interface. I see here hard dependencies (e.g.
presumably JCA and JTA) and optional. Extensions could register these
dependencies when they initialize. It opens up a can of worms though, as
we'd need a proper language to describe the dependencies.
Thinking out loud here, could we use the module dependency information
for this? Nah, that would just say, e.g. that JCA needs the JTA APIs,
but says nothing about the impl.
--
Brian Stansberry
Principal Software Engineer
JBoss by Red Hat