[
https://issues.apache.org/jira/browse/LOG4J2-1467?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15394231#comment-15394231
]
Ralf commented on LOG4J2-1467:
------------------------------
Regarding the point "... but has no idea which classloader should be used."
I'm still with option thre from above (passing the classloader).
In OSGi there is the concept of Fragments. Those are special bundles that are
loaded into a "host bundle". Then all classes of the fragment are loadable by
the class loader of the host bundle.
As far as I understand all extensions are loaded from the log4j-core bundle. So
extensions need to have that bundle set as "Fragment-Host".
Example: If then the class org.apache.logging.log4j.core.util.Loader hands over
its own class loader to org.apache.logging.log4j.util.LoaderUtil, it gives
LoaderUtil access to all classes inside the log4j-core bundle and its
fragments. Hence LoaderUtil is able to load classes from log4j-core (like the
class org.apache.logging.log4j.core.lookup.JndiLookup) but also any classes
from fragments.
If my assumption regarding "all extensions are loaded from the log4j-core
bundle" is wrong, then a documentation is needed which host plugin should be
used for which extension.
> OSGi: Missing import package
> ----------------------------
>
> Key: LOG4J2-1467
> URL: https://issues.apache.org/jira/browse/LOG4J2-1467
> Project: Log4j 2
> Issue Type: Bug
> Components: API
> Affects Versions: 2.6.2
> Environment: Enterprise OSGi application
> Reporter: Ralf
>
> The Import-Package statement in log4j-api-2.6.2.jar is missing the package
> "org.apache.logging.log4j.core.lookup". This results in the following log
> output while starting a enterprise OSGi application:
> Blueprint Extender: 3 WARN JNDI lookup class is not available because this
> JRE does not support JNDI. JNDI string lookups will not be available,
> continuing configuration. java.lang.ClassNotFoundException:
> org.apache.logging.log4j.core.lookup.JndiLookup
> at java.lang.Class.forName(Class.java:256)
> at
> org.apache.logging.log4j.util.LoaderUtil.loadClass(LoaderUtil.java:122)
> at
> org.apache.logging.log4j.util.LoaderUtil.newInstanceOf(LoaderUtil.java:141)
> at
> org.apache.logging.log4j.util.LoaderUtil.newCheckedInstanceOf(LoaderUtil.java:168)
> at
> org.apache.logging.log4j.core.util.Loader.newCheckedInstanceOf(Loader.java:301)
> at
> org.apache.logging.log4j.core.lookup.Interpolator.<init>(Interpolator.java:95)
> at
> org.apache.logging.log4j.core.config.AbstractConfiguration.<init>(AbstractConfiguration.java:116)
> and
> Blueprint Extender: 3 WARN JMX runtime input lookup class is not available
> because this JRE does not support JMX. JMX lookups will not be available,
> continuing configuration. java.lang.ClassNotFoundException:
> org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup
> (Stacktrace like above)
> As local fix I added 'DynamicImport-Package: *' to the MANIFEST.MF.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]