Vaadin 7.4.1+CDI+@Push on Glassfish 4.1 exception (ticket #15244), wrong co

Hi,

I use Vaadin 7.4.1 with vaadin-cdi 1.0.2 and vaadin server push (websockets) on Glassfish 4.1.
I get exception when try to change selected row in my table:

[code]
Severe: java.lang.IllegalStateException: Singleton not set for org.glassfish.main.core.kernel [201]

at org.glassfish.weld.ACLSingletonProvider$ACLSingleton.get(ACLSingletonProvider.java:112)
at org.jboss.weld.Container.instance(Container.java:65)
at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:75)
at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:99)
at org.jboss.weld.proxies.HistoryService$810428919$Proxy$_$$_WeldClientProxy.createHistoricTaskInstanceQuery(Unknown Source)
at ru.amb.bpm.impl.BpmServiceImpl.findHistoryTasks(BpmServiceImpl.java:312)
at ru.amb.ui.view.dispatcher.ProtocolTable.loadData(ProtocolTable.java:61)
at ru.amb.ui.view.dispatcher.ProtocolTable.setProcessInstanceId(ProtocolTable.java:55)
at ru.amb.ui.view.dispatcher.DispatcherView.lambda$enter$1d18aa9b$1(DispatcherView.java:81)
at ru.amb.ui.view.dispatcher.DispatcherView$$Lambda$21/942321978.valueChange(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161)
at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:977)
at com.vaadin.ui.AbstractField.fireValueChange(AbstractField.java:1137)
at com.vaadin.ui.AbstractField.setValue(AbstractField.java:548)
at com.vaadin.ui.AbstractSelect.setValue(AbstractSelect.java:709)
at com.vaadin.ui.AbstractSelect.changeVariables(AbstractSelect.java:528)
at com.vaadin.ui.Table.changeVariables(Table.java:2946)
at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:486)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:305)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:184)
at com.vaadin.server.communication.PushHandler$3.run(PushHandler.java:176)
at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:255)
at com.vaadin.server.communication.PushHandler.access$200(PushHandler.java:58)
at com.vaadin.server.communication.PushHandler$1.onRequest(PushHandler.java:78)
at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:205)
at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:104)
at org.atmosphere.container.GlassFishServ30WebSocketSupport.service(GlassFishServ30WebSocketSupport.java:60)
at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2075)
at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:570)
at org.atmosphere.websocket.DefaultWebSocketProcessor$3.run(DefaultWebSocketProcessor.java:332)
at org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101)
at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:327)
at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:424)
at org.atmosphere.container.GlassFishServ30WebSocketSupport$Grizzly2WebSocketApplication.onMessage(GlassFishServ30WebSocketSupport.java:157)
at org.glassfish.grizzly.websockets.SimpleWebSocket.onMessage(SimpleWebSocket.java:163)
at org.glassfish.grizzly.websockets.frametypes.TextFrameType.respond(TextFrameType.java:68)
at org.glassfish.grizzly.websockets.DataFrame.respond(DataFrame.java:119)
at org.glassfish.grizzly.websockets.BaseWebSocketFilter.handleRead(BaseWebSocketFilter.java:219)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:745)

[/code]There is a ticket
http://dev.vaadin.com/ticket/15244
about similar problem.

After a little research I found out that the problem is in the wrong context classloader of current thread.
The code, which helps fix the problem is:

Thread.currentThread().setContextClassLoader( getClass().getClassLoader() );

Where is the right place for this code? Any ideas?

Thanks,
Dmitry