Hi all. wicket 7.3 tomcat 8.5.5
I'm starting to see many more exceptions in relation to web sockets. [1] I have a HttpSessionListener, which sends a message to an actor when a session is destroyed (aka user logout). The actor eventually broadcasts a web socket message. Am I doing something wrong in my code [2]? [1] oawpwa.AbstractWebSocketProcessor An error occurred during processing of a WebSocket message java.lang.IllegalArgumentException: Argument 'component' may not be null. at org.apache.wicket.util.lang.Args.notNull(Args.java:41) at org.apache.wicket.protocol.ws.api.WebSocketRequestHandler.<init>(WebSocketRequestHandler.java:59) at org.apache.wicket.protocol.ws.WebSocketSettings.newWebSocketRequestHandler(WebSocketSettings.java:220) at org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor.broadcastMessage(AbstractWebSocketProcessor.java:245) at org.apache.wicket.protocol.ws.api.AbstractWebSocketConnection.sendMessage(AbstractWebSocketConnection.java:43) at org.apache.wicket.protocol.ws.api.WebSocketPushBroadcaster$1.run(WebSocketPushBroadcaster.java:124) at org.apache.wicket.protocol.ws.WebSocketSettings$SameThreadExecutor.run(WebSocketSettings.java:246) at org.apache.wicket.protocol.ws.api.WebSocketPushBroadcaster.process(WebSocketPushBroadcaster.java:119) at org.apache.wicket.protocol.ws.api.WebSocketPushBroadcaster.broadcastAll(WebSocketPushBroadcaster.java:109) at com.starjar.engine.LoggedInUserTrackerActor.broadcastStats(LoggedInUserTrackerActor.scala:69) at com.starjar.engine.LoggedInUserTrackerActor$$anonfun$receive$1.applyOrElse(LoggedInUserTrackerActor.scala:125) at akka.actor.Actor$class.aroundReceive(Actor.scala:467) at com.starjar.engine.LoggedInUserTrackerActor.aroundReceive(LoggedInUserTrackerActor.scala:31) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516) at akka.actor.ActorCell.invoke(ActorCell.scala:487) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) at akka.dispatch.Mailbox.run(Mailbox.scala:220) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [2] The broadcasting code running in my actor. private def buildLoggedInUserMessage(): CurrentlyLoggedInUsers = { val response = ... /* snip snip snip */ response } def broadcastStats(): Unit = { val application = WicketStarjarApplication.get() val webSocketSettings = WebSocketSettings.Holder.get(application) val broadcaster = new WebSocketPushBroadcaster(webSocketSettings.getConnectionRegistry()) broadcaster.broadcastAll(application, buildLoggedInUserMessage) } Thanks Peter. -- Peter Henderson