Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ActiveMQ-从JMS远程主机接收时无法识别对象_Java_Jms_Activemq_Instanceof_Activemq Artemis - Fatal编程技术网

Java ActiveMQ-从JMS远程主机接收时无法识别对象

Java ActiveMQ-从JMS远程主机接收时无法识别对象,java,jms,activemq,instanceof,activemq-artemis,Java,Jms,Activemq,Instanceof,Activemq Artemis,我正在两台JBoss服务器上设置JMS请求-应答。 在客户机中,我使用camel jms和Fuse route创建调用 .setExchangePattern(ExchangePattern.InOut) .to(camelContext.getEndpoint(JMS_BEANID,JmsQueueEndpoint.class)) 基本上,它将创建临时队列并发送到服务器。 在服务器中,我创建了MessageListener的实现来监听消息 从调试视图message.getJMSReplyTo

我正在两台JBoss服务器上设置JMS请求-应答。 在客户机中,我使用camel jms和Fuse route创建调用

.setExchangePattern(ExchangePattern.InOut)
.to(camelContext.getEndpoint(JMS_BEANID,JmsQueueEndpoint.class))
基本上,它将创建临时队列并发送到服务器。 在服务器中,我创建了
MessageListener
的实现来监听消息

从调试视图
message.getJMSReplyTo()
返回
ActiveMQTemporaryQueue
的实例。但是,当我尝试检查ActiveMQTemporaryQueue的
message.getJMSReplyTo()实例时,它返回
false
。我尝试自己创建
ActiveMQTemporaryQueue
check返回预期的
true
,例如:

public-void-onMessage(消息消息){
Destination replyTo=message.getJMSReplyTo();
if(replyTo instanceof ActiveMQTemporaryQueue){
//false,尽管调试器显示它是ActiveMQTemporaryQueue对象
}
目标测试=新的ActiveMQTemporaryQueue(“本地主机”、“测试队列”、“ActiveMQSession”会话);
if(ActiveMQTemporaryQueue的测试实例){
//真的
}
}
客户机和服务器位于两个不同的Maven项目中(两个不同的war,部署到不同的服务器上,相同的工作区)


我不知道发生了什么事。你有什么建议吗?

我猜这是一个类加载问题,但根据你提供的信息很难判断


尽管如此,我强烈建议您不要在代码中使用任何实现对象(即
ActiveMQTemporaryQueue
)。如果您试图做的只是请求/回复,那么绝对不需要使用任何实现对象。如果需要知道
getJMSReplyTo()
返回的值是否是临时队列,那么只需使用
replyTo instanceof javax.jms.TemporaryQueue
。如果您这样做,我认为您的问题将得到解决。

为什么要使用实现对象(即
ActiveMQTemporaryQueue
)?为什么不简单地测试
replyTo
是否是
javax.jms.TemporaryQueue
的一个实例呢?基本上,我只需要获取JMSReplyTo并使用messageProducer.send(replyTo,response);发送回数据。但是在send方法内部,它检查replyTo对象是否是ActiveMQDestination的实例(ActiveMQTemporaryQueue是该类的子类)。奇怪的是,检查返回false,我上面的代码块就是这个问题的一个例子:(您没有回答我的问题。为什么它必须检查
replyTo
是否是
ActiveMQTemporaryQueue
的实例?您不需要这样做,只需使用消息生成器将消息发送到目标。从调试视图中,我可以看到该对象是ActiveMQTemporaryQueue。因此,我尝试使用确切的对象返回来查看什么是ha。)正在出现。我仍然不知道发生了什么。但我通过定义回复队列而不是依赖临时队列来实现它。感谢关注此问题。