Hi all,

 

in our project we make use of blueprint and declarative services. Both of them 
are part of one bundle running on Apache Felix (3.0.8.B006, CQ Version) with 
Apache Aries 1.0.1 (blueprint, jpa)

 

Now we noticed, that there are some non-deterministic IllegalStateExceptions 
when we redeploy bundles  and sometime when we deploy bundles the first time. 
(stacktrace attached)

 

24.09.2013 12:12:12.990 *ERROR* [Blueprint Extender: 1] 
org.apache.aries.blueprint.container.BlueprintContainerImpl Unable to start 
blueprint container for bundle ******************* 
java.lang.IllegalStateException: Can only register services while bundle is 
active or activating.

                at 
org.apache.felix.framework.Felix.registerService(Felix.java:2824)

                at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)

                at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:229)

                at 
org.apache.aries.jpa.container.context.impl.PersistenceContextManager.registerEM(PersistenceContextManager.java:286)

                at 
org.apache.aries.jpa.container.context.impl.PersistenceContextManager.registerContext(PersistenceContextManager.java:200)

                at 
org.apache.aries.jpa.container.context.impl.GlobalPersistenceManager.registerContext(GlobalPersistenceManager.java:123)

                at sun.reflect.GeneratedMethodAccessor398.invoke(Unknown Source)

                at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
Source)

                at java.lang.reflect.Method.invoke(Unknown Source)

                at 
org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)

                at 
org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)

                at $Proxy12.registerContext(Unknown Source)

                at 
org.apache.aries.jpa.blueprint.aries.impl.NSHandler.decorate(NSHandler.java:235)

                at sun.reflect.GeneratedMethodAccessor136.invoke(Unknown Source)

                at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
Source)

                at java.lang.reflect.Method.invoke(Unknown Source)

                at 
org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)

                at 
org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)

                at $Proxy9.decorate(Unknown Source)

                at 
org.apache.aries.blueprint.parser.Parser.decorateCustomNode(Parser.java:1273)

                at 
org.apache.aries.blueprint.parser.Parser.handleCustomElements(Parser.java:1263)

                at 
org.apache.aries.blueprint.parser.Parser.parseBeanMetadata(Parser.java:601)

                at 
org.apache.aries.blueprint.parser.Parser.parseBlueprintElement(Parser.java:393)

                at 
org.apache.aries.blueprint.parser.Parser.loadComponents(Parser.java:326)

                at 
org.apache.aries.blueprint.parser.Parser.populate(Parser.java:277)

                at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:315)

                at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:261)

                at java.util.concurrent.Executors$RunnableAdapter.call(Unknown 
Source)

                at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

                at java.util.concurrent.FutureTask.run(Unknown Source)

                at 
org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)

                at 
org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)

                at java.util.concurrent.Executors$RunnableAdapter.call(Unknown 
Source)

                at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

                at java.util.concurrent.FutureTask.run(Unknown Source)

                at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown
 Source)

                at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown
 Source)

                at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown 
Source)

                at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown 
Source)

                at java.lang.Thread.run(Unknown Source)

 

After a while of debugging we figured out that the service cannot be registered 
because Felix fails to obtain the lock on the bundle. The lock is hold by the 
Thread running the Apache Felix BundleComponentActivator (FelixPackageAdmin). 
So we assume that the scr bundle activation cannot coexists with the blueprint 
container for the same bundle. Is this right? Would it be possible to trigger 
the blueprint container creation after scr has been processed or vice versa?

 

Thanks so far,


Dirk Rudolph  




T-Systems Multimedia Solutions GmbH 
Organisationseinheit CCS
Dirk Rudolph
Software-Entwicklung, OCJP

Hausanschrift: Riesaer Straße 5, 01129 Dresden 
Postanschrift: Postfach 10 02 24, 01072 Dresden 
+49 351 2820-5363       (Tel)  
E-Mail: [email protected] <mailto:[email protected]> 
Internet: http://www.t-systems-mms.com <http://www.t-systems-mms.de/> 

T-Systems Multimedia Solutions GmbH

Aufsichtsrat: Klaus Werner (Vorsitzender)

Geschäftsführung: Peter Klingenburg, Susanne Heger

Handelsregister: Amtsgericht Dresden HRB 11433

Sitz der Gesellschaft: Dresden

Ust-IdNr.: DE 811 807 949

 

 

Reply via email to