我在Tomcat + ActiveMQ服务器上配置了一组JMS队列。我已经为connectionFactory创建了一个Resource(通过将Broker指向tcp:localhost:61616),并在全局资源中的Server.xml中为Queue创建了一个资源,然后在context.xml中声明了这两个资源。
现在我尝试从另一个tomcat服务器连接此队列并发送消息。当我尝试使用jndi名称查找连接工厂时,我收到了NamingException - 在此上下文中没有为ConnectionFactory JNDI绑定名称。
我试图达到这样的目标: 设置属性中的值以下 Provider_URL = http://Localhost:8080 INITIAL_CONTEXT_FACTORY = org.apache.naming.java.javaURLContextFactory
然后使用上面的属性值创建新的InitialContext,然后查找connectionFactory的jndi。
但它不起作用。
我尝试了其他选项,通过使用ActiveMQContextFactory作为INITIAL_CONTEXT_FACTORY和Provider_URL = tcp:// localhost:61616直接获取ActiveMQ的上下文 我在客户端tomcat服务器的类路径中保存了一个简单的jndi.properties文件,如其他帖子中所述。它运作良好。
但我不喜欢它。因为当我将activeMQ连接和Queue配置为Tomcat中的资源时,这意味着我应该能够通过Tomcat进行JNDI查找,而不是直接进入Active mq。我不想给所有客户端提供ActiveMQ主机:端口。
我认为在Tomcat服务器配置上必须存在一些错误,它的connectionfactory / queue JNDI无法在外面进行查找。
今天我经历了很多挣扎。有人可以指出我可能犯的错误。
提前致谢。