-1
    please anybody help to fix this issue?<br/>
    **I am getting issue [client] - AMQ214008: Failed to handle packet java.lang.UnsupportedOperationException while processing the command data in javalite async?**<br/>

            [2018-03-30 10:27:16,303] - [DEBUG] [client] - Calling close on session ClientSessionImpl [name=d13aa760-33d6-11e8-b4fb-844bf530b8f3, username=null, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@58e64301, metaData=(jms-session=,)]@6a6c5fb3 <br/>
            [2018-03-30 10:27:16,306] - [DEBUG] [server] - QueueImpl[name=jms.queue.eventQueue, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=70d74287-3283-11e8-8a66-844bf530b8f3]]@39533a61 doing deliver. messageReferences=0 <br/>
            [2018-03-30 10:27:16,308] - [DEBUG] [client] - calling cleanup on ClientSessionImpl [name=d13aa760-33d6-11e8-b4fb-844bf530b8f3, username=null, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@58e64301, metaData=(jms-session=,)]@6a6c5fb3 <br/>
            [2018-03-30 10:27:16,335] - [DEBUG] [HttpAsyncRequestExecutor] - http-outgoing-0 [ACTIVE] [content length: 42355; pos: 42355; completed: true] <br/>
            [2018-03-30 10:27:16,336] - [DEBUG] [ThreadLocalRandom] - -Dio.netty.initialSeedUniquifier: 0xad1a1d5891abf66a <br/>
            **[2018-03-30 10:27:16,337] - [ERROR] [client] - AMQ214008: Failed to handle packet <br/>
            java.lang.UnsupportedOperationException<br/>
            at java.nio.ByteBuffer.array(Unknown Source)**<br/>
            at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.handleCompressedMessage(ClientConsumerImpl.java:600)<br/>
            at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.handleMessage(ClientConsumerImpl.java:532)<br/>
            at org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.handleReceiveMessage(ClientSessionImpl.java:824)<br/>
            at org.apache.activemq.artemis.spi.core.remoting.SessionContext.handleReceiveMessage(SessionContext.java:97)<br/>
            at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext.handleReceivedMessagePacket(ActiveMQSessionContext.java:712)<br/>
            at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext.access$400(ActiveMQSessionContext.java:111)<br/>
            at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext$ClientSessionPacketHandler.handlePacket(ActiveMQSessionContext.java:755)<br/>
            at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.handlePacket(ChannelImpl.java:594)<br/>
            at org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.doBufferReceived(RemotingConnectionImpl.java:368)<br/>
            at org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:350)<br/>
            at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl$DelegatingBufferHandler.bufferReceived(ClientSessionFactoryImpl.java:1140)<br/>
            at org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnection$1.run(InVMConnection.java:183)<br/>
            at org.apache.activemq.artemis.utils.OrderedExecutorFactory$OrderedExecutor$ExecutorTask.run(OrderedExecutorFactory.java:100)<br/>
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)<br/>
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)<br/>
            at java.lang.Thread.run(Unknown Source)<br/>
               <br/><br/>            

当我在独立项目中执行代码时,它工作正常。但是在 Tomcat 服务器上运行相同的程序时,它会抛出上述错误..?


源代码低于 public class TestCommand extends Command { private TestEvent event;

          public TestCommand(MsgEvent event) 
          {
          this.event = (TestEvent)event;
          }

          public TestCommand() 
          {
          } 

          @Override
          public void execute() 
          {   
              //code stuff
          }

      }
      <br/><br/>          
      async = new Async(filePath, false, new QueueConfig("eventQueue", new CommandListener(), threadCount));
          <br/>
      async.start();
      <br/>
      public void test(EventCommand ev)
      {
          async.send("eventQueue", ev);
      }       <br/>

以下库被加载到类路径中

请有人帮忙解决这个问题吗?

4

1 回答 1

1

证据表明,当这段代码在 Tomcat 中执行时,它使用的 java.nio.ByteBuffer 实现与独立运行时不同(可能是由于 Netty 的不同版本)。导致异常的代码调用了不需要实现的java.nio.ByteBuffer.array() (即抛出 UnsupportedOperationException 在这里是有效的)。这在 Artemis 中通过此提交处理,该提交在 Artemis 1.4 中可用。也就是说,没有理由使用这么旧版本的 Artemis。我建议您尽快升级到最新的 2.5 版本。

于 2018-03-30T17:18:52.570 回答