2015-11-02 22 views
0

我的问题是,使用ActiveMQ我们可以有一个主题和队列同名的jndi ?.主题和队列同名,classcastexception

我都定义了相同的名称,当我尝试创建一个队列查找我收到此异常。

java.lang.ClassCastException: org.apache.activemq.command.ActiveMQTopic cannot be cast to javax.jms.Queue 
+0

如果您共享一个名字,你怎么认为JNDI会挑选合适的对象吗?它们不兼容。 –

+0

因为一个地址要创建一个队列并且同一个地址用于创建一个主题。例如,Tibco允许重用相同的地址,但看起来像ActiveMQ dont。但只是想100%肯定 – paul

+0

请问一个问题,如果有问题可以编辑该问题,请删除重复问题 – Vihar

回答

1

虽然你其实可以有一个主题和队列具有相同的名称,你不能共享主题和队列之间的JNDI名称。 JNDI名称使您可以查找单个对象(队列或主题)。

因此 - 请确保您有具有唯一名称的JNDI条目。

queue.MyQueue = samePhysicalName 
topic.MyTopic = samePhysicalName 

虽然我认为这是不好的做法,共享名称,因为它很难记录,排查等等等等

+0

我的问题是,在一个环境中,我们有tibco使用jndi使用两个不同的文件。一个用于队列,另一个用于话题。因此,如果你想要一个队列,如果你想要一个主题和队列文件,就可以创建一个具有相同名称的主题或队列,因为他正在搜索主题文件。但activeMQ使用相同的jndi.properties我有主题和队列地址 – paul