Hello,
my vaadin project contains declarative designs, which are instantiated by code at runtime.
This works very well until using Server Push with @Push annotation.
Server Push uses websockets as default transport mode.
All requests from the webpage comes now over asynchronious websockets, which causes the following exception stack trace:
com.vaadin.ui.declarative.DesignException: Unable to load component for design
at com.vaadin.ui.declarative.Design$DefaultComponentFactory.resolveComponentClass(Design.java:205)
at com.vaadin.ui.declarative.Design$DefaultComponentFactory.createComponent(Design.java:158)
at com.vaadin.ui.declarative.Design$DefaultComponentFactory.createComponent(Design.java:167)
at com.vaadin.ui.declarative.Design$DefaultComponentFactory.createComponent(Design.java:167)
at com.vaadin.ui.declarative.Design$DefaultComponentFactory.createComponent(Design.java:167)
at com.vaadin.ui.declarative.Design$DefaultComponentMapper.tagToComponent(Design.java:249)
at com.vaadin.ui.declarative.DesignContext.instantiateComponent(DesignContext.java:569)
at com.vaadin.ui.declarative.DesignContext.readDesign(DesignContext.java:505)
at com.vaadin.ui.AbstractOrderedLayout.readDesign(AbstractOrderedLayout.java:471)
at com.vaadin.ui.declarative.DesignContext.readDesign(DesignContext.java:526)
at com.vaadin.ui.declarative.Design.designToComponentTree(Design.java:503)
at com.vaadin.ui.declarative.Design.read(Design.java:613)
at siebert.xcplus.ui.MainScreenUI.<init>(MainScreenUI.java:28)
at siebert.xcplus.ui.MainScreen.<init>(MainScreen.java:26)
at siebert.xcplus.ui.MyUI.showMainView(MyUI.java:123)
at siebert.xcplus.ui.MyUI$1.loginSuccessful(MyUI.java:92)
at siebert.xcplus.ui.authentication.LoginScreen.login(LoginScreen.java:132)
at siebert.xcplus.ui.authentication.LoginScreen.access$000(LoginScreen.java:27)
at siebert.xcplus.ui.authentication.LoginScreen$1.buttonClick(LoginScreen.java:98)
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:498)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:499)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:273)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:237)
at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1014)
at com.vaadin.ui.Button.fireClick(Button.java:371)
at com.vaadin.ui.Button.click(Button.java:360)
at com.vaadin.ui.Button$ClickShortcut.handleAction(Button.java:477)
at com.vaadin.event.ActionManager.handleAction(ActionManager.java:242)
at com.vaadin.event.ConnectorActionManager.handleAction(ConnectorActionManager.java:75)
at com.vaadin.event.ActionManager.handleAction(ActionManager.java:237)
at com.vaadin.event.ActionManager.handleActions(ActionManager.java:220)
at com.vaadin.ui.UI.changeVariables(UI.java:444)
at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:625)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:471)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:414)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274)
at com.vaadin.server.communication.PushHandler.lambda$new$1(PushHandler.java:145)
at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:235)
at com.vaadin.server.communication.PushHandler.onMessage(PushHandler.java:520)
at com.vaadin.server.communication.PushAtmosphereHandler.onMessage(PushAtmosphereHandler.java:87)
at com.vaadin.server.communication.PushAtmosphereHandler.onRequest(PushAtmosphereHandler.java:77)
at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:223)
at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:115)
at org.atmosphere.container.Servlet30CometSupport.service(Servlet30CometSupport.java:67)
at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2284)
at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:593)
at org.atmosphere.websocket.DefaultWebSocketProcessor$3.run(DefaultWebSocketProcessor.java:345)
at org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101)
at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:340)
at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:447)
at org.atmosphere.container.JSR356Endpoint$3.onMessage(JSR356Endpoint.java:272)
at org.atmosphere.container.JSR356Endpoint$3.onMessage(JSR356Endpoint.java:269)
at org.eclipse.jetty.websocket.jsr356.messages.TextWholeMessage.messageComplete(TextWholeMessage.java:56)
at org.eclipse.jetty.websocket.jsr356.endpoints.JsrEndpointEventDriver.onTextFrame(JsrEndpointEventDriver.java:215)
at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:160)
at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:302)
at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:214)
at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220)
at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:258)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:613)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:468)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:610)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:539)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: com$vaadin$ui$Panel
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at com.vaadin.ui.declarative.Design$DefaultComponentFactory.resolveComponentClass(Design.java:200)
By switching the transport mode to LONG_POLLING all works well.
But does anybody know, how to use websocket transport mode with dynamic instantiated declarative designs???
Regards
Andy