[
https://issues.jboss.org/browse/JGRP-2035?page=com.atlassian.jira.plugin....
]
Jason Greene commented on JGRP-2035:
------------------------------------
This commit is the problem:
https://github.com/belaban/JGroups/commit/8bad26987223bda6e609127fdd39d05...
Can we get a release with this reverted?
As a general rule classes should always be loaded by the defining class loader
(Class.forName() or OtherClass.class as the previous code before this change did).
There are a few special cases where you want to load classes from a TCCL, but those cases
are where you expect classes other than your framework to be loaded (e.g. user classes
defined in a different loader ), and when that approach is used it *must* be contextual.
In other words, the code loading classes via TCCL needs to actually have a lifecycle.
It's always wrong, for example, to load classes in the TCCL and stuff them in a static
variable in a different class loader, as the life-cycles are not synchronized. Often times
when TCCL support is truly required, you also have a set of local implementations, so in
those cases you have to query multiple class loaders.
For more info see:
https://developer.jboss.org/wiki/ModuleCompatibleClassloadingGuide
Util class tries to locate resource bundles using TCCL, which fails
-------------------------------------------------------------------
Key: JGRP-2035
URL:
https://issues.jboss.org/browse/JGRP-2035
Project: JGroups
Issue Type: Bug
Reporter: Jan Martiska
Assignee: Bela Ban
Priority: Blocker
{{org.jgroups.util.Util}} class tries to locate jg-messages bundle using the TCCL, not
its own class loader. In a Java SE environment, this typically doesn't matter, because
the class loaders are the same, but in EAP, this means that jg-messages is sought by the
class loader of the application rather than the class loader of JGroups module, which is
obviously wrong. This is the offending line:
https://github.com/belaban/JGroups/blob/master/src/org/jgroups/util/Util....
The call to getBundle fails with a MissingResourceException (see
http://docs.oracle.com/javase/6/docs/api/java/util/ResourceBundle.html#ge...)
and because this code is in a static initializer, the Util class becomes unusable.
This causes Hibernate applications with 2LC infinispan clustering backend to not work.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)