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