You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wicket.apache.org by Martin Grigorov <mg...@apache.org> on 2015/02/09 09:40:06 UTC

CDI's ConversationPropagator#onRequestHandlerScheduled() in non-http thread

Hi,

The other day I've helped Sebastien with the task he explained at
http://markmail.org/message/mmviy6tsv47g7rhr.

The problem we hit is that when an non-http thread needs to write to Native
WebSockets connection it fails at Weld check for active context
at ConversationPropagator#onRequestHandlerScheduled().

When Native WS creates the dummy RequestCycle at

 org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor.broadcastMessage(AbstractWebSocketProcessor.java:218)
[wicket-native-websocket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]

it also calls
org.apache.wicket.request.cycle.RequestCycle.scheduleRequestHandlerAfterCurrent(RequestCycle.java:794)
[wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]

that notifies all IRequestCycleListeners about the scheduled request
handler.

https://github.com/apache/wicket/blob/master/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagator.java#L130
checks whether the conversation is transient and this leads to the error
below.

In the use case there is no usage of CDI in the non-http thread at all. It
is just that ConversationPropagator as IRequestCycleListener is notified
and it tries to do its checks.

As a workaround I've try/catched ConversationPropagator.java#L130 and
returned null in case of exception.

Is there a better way to check for active context before trying to do: if
(conversation.isTransient()) ?


[0m [31m10:28:05,358 ERROR [org.apache.wicket.cdi.ConversationPropagator]
(pool-5-thread-1) No context!:
org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active
contexts for scope type javax.enterprise.context.RequestScoped
at
org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:680)
[weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]
at
org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:79)
[weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]
at
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:99)
[weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]
at
org.jboss.weld.proxies.Conversation$1224015424$Proxy$_$$_WeldClientProxy.isTransient(Unknown
Source)
at
org.apache.wicket.cdi.ConversationPropagator.onRequestHandlerScheduled(ConversationPropagator.java:132)
[wicket-cdi-1.1-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(RequestCycleListenerCollection.java:182)
[wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(RequestCycleListenerCollection.java:178)
[wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80)
[wicket-util-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.request.cycle.RequestCycleListenerCollection.onRequestHandlerScheduled(RequestCycleListenerCollection.java:177)
[wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(RequestCycleListenerCollection.java:182)
[wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(RequestCycleListenerCollection.java:178)
[wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80)
[wicket-util-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.request.cycle.RequestCycleListenerCollection.onRequestHandlerScheduled(RequestCycleListenerCollection.java:177)
[wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(RequestCycleListenerCollection.java:182)
[wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(RequestCycleListenerCollection.java:178)
[wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80)
[wicket-util-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.request.cycle.RequestCycleListenerCollection.onRequestHandlerScheduled(RequestCycleListenerCollection.java:177)
[wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.request.cycle.RequestCycle.scheduleRequestHandlerAfterCurrent(RequestCycle.java:794)
[wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor.broadcastMessage(AbstractWebSocketProcessor.java:218)
[wicket-native-websocket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at
org.apache.wicket.protocol.ws.api.AbstractWebSocketConnection.sendMessage(AbstractWebSocketConnection.java:43)
[wicket-native-websocket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
at quickstart.ws.WorkflowListener.onMessage(WorkflowListener.java:61)
[classes:]
at quickstart.ejb.WorkflowBean$1.run(WorkflowBean.java:85)
[quickstart-ejb-1.0-SNAPSHOT.jar:]
at quickstart.ejb.WorkflowBean.start(WorkflowBean.java:53)
[quickstart-ejb-1.0-SNAPSHOT.jar:]
at quickstart.ejb.WorkflowBean$Proxy$_$$_WeldClientProxy.start(Unknown
Source) [quickstart-ejb-1.0-SNAPSHOT.jar:]
at quickstart.HomePage$3.run(HomePage.java:80) [classes:]
at quickstart.MyApplication$TasksRunnable.run(MyApplication.java:80)
[classes:]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
[rt.jar:1.7.0_72]
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
[rt.jar:1.7.0_72]
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
[rt.jar:1.7.0_72]
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
[rt.jar:1.7.0_72]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_72]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_72]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_72]



Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

Re: CDI's ConversationPropagator#onRequestHandlerScheduled() in non-http thread

Posted by Martin Grigorov <mg...@apache.org>.
Thanks, Emond!

https://issues.apache.org/jira/browse/WICKET-5832

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Mon, Feb 9, 2015 at 10:50 AM, Emond Papegaaij <emond.papegaaij@topicus.nl
> wrote:

> Hi Martin,
>
> Unfortunately, there is no way to check if a certain context is active.
> Also,
> the websockets and CDI specs still don't align (
> https://issues.jboss.org/browse/CDI-370 ). For now, I agree the only
> thing we
> can do is catch the exception, probably
> javax.enterprise.context.ContextNotActiveException, and hope the user does
> not
> need any Request-, Session- or ConversationScoped beans.
>
> Best regards,
> Emond
>
> On Monday 09 February 2015 10:40:06 Martin Grigorov wrote:
> > Hi,
> >
> > The other day I've helped Sebastien with the task he explained at
> > http://markmail.org/message/mmviy6tsv47g7rhr.
> >
> > The problem we hit is that when an non-http thread needs to write to
> Native
> > WebSockets connection it fails at Weld check for active context
> > at ConversationPropagator#onRequestHandlerScheduled().
> >
> > When Native WS creates the dummy RequestCycle at
> >
> >
> org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor.broadcastMessa
> > ge(AbstractWebSocketProcessor.java:218)
> > [wicket-native-websocket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> >
> > it also calls
> >
> org.apache.wicket.request.cycle.RequestCycle.scheduleRequestHandlerAfterCurr
> > ent(RequestCycle.java:794)
> [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> >
> > that notifies all IRequestCycleListeners about the scheduled request
> > handler.
> >
> >
> https://github.com/apache/wicket/blob/master/wicket-cdi-1.1/src/main/java/or
> > g/apache/wicket/cdi/ConversationPropagator.java#L130 checks whether the
> > conversation is transient and this leads to the error below.
> >
> > In the use case there is no usage of CDI in the non-http thread at all.
> It
> > is just that ConversationPropagator as IRequestCycleListener is notified
> > and it tries to do its checks.
> >
> > As a workaround I've try/catched ConversationPropagator.java#L130 and
> > returned null in case of exception.
> >
> > Is there a better way to check for active context before trying to do: if
> > (conversation.isTransient()) ?
> >
> >
> > [0m [31m10:28:05,358 ERROR [org.apache.wicket.cdi.ConversationPropagator]
> > (pool-5-thread-1) No context!:
> > org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active
> > contexts for scope type javax.enterprise.context.RequestScoped
> > at
> >
> org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:680)
> > [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]
> > at
> >
> org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstanc
> > e.java:79) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]
> > at
> >
> org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:
> > 99) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]
> > at
> >
> org.jboss.weld.proxies.Conversation$1224015424$Proxy$_$$_WeldClientProxy.isT
> > ransient(Unknown Source)
> > at
> >
> org.apache.wicket.cdi.ConversationPropagator.onRequestHandlerScheduled(Conve
> > rsationPropagator.java:132)
> > [wicket-cdi-1.1-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> > estCycleListenerCollection.java:182)
> > [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> > estCycleListenerCollection.java:178)
> > [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection
> > .java:80) [wicket-util-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection.onRequestHand
> > lerScheduled(RequestCycleListenerCollection.java:177)
> > [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> > estCycleListenerCollection.java:182)
> > [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> > estCycleListenerCollection.java:178)
> > [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection
> > .java:80) [wicket-util-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection.onRequestHand
> > lerScheduled(RequestCycleListenerCollection.java:177)
> > [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> > estCycleListenerCollection.java:182)
> > [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> > estCycleListenerCollection.java:178)
> > [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection
> > .java:80) [wicket-util-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection.onRequestHand
> > lerScheduled(RequestCycleListenerCollection.java:177)
> > [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.request.cycle.RequestCycle.scheduleRequestHandlerAfterCurr
> > ent(RequestCycle.java:794)
> [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor.broadcastMessag
> > e(AbstractWebSocketProcessor.java:218)
> > [wicket-native-websocket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at
> >
> org.apache.wicket.protocol.ws.api.AbstractWebSocketConnection.sendMessage(Ab
> > stractWebSocketConnection.java:43)
> > [wicket-native-websocket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> > at quickstart.ws.WorkflowListener.onMessage(WorkflowListener.java:61)
> > [classes:]
> > at quickstart.ejb.WorkflowBean$1.run(WorkflowBean.java:85)
> > [quickstart-ejb-1.0-SNAPSHOT.jar:]
> > at quickstart.ejb.WorkflowBean.start(WorkflowBean.java:53)
> > [quickstart-ejb-1.0-SNAPSHOT.jar:]
> > at quickstart.ejb.WorkflowBean$Proxy$_$$_WeldClientProxy.start(Unknown
> > Source) [quickstart-ejb-1.0-SNAPSHOT.jar:]
> > at quickstart.HomePage$3.run(HomePage.java:80) [classes:]
> > at quickstart.MyApplication$TasksRunnable.run(MyApplication.java:80)
> > [classes:]
> > at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
> > [rt.jar:1.7.0_72]
> > at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> > [rt.jar:1.7.0_72]
> > at
> >
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$
> > 201(ScheduledThreadPoolExecutor.java:178) [rt.jar:1.7.0_72]
> > at
> >
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Sch
> > eduledThreadPoolExecutor.java:292) [rt.jar:1.7.0_72]
> > at
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:11
> > 45) [rt.jar:1.7.0_72]
> > at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:6
> > 15) [rt.jar:1.7.0_72]
> > at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_72]
> >
> >
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
>
>

Re: CDI's ConversationPropagator#onRequestHandlerScheduled() in non-http thread

Posted by Emond Papegaaij <em...@topicus.nl>.
Hi Martin,

Unfortunately, there is no way to check if a certain context is active. Also, 
the websockets and CDI specs still don't align ( 
https://issues.jboss.org/browse/CDI-370 ). For now, I agree the only thing we 
can do is catch the exception, probably 
javax.enterprise.context.ContextNotActiveException, and hope the user does not 
need any Request-, Session- or ConversationScoped beans.

Best regards,
Emond

On Monday 09 February 2015 10:40:06 Martin Grigorov wrote:
> Hi,
> 
> The other day I've helped Sebastien with the task he explained at
> http://markmail.org/message/mmviy6tsv47g7rhr.
> 
> The problem we hit is that when an non-http thread needs to write to Native
> WebSockets connection it fails at Weld check for active context
> at ConversationPropagator#onRequestHandlerScheduled().
> 
> When Native WS creates the dummy RequestCycle at
> 
>  org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor.broadcastMessa
> ge(AbstractWebSocketProcessor.java:218)
> [wicket-native-websocket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> 
> it also calls
> org.apache.wicket.request.cycle.RequestCycle.scheduleRequestHandlerAfterCurr
> ent(RequestCycle.java:794) [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> 
> that notifies all IRequestCycleListeners about the scheduled request
> handler.
> 
> https://github.com/apache/wicket/blob/master/wicket-cdi-1.1/src/main/java/or
> g/apache/wicket/cdi/ConversationPropagator.java#L130 checks whether the
> conversation is transient and this leads to the error below.
> 
> In the use case there is no usage of CDI in the non-http thread at all. It
> is just that ConversationPropagator as IRequestCycleListener is notified
> and it tries to do its checks.
> 
> As a workaround I've try/catched ConversationPropagator.java#L130 and
> returned null in case of exception.
> 
> Is there a better way to check for active context before trying to do: if
> (conversation.isTransient()) ?
> 
> 
> [0m [31m10:28:05,358 ERROR [org.apache.wicket.cdi.ConversationPropagator]
> (pool-5-thread-1) No context!:
> org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active
> contexts for scope type javax.enterprise.context.RequestScoped
> at
> org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:680)
> [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]
> at
> org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstanc
> e.java:79) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]
> at
> org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:
> 99) [weld-core-impl-2.1.2.Final.jar:2014-01-09 09:23]
> at
> org.jboss.weld.proxies.Conversation$1224015424$Proxy$_$$_WeldClientProxy.isT
> ransient(Unknown Source)
> at
> org.apache.wicket.cdi.ConversationPropagator.onRequestHandlerScheduled(Conve
> rsationPropagator.java:132)
> [wicket-cdi-1.1-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> estCycleListenerCollection.java:182)
> [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> estCycleListenerCollection.java:178)
> [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection
> .java:80) [wicket-util-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection.onRequestHand
> lerScheduled(RequestCycleListenerCollection.java:177)
> [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> estCycleListenerCollection.java:182)
> [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> estCycleListenerCollection.java:178)
> [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection
> .java:80) [wicket-util-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection.onRequestHand
> lerScheduled(RequestCycleListenerCollection.java:177)
> [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> estCycleListenerCollection.java:182)
> [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$7.notify(Requ
> estCycleListenerCollection.java:178)
> [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection
> .java:80) [wicket-util-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection.onRequestHand
> lerScheduled(RequestCycleListenerCollection.java:177)
> [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.request.cycle.RequestCycle.scheduleRequestHandlerAfterCurr
> ent(RequestCycle.java:794) [wicket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor.broadcastMessag
> e(AbstractWebSocketProcessor.java:218)
> [wicket-native-websocket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at
> org.apache.wicket.protocol.ws.api.AbstractWebSocketConnection.sendMessage(Ab
> stractWebSocketConnection.java:43)
> [wicket-native-websocket-core-7.0.0-SNAPSHOT.jar:7.0.0-SNAPSHOT]
> at quickstart.ws.WorkflowListener.onMessage(WorkflowListener.java:61)
> [classes:]
> at quickstart.ejb.WorkflowBean$1.run(WorkflowBean.java:85)
> [quickstart-ejb-1.0-SNAPSHOT.jar:]
> at quickstart.ejb.WorkflowBean.start(WorkflowBean.java:53)
> [quickstart-ejb-1.0-SNAPSHOT.jar:]
> at quickstart.ejb.WorkflowBean$Proxy$_$$_WeldClientProxy.start(Unknown
> Source) [quickstart-ejb-1.0-SNAPSHOT.jar:]
> at quickstart.HomePage$3.run(HomePage.java:80) [classes:]
> at quickstart.MyApplication$TasksRunnable.run(MyApplication.java:80)
> [classes:]
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
> [rt.jar:1.7.0_72]
> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> [rt.jar:1.7.0_72]
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$
> 201(ScheduledThreadPoolExecutor.java:178) [rt.jar:1.7.0_72]
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Sch
> eduledThreadPoolExecutor.java:292) [rt.jar:1.7.0_72]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:11
> 45) [rt.jar:1.7.0_72]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:6
> 15) [rt.jar:1.7.0_72]
> at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_72]
> 
> 
> 
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov