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 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?