ConcurrentHashMap is only in Java 5 and Pax Logging is Java 1.4.
More, I guess, The WeakHashMap is used so the Log isntances created by
LogFactory to be garbage collected when not in use anymore, so the
concurrent hash map will eliminate this behavior.
Maybe let's just try first to use a synchronized map. I can make this
change but I need you Hendy to test it as I do not have the proper
setup. Can you do that?

On Thu, Nov 27, 2008 at 6:50 PM, Stuart McCulloch <[EMAIL PROTECTED]> wrote:
> 2008/11/28 Hendy Irawan <[EMAIL PROTECTED]>
>>
>> IIRC I ever faced a similar problem sometime ago.
>>
>> The way I make this happen is by loading a bunch of JARs using
>> ModuleFusion's DirInstaller.
>>
>> This problem is intermittent, happens about 50% of the time.
>>
>> Should I post a bug report?
>
> yep - looks like it needs synchronization
>
>> I see WeakHashMap below... would using ConcurrentHashMap solve the
>> problem? Since it only called by Activator (once per bundle lifecycle?) I
>> don't think there's significant performance hit..
>>
>> ...
>> [org.springframework.osgi.extender.internal.support.NamespacePlugins] :
>> XML schema for
>> null|http://www.springframework.org/schema/context/spring-context-2.5.xsd
>> found inside spring-context
>> (org.springframework.bundle.spring.context)
>> [org.springframework.beans.factory.support.DefaultListableBeanFactory] :
>> Creating shared instance of singleton bean
>> 'org.springframework.context.annotation.internalCommonAnnotationProcessor'
>> org.osgi.framework.BundleException: Exception in
>> org.ops4j.pax.logging.internal.Activator.start() of bundle
>> org.ops4j.pax.logging.pax-logging-api.
>>         at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:1028)
>>         at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:984)
>>         at
>> org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
>>         at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:265)
>>         at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:257)
>>         at
>> org.modulefusion.dirinstaller.DirWatcher.startAllAndRefresh(DirWatcher.java:160)
>>         at
>> org.modulefusion.dirinstaller.DirWatcher.analyseNewState(DirWatcher.java:145)
>>         at
>> org.modulefusion.dirinstaller.DirWatcher.access$3(DirWatcher.java:90)
>>         at
>> org.modulefusion.dirinstaller.DirWatcher$1.run(DirWatcher.java:63)
>> Caused by:
>> java.util.ConcurrentModificationException
>>         at
>> java.util.WeakHashMap$HashIterator.nextEntry(WeakHashMap.java:762)
>>         at
>> java.util.WeakHashMap$EntryIterator.next(WeakHashMap.java:801)
>>         at
>> java.util.WeakHashMap$EntryIterator.next(WeakHashMap.java:799)
>>         at
>> org.apache.commons.logging.LogFactory.setBundleContext(LogFactory.java:113)
>>         at
>> org.ops4j.pax.logging.internal.Activator.start(Activator.java:35)
>>         at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:1009)
>>         at java.security.AccessController.doPrivileged(Native
>> Method)
>>         at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:1003)
>>         ... 8
>> more
>> Exception in thread "WebExtender-Init"
>> java.lang.ExceptionInInitializerError
>>         at
>> org.springframework.aop.framework.DefaultAopProxyFactory.createAopProxy(DefaultAopProxyFactory.java:74)
>>         at
>> org.springframework.aop.framework.ProxyCreatorSupport.createAopProxy(ProxyCreatorSupport.java:106)
>>         at
>> org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
>>         at
>> org.springframework.osgi.service.util.internal.aop.ProxyUtils.createProxy(ProxyUtils.java:60)
>>         at
>> org.springframework.osgi.service.util.internal.aop.ProxyUtils.createProxy(ProxyUtils.java:37)
>>         at
>> org.springframework.osgi.service.importer.support.AbstractServiceProxyCreator.createServiceProxy(AbstractServiceProxyCreator.java:107)
>>         at
>> org.springframework.osgi.service.importer.support.OsgiServiceProxyFactoryBean.createProxy(OsgiServiceProxyFactoryBean.java:185)
>>         at
>> org.springframework.osgi.service.importer.support.AbstractServiceImporterProxyFactoryBean.getObject(AbstractServiceImporterProxyFactoryBean.java:83)
>>         at
>> org.springframework.osgi.service.importer.support.OsgiServiceProxyFactoryBean.getObject(OsgiServiceProxyFactoryBean.java:141)
>>         at
>> org.springframework.osgi.web.deployer.internal.util.Utils.createServerServiceProxy(Utils.java:117)
>>         at
>> org.springframework.osgi.web.deployer.tomcat.TomcatWarDeployer.afterPropertiesSet(TomcatWarDeployer.java:90)
>>         at
>> org.springframework.osgi.web.extender.internal.activator.WarListenerConfiguration.createDefaultWarDeployer(WarListenerConfiguration.java:197)
>>         at
>> org.springframework.osgi.web.extender.internal.activator.WarListenerConfiguration.<init>(WarListenerConfiguration.java:105)
>>         at
>> org.springframework.osgi.web.extender.internal.activator.WarLoaderListener$1.run(WarLoaderListener.java:353)
>>         at
>> java.lang.Thread.run(Thread.java:619)
>> Caused by: java.lang.IllegalStateException: BundleContext is no longer
>> valid
>>         at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl.checkValid(BundleContextImpl.java:1337)
>>         at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl.getBundle(BundleContextImpl.java:196)
>>         at
>> org.ops4j.pax.logging.OSGIPaxLoggingManager.getLogger(OSGIPaxLoggingManager.java:94)
>>         at
>> org.apache.commons.logging.LogFactory.getInstance(LogFactory.java:269)
>>         at
>> org.apache.commons.logging.LogFactory.getLog(LogFactory.java:145)
>>         at
>> org.springframework.aop.framework.JdkDynamicAopProxy.<clinit>(JdkDynamicAopProxy.java:76)
>>         ... 15
>> more
>> org.osgi.framework.BundleException: The activator
>> org.springframework.osgi.web.tomcat.internal.Activator for bundle
>> org.springframework.osgi.catalina.start.osgi is
>> invalid
>>         at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:146)
>>         at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:980)
>>         at
>> org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
>>         at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:265)
>>         at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:257)
>>         at
>> org.modulefusion.dirinstaller.DirWatcher.startAllAndRefresh(DirWatcher.java:160)
>>         at
>> org.modulefusion.dirinstaller.DirWatcher.analyseNewState(DirWatcher.java:145)
>>         at
>> org.modulefusion.dirinstaller.DirWatcher.access$3(DirWatcher.java:90)
>>         at
>> org.modulefusion.dirinstaller.DirWatcher$1.run(DirWatcher.java:63)
>> Caused by:
>> java.lang.ExceptionInInitializerError
>>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>> Method)
>>         at
>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>>         at
>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>         at
>> java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>         at
>> java.lang.Class.newInstance0(Class.java:355)
>>         at
>> java.lang.Class.newInstance(Class.java:308)
>>         at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:141)
>>         ... 8
>> more
>> Caused by: java.lang.IllegalStateException: BundleContext is no longer
>> valid
>>         at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl.checkValid(BundleContextImpl.java:1337)
>>         at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl.getBundle(BundleContextImpl.java:196)
>>         at
>> org.ops4j.pax.logging.OSGIPaxLoggingManager.getLogger(OSGIPaxLoggingManager.java:94)
>>         at
>> org.apache.commons.logging.LogFactory.getInstance(LogFactory.java:269)
>>         at
>> org.apache.commons.logging.LogFactory.getLog(LogFactory.java:145)
>>         at
>> org.springframework.osgi.web.tomcat.internal.Activator.<clinit>(Activator.java:66)
>>         ... 15
>> more
>> [org.springframework.beans.factory.support.DefaultListableBeanFactory] :
>> Creating instance of bean
>> 'org.springframework.context.annotation.internalCommonAnnotationProcessor'
>> ...
>>
>> --
>> Best regards,
>> Hendy Irawan
>> http://hendyirawan.com/
>>
>> _______________________________________________
>> general mailing list
>> general@lists.ops4j.org
>> http://lists.ops4j.org/mailman/listinfo/general
>>
>
>
>
> --
> Cheers, Stuart
>
> _______________________________________________
> general mailing list
> general@lists.ops4j.org
> http://lists.ops4j.org/mailman/listinfo/general
>
>



-- 
Alin Dreghiciu
http://www.ops4j.org         - New Energy for OSS Communities - Open
Participation Software.
http://www.qi4j.org            - New Energy for Java - Domain Driven
Development.
http://malaysia.jayway.net - New Energy for Projects - Great People
working on Great Projects at Great Places

_______________________________________________
general mailing list
general@lists.ops4j.org
http://lists.ops4j.org/mailman/listinfo/general

Reply via email to