[
https://issues.apache.org/jira/browse/ARIES-1673?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15842563#comment-15842563
]
Anton Deripaska edited comment on ARIES-1673 at 1/27/17 11:07 AM:
------------------------------------------------------------------
Yes, in my case it worked correctly. SpringBeanProcessor#beforeDestroy can be
empty now.
But, after destroy SpringContext get:
{quote}
2017-01-27 14:04:14,869 | WARN | raf-4.0.8/deploy | SpringApplicationContext
| 1373 - org.apache.servicemix.bundles.spring-context - 4.2.8.RELEASE_1 |
Exception thrown from LifecycleProcessor on context close
java.lang.IllegalStateException: LifecycleProcessor not initialized - call
'refresh' before invoking lifecycle methods via the context:
org.apache.aries.blueprint.spring.SpringApplicationContext@828ad58: startup
date [Fri Jan 27 14:03:54 MSK 2017]; root of context hierarchy
at
org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:415)
at
org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:975)
at
org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:934)
at
org.springframework.context.support.AbstractApplicationContext.destroy(AbstractApplicationContext.java:921)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)[:1.8.0_121]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_121]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_121]
at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_121]
at
org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299)[12:org.apache.aries.blueprint.core:1.7.1]
at
org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:980)[12:org.apache.aries.blueprint.core:1.7.1]
at
org.apache.aries.blueprint.container.BeanRecipe.destroy(BeanRecipe.java:887)[12:org.apache.aries.blueprint.core:1.7.1]
at
org.apache.aries.blueprint.container.BlueprintRepository.destroy(BlueprintRepository.java:329)[12:org.apache.aries.blueprint.core:1.7.1]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.destroyComponents(BlueprintContainerImpl.java:765)[12:org.apache.aries.blueprint.core:1.7.1]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.tidyupComponents(BlueprintContainerImpl.java:964)[12:org.apache.aries.blueprint.core:1.7.1]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.destroy(BlueprintContainerImpl.java:909)[12:org.apache.aries.blueprint.core:1.7.1]
at
org.apache.aries.blueprint.container.BlueprintExtender$3.run(BlueprintExtender.java:325)[12:org.apache.aries.blueprint.core:1.7.1]
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_121]
at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_121]
at
org.apache.aries.blueprint.container.BlueprintExtender.destroyContainer(BlueprintExtender.java:346)[12:org.apache.aries.blueprint.core:1.7.1]
at
org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:238)[12:org.apache.aries.blueprint.core:1.7.1]
at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)[21:org.apache.aries.util:1.1.1]
at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)[21:org.apache.aries.util:1.1.1]
at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)[21:org.apache.aries.util:1.1.1]
at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)[21:org.apache.aries.util:1.1.1]
at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)[21:org.apache.aries.util:1.1.1]
at
org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1179)[org.apache.felix.framework-5.6.1.jar:]
at
org.apache.felix.framework.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:730)[org.apache.felix.framework-5.6.1.jar:]
at
org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:485)[org.apache.felix.framework-5.6.1.jar:]
at
org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4541)[org.apache.felix.framework-5.6.1.jar:]
at
org.apache.felix.framework.Felix.stopBundle(Felix.java:2600)[org.apache.felix.framework-5.6.1.jar:]
at
org.apache.felix.framework.Felix.uninstallBundle(Felix.java:2712)[org.apache.felix.framework-5.6.1.jar:]
at
org.apache.felix.framework.BundleImpl.uninstall(BundleImpl.java:1055)[org.apache.felix.framework-5.6.1.jar:]
at
org.apache.felix.fileinstall.internal.DirectoryWatcher.uninstall(DirectoryWatcher.java:1090)[4:org.apache.felix.fileinstall:3.5.6]
at
org.apache.felix.fileinstall.internal.DirectoryWatcher.uninstall(DirectoryWatcher.java:888)[4:org.apache.felix.fileinstall:3.5.6]
at
org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:483)[4:org.apache.felix.fileinstall:3.5.6]
at
org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:361)[4:org.apache.felix.fileinstall:3.5.6]
at
org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:312)[4:org.apache.felix.fileinstall:3.5.6]
{quote}
was (Author: anton.deripaska):
Yes, in my case it worked correctly. SpringBeanProcessor#beforeDestroy can be
empty now.
> Spring beans not destroyed
> --------------------------
>
> Key: ARIES-1673
> URL: https://issues.apache.org/jira/browse/ARIES-1673
> Project: Aries
> Issue Type: Bug
> Components: Blueprint
> Affects Versions: blueprint-spring-0.2.0
> Reporter: Anton Deripaska
> Assignee: Guillaume Nodet
> Priority: Critical
> Fix For: blueprint-spring-0.3.0
>
>
> Hello everyone!
> I have some problem with undeploy bundle using Blueprint Spring.
> If properly understood it, SpringApplicationContext NOT destroy when bundle
> uninstall.
> For example, simple bundle with jax-rs:
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:context="http://www.springframework.org/schema/context"
> xmlns:jaxrs="http://cxf.apache.org/jaxrs"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> http://www.springframework.org/schema/context
> http://www.springframework.org/schema/context/spring-context.xsd
> http://cxf.apache.org/jaxrs
> http://cxf.apache.org/schemas/jaxrs.xsd
> ">
> <context:annotation-config/>
> <jaxrs:server id="test" address="/test">
> <jaxrs:serviceBeans>
> <ref bean="rs-test"/>
> </jaxrs:serviceBeans>
> </jaxrs:server>
> <bean id="rs-test" class="com.dob.ams.osgi.service.TestRestService"/>
> </beans>
> {code}
> It's worked, server was registered (call JAXRSServerFactoryBean#create).
> Next step: uninstal this bundle. All methods with annotation @PreDestroy
> called, but not JAXRSServerFactoryBean#destroy (and not call
> SpringApplicationContext#close).
>
> When I again deploy this bundle, I get the error:
> {quote}
> Caused by: org.apache.cxf.service.factory.ServiceConstructionException: There
> is an endpoint already running on /test.
> at
> org.apache.cxf.jaxrs.JAXRSBindingFactory.addListener(JAXRSBindingFactory.java:86)
> at org.apache.cxf.endpoint.ServerImpl.start(ServerImpl.java:123)
> at
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:206)
> {quote}
> Аny help would be appreciated!
> Regards
> Anton
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)