On Mon, Jul 7, 2008 at 4:50 PM, Sahoo <[EMAIL PROTECTED]> wrote:
> Karl Pauls wrote:
>>
>> On Mon, Jul 7, 2008 at 4:08 PM, Sahoo <[EMAIL PROTECTED]> wrote:
>>
>>>>
>>>> log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not
>>>> assignable to a "
>>>>
>>>> org.apache.log4j.Appender" variable.
>>>>
>>>> log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
>>>>
>>>> log4j:ERROR [7.0] whereas object of type
>>>>
>>>> log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by
>>>> [WebappClassLoader
>>>>
>>>>  delegate: false
>>>>
>>>>
>>>>
>>>
>>> As someone already pointed out, this seems to be the real issue.
>>>
>>
>> Why would that be an issue?
>>
>>
>
> WebappClassLoader, which is what the war uses to load any class, has loaded
> ConsoleAppender as well as the interface Appender. In the OSGi classloading
> space, Appender is loaded by some bundle's class loader. I was thinking that
> somehow the ConsoleAppender as loaded by the application class loader is
> coming in contact with Appender which is loaded by a bundle.

Yes, that is what must be happening. I misunderstood your comment -
thinking that you where referring to the "delegate: false". Now it
makes sense :-)

>>> Try setting the following in felix/config.properties file or whatever
>>> equivalent way to
>>> pass it while invoking Felix using an API:
>>>
>>> org.osgi.framework.bootdelegation=sun.*,com.sun.*, org.apache.log4j.*
>>> I am not suggesting this as a long term solution, but this can take us
>>> towards the solution.
>>>
>>
>> How?
>>
>>
>
> Since Felix is started by the web app, Felix would use that web app's class
> loader for any delegation. By having this property, both OSGi bundles should
> see same log4j classes as the web app.

Right. I'll try to investigate this a bit more.

regards,

Karl

> Thanks,
> Sahoo
>>
>> regards,
>>
>> Karl
>>
>>
>>>
>>> Thanks,
>>> Sahoo
>>>
>>>
>>
>>
>>
>>
>



-- 
Karl Pauls
[EMAIL PROTECTED]

Reply via email to