0 Replies Latest reply on Apr 24, 2015 9:56 AM by John Johny

    Errai marshalling doesn't work

    John Johny Newbie

      Hi, I have a basic POJO object, which I want to send from server to client. I addded @Portable and @MapsTo annotations.

       

      User.java

       

      package gwt.user.model;
      
      import org.jboss.errai.common.client.api.annotations.MapsTo;
      import org.jboss.errai.common.client.api.annotations.Portable;
      
      @Portable
      public class User{
      
        private String id;
        private String username;
        private String numberOfHits;
        
        public User(@MapsTo("id") String id, @MapsTo("username") String username, @MapsTo("numberOfHits") String numberOfHits) {
            this.id = id;
            this.username = username;
            this.numberOfHits = numberOfHits;
          }
      
        public String getId() {
          return id;
        }
      
        public void setId(String id) {
          this.id = id;
        }
      
        public String getUsername() {
          return username;
        }
      
        public void setUsername(String username) {
          this.username = username;
        }
        
        public String getNumberOfHits() {
          return numberOfHits;
        }
      
        public void setNumberOfHits(String numberOfHits) {
          this.numberOfHits = numberOfHits;
        }
        
      }
      

       

      When i want to send this user object

       

      MessageBuilder.createMessage().toSubject("ClientService").signalling().with("user", new User("8", "Johny", "32")).noErrorHandling().sendNowWith(this.dispatcher); 
      

       

      I get error message:  no marshalling definition available for type:gwt.user.model.User

       

      java.lang.RuntimeException: no marshalling definition available for type:gwt.user.model.User
        at org.jboss.errai.marshalling.client.util.MarshallUtil.getMarshaller(MarshallUtil.java:135)
        at org.jboss.errai.marshalling.client.marshallers.ErraiProtocolEnvelopeMarshaller.marshall(ErraiProtocolEnvelopeMarshaller.java:100)
        at org.jboss.errai.marshalling.client.protocols.ErraiProtocol.encodePayload(ErraiProtocol.java:40)
        at org.jboss.errai.marshalling.server.protocol.ErraiProtocolServer.encodePayloadToByteArrayInputStream(ErraiProtocolServer.java:31)
        at org.jboss.errai.bus.server.io.BufferHelper.encodeAndWrite(BufferHelper.java:38)
        at org.jboss.errai.bus.server.ServerMessageBusImpl$RemoteMessageCallback.callback(ServerMessageBusImpl.java:664)
        at org.jboss.errai.bus.server.DeliveryPlan.deliver(DeliveryPlan.java:47)
        at org.jboss.errai.bus.server.ServerMessageBusImpl.sendGlobal(ServerMessageBusImpl.java:296)
        at org.jboss.errai.bus.server.ServerMessageBusImpl.send(ServerMessageBusImpl.java:354)
        at org.jboss.errai.bus.server.SimpleDispatcher.dispatch(SimpleDispatcher.java:60)
        at org.jboss.errai.bus.client.api.base.CommandMessage.sendNowWith(CommandMessage.java:349)
        at org.jboss.errai.bus.client.api.base.DefaultMessageBuilder$1.sendNowWith(DefaultMessageBuilder.java:95)
        at gwt.user.server.MessageController.sendMessage(MessageController.java:28)
        at gwt.user.server.MessageController.callback(MessageController.java:34)
        at org.jboss.errai.bus.server.DeliveryPlan.deliver(DeliveryPlan.java:47)
        at org.jboss.errai.bus.server.ServerMessageBusImpl.sendGlobal(ServerMessageBusImpl.java:296)
        at org.jboss.errai.bus.server.SimpleDispatcher.dispatchGlobal(SimpleDispatcher.java:46)
        at org.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:97)
        at org.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:114)
        at org.jboss.errai.bus.server.servlet.DefaultBlockingServlet.doPost(DefaultBlockingServlet.java:142)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1517)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1474)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
      *** Message delivery failure ***
      Bus: org.jboss.errai.bus.server.ServerMessageBusImpl@55d44a84
      Message: ToSubject=ClientService, user=gwt.user.model.User@253c4d9f
      errorMessage: Error calling remote service: ClientService
      exception: java.lang.RuntimeException: no marshalling definition available for type:gwt.user.model.User
      disconnect: false
      org.jboss.errai.bus.client.api.base.MessageDeliveryFailure: could not deliver message: cannot have a conversation.  the incoming message has no session data associated with it.
        at org.jboss.errai.bus.client.api.base.CommandMessage.sendNowWith(CommandMessage.java:352)
        at org.jboss.errai.bus.client.api.base.DefaultMessageBuilder$1.sendNowWith(DefaultMessageBuilder.java:95)
        at gwt.user.server.MessageController.sendMessage(MessageController.java:28)
        at gwt.user.server.MessageController.callback(MessageController.java:34)
        at org.jboss.errai.bus.server.DeliveryPlan.deliver(DeliveryPlan.java:47)
        at org.jboss.errai.bus.server.ServerMessageBusImpl.sendGlobal(ServerMessageBusImpl.java:296)
        at org.jboss.errai.bus.server.SimpleDispatcher.dispatchGlobal(SimpleDispatcher.java:46)
        at org.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:97)
        at org.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:114)
        at org.jboss.errai.bus.server.servlet.DefaultBlockingServlet.doPost(DefaultBlockingServlet.java:142)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1517)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1474)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
      Caused by: java.lang.RuntimeException: cannot have a conversation.  the incoming message has no session data associated with it.
        at org.jboss.errai.bus.client.api.base.ConversationMessageWrapper.commit(ConversationMessageWrapper.java:294)
        at org.jboss.errai.bus.server.ServerMessageBusImpl.send(ServerMessageBusImpl.java:334)
        at org.jboss.errai.bus.client.api.base.ConversationMessageWrapper.sendNowWith(ConversationMessageWrapper.java:238)
        at org.jboss.errai.bus.client.api.base.DefaultMessageBuilder$1.sendNowWith(DefaultMessageBuilder.java:84)
        at org.jboss.errai.bus.client.util.ErrorHelper.sendClientError(ErrorHelper.java:143)
        at org.jboss.errai.bus.client.util.ErrorHelper.sendClientError(ErrorHelper.java:98)
        at org.jboss.errai.bus.client.util.ErrorHelper.handleMessageDeliveryFailure(ErrorHelper.java:234)
        at org.jboss.errai.bus.server.SimpleDispatcher.dispatch(SimpleDispatcher.java:67)
        at org.jboss.errai.bus.client.api.base.CommandMessage.sendNowWith(CommandMessage.java:349)
        ... 33 more
      *** Message delivery failure ***
      Bus: org.jboss.errai.bus.server.ServerMessageBusImpl@55d44a84
      Message: ToSubject=MessageController
      errorMessage: Error calling remote service: MessageController
      exception: org.jboss.errai.bus.client.api.base.MessageDeliveryFailure: could not deliver message: cannot have a conversation.  the incoming message has no session data associated with it.