Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exception thrown in EventBus.unsubscribe after close a browser window #54

Closed
LukaszByczynski opened this issue Jun 9, 2014 · 5 comments
Labels

Comments

@LukaszByczynski
Copy link
Contributor

00:38:20.031 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] DEBUG o.s.c.a.CommonAnnotationBeanPostProcessor - Invoking destroy method on bean 'scopedTarget.uiEventBus': void org.vaadin.spring.events.internal.ScopedEventBus.destroy()
00:38:20.129 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] WARN  o.s.c.a.CommonAnnotationBeanPostProcessor - Invocation of destroy method failed on bean with name 'scopedTarget.uiEventBus'
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.sessionEventBus': Scope 'session' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:353) ~[spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) ~[spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    at org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:35) ~[spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:187) ~[spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    at com.sun.proxy.$Proxy24.unsubscribe(Unknown Source) ~[$Proxy24.class:na]
    at org.vaadin.spring.events.internal.ScopedEventBus.destroy(ScopedEventBus.java:72) ~[ScopedEventBus.class:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_60]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_60]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_60]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_60]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:349) ~[spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:314) ~[spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:153) ~[spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:239) [spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    at org.springframework.beans.factory.support.DisposableBeanAdapter.run(DisposableBeanAdapter.java:232) [spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    at org.vaadin.spring.internal.UIStore.detach(UIStore.java:148) [UIStore.class:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_60]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_60]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_60]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_60]
    at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508) [vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198) [vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161) [vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:978) [vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.server.AbstractClientConnector.detach(AbstractClientConnector.java:610) [vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.ui.AbstractComponent.detach(AbstractComponent.java:593) ~[vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.ui.UI.detach(UI.java:1224) ~[vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.ui.UI.setSession(UI.java:428) ~[vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.server.VaadinSession.removeUI(VaadinSession.java:892) ~[vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.server.VaadinService$1$1.run(VaadinService.java:470) ~[vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.ui.UI.accessSynchronously(UI.java:1309) ~[vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.server.VaadinService$1.run(VaadinService.java:458) ~[vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.server.VaadinSession.accessSynchronously(VaadinSession.java:1347) ~[vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.server.VaadinService.fireSessionDestroy(VaadinService.java:447) ~[vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at com.vaadin.server.VaadinSession.valueUnbound(VaadinSession.java:323) ~[vaadin-server-7.3.0.alpha2.jar:7.3.0.alpha2]
    at org.apache.catalina.session.StandardSession.removeAttributeInternal(StandardSession.java:1800) ~[catalina.jar:7.0.53]
    at org.apache.catalina.session.StandardSession.expire(StandardSession.java:865) ~[catalina.jar:7.0.53]
    at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:656) ~[catalina.jar:7.0.53]
    at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:532) ~[catalina.jar:7.0.53]
    at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:517) ~[catalina.jar:7.0.53]
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1352) ~[catalina.jar:7.0.53]
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530) ~[catalina.jar:7.0.53]
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) ~[catalina.jar:7.0.53]
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) ~[catalina.jar:7.0.53]
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519) ~[catalina.jar:7.0.53]
    at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_60]
Caused by: java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.
    at org.springframework.web.context.request.RequestContextHolder.currentRequestAttributes(RequestContextHolder.java:131) ~[spring-web-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    at org.springframework.web.context.request.SessionScope.get(SessionScope.java:91) ~[spring-web-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:338) ~[spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
    ... 45 common frames omitted
@peholmst
Copy link
Owner

Thanks for the report, will investigate.

@peholmst peholmst added the bug label Jun 10, 2014
@peholmst
Copy link
Owner

I've made a few changes to the code. Can you check if it works better now?

@LukaszByczynski
Copy link
Contributor Author

I did some tests and seems its works correctly. Thanks

@peholmst
Copy link
Owner

This bug is apparently still present when the HTTP session expires. Reopening.

@peholmst peholmst reopened this Jun 18, 2014
@peholmst
Copy link
Owner

Changed how event buses are proxied. Should work now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants