On 09/29/2009 04:55 PM, Manik Surtani wrote:
</snip>
Transport [2] is an interface that wraps up the JGroups Channel (among
other things), and the default (only?) implementation so far is the
JGroupsTransport [3]. Now one thing we can do to support channel
injection is to actually support Transport injection. This way a
Transport can be constructed (simple constructor), the JGroups channel
set, and the transport passed in to a GlobalConfiguration instance
(setter TBD), which is then in turn passed to a DefaultCacheManager
constructor [4].
The problem with this approach though, is that it will only work for
programmatic configurations. To support declarative configurations as
well, we'd need to override the relevant DefaultCacheManager
constructors [5] [6] [7] [8] to accept a Transport as well. But this
pollutes the CacheManager API, in my opinion.
So, how important is it that a running channel is used to override
something defined in XML?
Hmmmm, not sure I understand what you mean by declarative configurations
here. I'd imagine AS, apart from being able to provide it's own
Transport programatically, it could do do something like this in the
Infinispan configurations running on AS:
<transport transportClass="org.jboss.as.infinispan.JGroupsTransport"
...
And within that implementation, lookup the JGroups transport in AS and
return what the Transport interface mandates.
The above example is what I understand by declarative.
--
Galder ZamarreƱo
Sr. Software Engineer
Infinispan, JBoss Cache