aries-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Timothy Ward (Resolved) (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (ARIES-703) JDKProxyManager cannot proxy blueprint beans
Date Fri, 03 Feb 2012 15:01:56 GMT

     [ https://issues.apache.org/jira/browse/ARIES-703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Timothy Ward resolved ARIES-703.
--------------------------------

       Resolution: Fixed
    Fix Version/s: blueprint-0.4.0
    
> JDKProxyManager cannot proxy blueprint beans
> --------------------------------------------
>
>                 Key: ARIES-703
>                 URL: https://issues.apache.org/jira/browse/ARIES-703
>             Project: Aries
>          Issue Type: Bug
>          Components: Blueprint
>         Environment: Glassfish 3.1
>            Reporter: Balazs Zsoldos
>            Assignee: Timothy Ward
>             Fix For: blueprint-0.4.0
>
>
> When there is no ASM between the bundles and aries proxy is installed the default proxy
manager is JDKProxyManager. When there is a bean in a blueprint fragment that has for example
tx:transaction inside creating the transactional proxy fails with the following stacktrace:
> [#|2011-07-06T14:29:24.542+0200|SEVERE|glassfish3.1|org.apache.aries.blueprint.container.BlueprintContainerImpl|_ThreadID=27;_ThreadName=Thread-1;|Unable
to start blueprint container for bundle biz.everit.audit.persistence.biz.everit.audit.persistence.impl
> org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to create proxy
for bean eventPersistenceImpl in bundle biz.everit.audit.persistence.biz.everit.audit.persistence.impl
version 0.1.0.SNAPSHOT
> 	at org.apache.aries.blueprint.container.BeanRecipe.addInterceptors(BeanRecipe.java:695)
> 	at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:730)
> 	at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:71)
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 	at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:79)
> 	at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:60)
> 	at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:98)
> 	at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:220)
> 	at org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:205)
> 	at org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:144)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.createRecipe(ServiceRecipe.java:398)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.createService(ServiceRecipe.java:271)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:243)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.getService(ServiceRecipe.java:320)
> 	at org.apache.aries.blueprint.container.ServiceRecipe$TriggerServiceFactory.getService(ServiceRecipe.java:465)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:310)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:221)
> 	at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:297)
> 	at org.apache.felix.framework.Felix.getService(Felix.java:3014)
> 	at org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:329)
> 	at org.jvnet.hk2.osgiadapter.HK2Main$HK2ServiceTrackerCustomizer.addingService(HK2Main.java:260)
> 	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)
> 	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
> 	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)
> 	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
> 	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:871)
> 	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:733)
> 	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:662)
> 	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3769)
> 	at org.apache.felix.framework.Felix.access$000(Felix.java:80)
> 	at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:722)
> 	at org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:107)
> 	at org.apache.felix.framework.Felix.registerService(Felix.java:2854)
> 	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerService(BlueprintContainerImpl.java:408)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:187)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java:666)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:334)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:230)
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:662)
> Caused by: org.apache.aries.proxy.UnableToProxyException: The class biz.everit.audit.persistence.impl.EventPersistenceServiceImpl
is not an interface and therefore a proxy cannot be generated.
> 	at org.apache.aries.proxy.impl.JdkProxyManager.getInterfaces(JdkProxyManager.java:43)
> 	at org.apache.aries.proxy.impl.JdkProxyManager.createNewProxy(JdkProxyManager.java:36)
> 	at org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingInterceptingProxy(AbstractProxyManager.java:75)
> 	at org.apache.aries.proxy.impl.AbstractProxyManager.createInterceptingProxy(AbstractProxyManager.java:53)
> 	at org.apache.aries.blueprint.container.BeanRecipe.addInterceptors(BeanRecipe.java:690)
> 	... 47 more
> It will always happen as we have the following line in BeanRecepe:
> intercepted = BlueprintExtender.getProxyManager().createInterceptingProxy(b, 
>                   ProxyUtils.asList(original.getClass()), original, 
>                   new Collaborator(interceptorLookupKey, interceptors));
> That means that the interface list is the class of the bean itself that is cannot be
an interface. In case of JDKProxy we should derive the interfaces that the bean implements
and those interface classes should be passed. However at this level (BeanRecipe) we do not
know about the proxy manager...
> The example blueprint file for this:
> <bean id="eventPersistenceImpl" class="biz.everit.audit.persistence.impl.EventPersistenceServiceImpl">
> 		<tx:transaction method="*" value="Required" />
> 		<jpa:context property="em" unitname="biz.everit.audit.persistence.entity" type="TRANSACTION"
/>
> </bean>

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message