[jbosscache-dev] Let's make 3.0 backwards compatible
Brian Stansberry
brian.stansberry at redhat.com
Tue Aug 19 15:30:30 EDT 2008
Manik Surtani wrote:
>
> On 19 Aug 2008, at 15:22, Jason T. Greene wrote:
>
>> Manik Surtani wrote:
>>> On 19 Aug 2008, at 06:53, Bela Ban wrote:
>>>> First of all: I don't think there's a need to make 1.x compatible
>>>> with 2.x and/or 3.x. The need is there to make 2.x compatible with 3.x.
>>> I don't know about that. There are still a lot of people who are on
>>> AS 4.x and who won't switch to AS 5.0 for a while to come. Which
>>> means they will be stuck on 1.x APIs. See the forum link that
>>> sparked off this thread
>>
>> Thinking about the 4.x problem, API BC is just part of the problem.
>> Behavioral differences in use by the AS clustering code and hibernate
>> (i.e. AS4 clustering was not written for 3.x), as well as dependency
>> differences (1.4.x uses a different jgroups).
>
> Are there any API deps that hold back users upgrading JGroups in AS as
> well? I'm sure I know the answer to this, but it's late, I'm tired and
> have a presentation to deliver first thing in the morning. :-)
>
I don't think so, but TBH I haven't thought about it for at least a
year. There would be a lot of WARN logging until people changed their
channel configs to get rid of deprecated stuff.
>> The root of the problem here is that the AS is exposing it's
>> internally used APIs, and thereby forcing them on users. If this was
>> not the case (as it is on other container environments), then users
>> could happily deploy JBC 3 on AS4.2, and still use EJB/HTTP clustering
>>
>> The SPI that Brian is planning helps, but it requires that the user
>> change the AS clustering implementation, just to change the version of
>> JBC he/she is using. This could impact other components that share
>> deps (JBoss Messaging).
>>
>> The easiest way to fix this problem, which is done by everyone else,
>> is to put all of the classes used by AS internally under a new
>> namespace (package). It could also be done via a special classloader
>> design, although that would be a massive change, since everyone uses
>> the context loader for everything.
>
> Jarjar, again. I think this really makes sense for included libraries
> we don't want to expose. BEA et al used to do this when including
> xerces, etc., and incompatible versions of xerces ran fine together as a
> result with no classloader gimmickery at all.
>
>> We just might not have a simple solution to deploying on 4.2, besides
>> ripping out the clustering modules.
>>
>>> We could but that would mean some sort of package renaming or class
>>> renaming (e.g., o.j.c.Cache -> o.j.c.Cache3 or o.j.c.3.Cache) and
>>> o.j.c.Cache remains 2.x compatible. Either way, very ugly for anyone
>>> who wants to use 3.x APIs directly.
>>> Specifically, interfaces that have changed include:
>>> - Cache
>>> - Fqn
>>> - EvictionConfig
>>> - Region/RegionManager
>>> - EvictionAlgorithm
>>
>> IMO, we can just make this stuff BC for the 3.x release.
>
> Yep. I need to double-check, but you are probably right.
>
> Cheers
> --
> Manik Surtani
> Lead, JBoss Cache
> manik at jboss.org
>
>
>
>
> _______________________________________________
> jbosscache-dev mailing list
> jbosscache-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jbosscache-dev
--
Brian Stansberry
Lead, AS Clustering
JBoss, a division of Red Hat
brian.stansberry at redhat.com
More information about the jbosscache-dev
mailing list