[ 
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]

Reply via email to