Important Notice - Forums is archived
To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
how to fire CDI event in stateless session bean @Asynchronous method
Hi,
I am trying to fire a CDI event in a session bean asynchronous method so that Vaadin views can update accordingly , however I getting an error and the stack trace is as below. It seems that the Vaadin session is missing when firing the event. Can anyone please tell me what have I done wrong?
@CDIUI("")
@Push(transport = Transport.LONG_POLLING)
public class SimpletestUI extends UI
{
@Inject
private MyView myView;
@Inject
private MyService service;
@Override
protected void init(VaadinRequest request)
{
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);
Button button = new Button("Click Mee");
button.addClickListener(new Button.ClickListener()
{
public void buttonClick(ClickEvent event)
{
service.sendEvent();
}
});
layout.addComponent(button);
layout.addComponent(myView);
}
}
@UIScoped
@CDIView
public class MyView extends VerticalLayout implements View
{
private static final long serialVersionUID = 1L;
public MyView()
{
addComponent(new Label("MyView"));
}
@Override
public void enter(ViewChangeEvent event)
{}
public void eventObserver(@Observes final String msg)
{
UI.getCurrent().access(new Runnable()
{
@Override
public void run()
{
addComponent(new Label(msg));
}
});
}
}
@Stateless
public class MyService implements Serializable
{
private static final long serialVersionUID = 1L;
@Inject
private javax.enterprise.event.Event<String> event;
@Asynchronous
public void sendEvent()
{
try
{
Thread.sleep(1000L);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
event.fire("Msg fired");
}
}
Caused by: java.lang.IllegalStateException: Session data not recoverable for Managed Bean [class com.example.simpletest.MyView] with qualifiers [@Any @Default]
at com.vaadin.cdi.internal.UIScopedContext.getContextualStorage(UIScopedContext.java:68)
at org.apache.deltaspike.core.util.context.AbstractContext.get(AbstractContext.java:113)
at com.vaadin.cdi.internal.AbstractVaadinContext.get(AbstractVaadinContext.java:156)
at com.vaadin.cdi.internal.ContextWrapper.get(ContextWrapper.java:49)
at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:101)
at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:67)
at org.jboss.weld.event.ObserverMethodImpl.getReceiver(ObserverMethodImpl.java:336)
at org.jboss.weld.event.ObserverMethodImpl.getReceiverIfExists(ObserverMethodImpl.java:323)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:281)
at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:262)
at org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:271)
at org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:260)
at org.jboss.weld.event.EventImpl.fire(EventImpl.java:89)
at com.example.simpletest.MyService.sendEvent(MyService.java:29)
Have the same problem, help will be appreciated,
Thanks
Fernando Bonilla: Have the same problem, help will be appreciated,
Thanks
Did you find any solution for this?