[
https://issues.jboss.org/browse/JBLOGGING-111?page=com.atlassian.jira.plu...
]
Ghislain Nadeau commented on JBLOGGING-111:
-------------------------------------------
I see there's a pull request sent, and looking at the pull request itself, it looks
like it has been merged.
Is it fixed?
LoggerProvider configured with new ServiceLoader crash
------------------------------------------------------
Key: JBLOGGING-111
URL:
https://issues.jboss.org/browse/JBLOGGING-111
Project: JBoss Logging
Issue Type: Bug
Affects Versions: 3.2.0.Beta1
Environment: Weblogic 10.3.2.0
Configured in ejb jar, deployed by an ear file
Reporter: Frederic Allard
Assignee: James Perkins
There is a new feature in the beta which uses the ServiceLoader to specify a
LoggerProvider to be used by JBoss Logging.
org.jboss.logging.LoggerProviders snippet :
{code}
// Next try for a service provider
try {
final ServiceLoader<LoggerProvider> loader =
ServiceLoader.load(LoggerProvider.class, cl);
if (loader.iterator().hasNext()) {
return loader.iterator().next();
}
} catch (Throwable ignore) {
// TODO consider printing the stack trace as it should only happen once
}
{code}
When you try to configure a provider (ex. org.jboss.logging.Slf4jLoggerProvider), the
ServiceLoader crash silently and ignore the provider.
{code}
java.util.ServiceConfigurationError: org.jboss.logging.LoggerProvider: Provider
org.jboss.logging.Slf4jLoggerProvider could not be instantiated:
java.lang.IllegalAccessException: Class java.util.ServiceLoader$LazyIterator can not
access a member of class org.jboss.logging.Slf4jLoggerProvider with modifiers
""
at java.util.ServiceLoader.fail(ServiceLoader.java:207)
at java.util.ServiceLoader.access$100(ServiceLoader.java:164)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:353)
at java.util.ServiceLoader$1.next(ServiceLoader.java:421)
at org.jboss.logging.LoggerProviders.findProvider(LoggerProviders.java:70)
at org.jboss.logging.LoggerProviders.find(LoggerProviders.java:32)
at org.jboss.logging.LoggerProviders.<clinit>(LoggerProviders.java:29)
at org.jboss.logging.Logger.getLogger(Logger.java:2177)
at org.jboss.logging.Logger$1.run(Logger.java:2277)
at java.security.AccessController.doPrivileged(Native Method)
at org.jboss.logging.Logger.getMessageLogger(Logger.java:2241)
at org.jboss.logging.Logger.getMessageLogger(Logger.java:2228)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:176)
...
{code}
This is caused by the fact that all JBoss providers are not public classes and are
instead package classes.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)