karaf-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Freeman Fang <freeman.f...@gmail.com>
Subject Re: Karaf 2.2.8, Pax-Logging 1.6.7 and NTEventLogAppender - revisited
Date Tue, 09 Oct 2012 01:26:56 GMT
Hi Bengt,

Thanks very much for the investigation and the summary, it's very useful for those users who
are on windows platform.
Best Regards

Freeman
-------------
Freeman Fang

Red Hat, Inc. 
FuseSource is now part of Red Hat
Web: http://fusesource.com | http://www.redhat.com/
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com
http://blog.sina.com.cn/u/1473905042
weibo: http://weibo.com/u/1473905042

On 2012-10-8, at 下午4:46, Bengt Rodehav wrote:

> Also tested putting both the 32 bit (NTEventLogAppender.dll) and the 64 bit (NTEventLogAppender.amd64.dll)
DLL's in <KARAF_HOME>/lib. It works on both Windows XP (32 bit) and Windows 7 (64 bit).
Somehow the correct DLL is loaded although both versions reside in the same directory.
> 
> In summary, my custom distribution does in fact work on both Windows 32 and Windows 64
as long as no other application is forced to put an old version of NTEventLogAppender.dll
in Windows\System32...
> 
> /Bengt
> 
> 
> 
> 2012/10/8 Bengt Rodehav <bengt@rodehav.com>
> I've analyzed this further trying to find if there are any combinations of Karaf/Pax-Web
that doesn't work. When doing this I found that I actually had problems even with Karaf 2.2.5
and that the reason was that I had an old/incompatible version of nteventlogappender.dll in
the Windows\System32 folder. Since System32 is searched before <KARAF_HOME>/lib it took
precedence over my DLL.
> 
> They don't call it "DLL hell" for nothing...
> 
> /Bengt
> 
> 
> 2012/10/5 Bengt Rodehav <bengt@rodehav.com>
> I've previously had problems using the NTEventLogApplender with Karaf 2.2.8. I wrote
about it on the mailing list:
> 
> http://mail-archives.apache.org/mod_mbox/karaf-user/201206.mbox/%3CCAJ0TPGLbhsSzPNoDUk7o3gswi6tfF4YTe-iFfr52OG_NWbDT9g@mail.gmail.com%3E
> 
> I thought I had everything working but now it seems I can only use the NTEventLogAppender
on Windows 64 and not on Windows 32 (like Windows XP). I have no idea why.
> 
> On Windows XP Professional 2002, SP 3 (32 bit system), when running Karaf 2.2.5 (which
includes Pax-Logging 1.6.3) I only need to put the file NTEventLogAppender.dll in the <KARAF_HOME>/lib
and everything works fine.
> 
> But, on the same machine, if I instead use Karaf 2.2.8 (which includes Pax-Logging 1.6.7),
I cannot get the appender to work even if I put the DLL in the same place. I get the following
exception:
> 
> 2012-10-05 10:00:44,123 | ERROR | s4j.pax.logging) | configadmin                    
 | ?                                   ? | [org.osgi.service.log.LogService, org.knopflerfish.service.log.LogService,
org.ops4j.pax.logging.PaxLoggingService, org.osgi.service.cm.ManagedService, id=8, bundle=3]:
Unexpected problem updating Configuration PID=org.ops4j.pax.logging, factoryPID=null, bundleLocation=mvn:org.ops4j.pax.logging/pax-logging-service/1.6.7
> java.lang.UnsatisfiedLinkError: org.apache.log4j.nt.NTEventLogAppender.registerEventSource(Ljava/lang/String;Ljava/lang/String;)I
> 	at org.apache.log4j.nt.NTEventLogAppender.registerEventSource(Native Method)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at org.apache.log4j.nt.NTEventLogAppender.<init>(NTEventLogAppender.java:79)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at org.apache.log4j.nt.NTEventLogAppender.<init>(NTEventLogAppender.java:49)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)[:1.6.0_25]
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)[:1.6.0_25]
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)[:1.6.0_25]
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)[:1.6.0_25]
> 	at java.lang.Class.newInstance0(Class.java:355)[:1.6.0_25]
> 	at java.lang.Class.newInstance(Class.java:308)[:1.6.0_25]
> 	at org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:336)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:123)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at org.apache.log4j.PaxLoggingConfigurator.parseAppender(PaxLoggingConfigurator.java:81)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:735)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:639)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:504)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at org.apache.log4j.PaxLoggingConfigurator.doConfigure(PaxLoggingConfigurator.java:57)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl.updated(PaxLoggingServiceImpl.java:200)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl$1ManagedPaxLoggingService.updated(PaxLoggingServiceImpl.java:338)[3:org.ops4j.pax.logging.pax-logging-service:1.6.7]
> 	at org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1490)[5:org.apache.felix.configadmin:1.2.8]
> 	at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:104)[5:org.apache.felix.configadmin:1.2.8]
> 	at java.lang.Thread.run(Thread.java:662)[:1.6.0_25]
> 
> Can anyone explain this? It doesn't seem to be a 32 vs 64 bit problem. Perhaps something
changed between Karaf 2.2.5 and Karaf 2.2.8 that could affect this? Or in between Pax-Logging
1.6.3 and Pax-Logging 1.6.7?
> 
> Note that I do get things to work on 64 bit Windows (like Windows 7) with Karaf 2.2.8
if I instead use the DLL: NTEventLogAppender.amd64.dll.
> 
> /Bengt
> 
> 


Mime
View raw message