I'm having big problems with FeatureDeploymentListener.... it might be due to running with osgi 4.3 frameworks and aries snapshots, but I doubt it.
First I saw corrupted FeatureDeploymentListener.cfg files (long sections of 0's) so I changed the code to delete the file after reading it before rewriting it, then I got stack traces like 2011-10-14 16:28:38,647 | ERROR | rint Extender: 3 | FeatureDeploymentListener | atures.FeatureDeploymentListener 168 | 22 - org.apache.karaf.deployer.features - 3.0.0.SNAPSHOT | Unable to install deployed features for bundle: org.apache.servicemix.bundles.ant - 1.7.0.3 java.io.FileNotFoundException: /Users/david/projects/geronimo-git/geronimo/assemblies/geronimo-tomcat7-javaee6-web/target/geronimo-tomcat7-javaee6-web-3.0-SNAPSHOT/data/cache/org.eclipse.osgi/bundles/22/data/FeatureDeploymentListener.cfg (No such file or directory) at java.io.FileInputStream.open(Native Method)[:1.6.0_26] at java.io.FileInputStream.<init>(FileInputStream.java:120)[:1.6.0_26] at org.apache.karaf.deployer.features.FeatureDeploymentListener.bundleChanged(FeatureDeploymentListener.java:146) at org.apache.karaf.deployer.features.FeatureDeploymentListener.init(FeatureDeploymentListener.java:81) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.6.0_26] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[:1.6.0_26] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_26] at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_26] at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:238)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:838)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:638)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:726)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:71)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)[:1.6.0_26] at java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_26] at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:79)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:60)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:98)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:220)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:205)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:144)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.ServiceRecipe.createRecipe(ServiceRecipe.java:398)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.ServiceRecipe.createService(ServiceRecipe.java:271)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:243)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:230)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.ServiceRecipe.getClasses(ServiceRecipe.java:333)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:181)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java:652)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:325)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:228)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)[231:org.apache.aries.blueprint.core:0.3.2.SNAPSHOT] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)[:1.6.0_26] at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)[:1.6.0_26] at java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_26] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)[:1.6.0_26] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)[:1.6.0_26] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_26] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_26] at java.lang.Thread.run(Thread.java:680)[:1.6.0_26] Replacing the synchronized (this) with synchronized (this.getClass()) removes these errors. My conclusion is that a lot of instances of this class are getting created by blueprint simultaneously. Is this intended or is there something wrong in the blueprint configuration, such as prototype rather than singleton scope? (can't remember the right terms....) thanks david jencks