java - ActiveMQ JNDI 查找问题

标签 java jboss jndi activemq

尝试使用 JNDI 运行以下 ( http://activemq.apache.org/jndi-support.html ) 来获取 ActiveMQ,我的 jboss/server/node/lib 文件夹中有所有必需的 activeMQ jar,我的 jndi.properties 如下所示:

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory

# use the following property to configure the default connector
java.naming.provider.url = vm://localhost

# use the following property to specify the JNDI name the connection factory
# should appear as. 
#connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry
connectionFactoryNames = connectionFactory

# register some queues in JNDI using the form
# queue.[jndiName] = [physicalName]
queue.MyQueue = TESTQUEUE


# register some topics in JNDI using the form
# topic.[jndiName] = [physicalName]
topic.MyTopic = example.MyTopic

并且在实际产生调用的生产者中有以下代码:

InitialContext ic = null;
ConnectionFactory factory = null;
Connection con = null;
Session session = null;
Queue queue = null;
MessageProducer producer = null;

ic = new InitialContext();
factory = (ConnectionFactory) ic.lookup("connectionFactoryNames");
con = factory.createConnection();
session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (Queue)ic.lookup("queue/TESTQUEUE");
producer = session.createProducer(queue);
// Then... send the message.
producer.send(session.createObjectMessage(new Long(Id)));

这是我遇到的异常,不确定 scheme java not recognized 是什么意思

WARN org.jboss.system.ServiceController - Problem starting service jboss:service=Naming
javax.naming.NamingException: scheme java not recognized
    at org.apache.activemq.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:221)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at org.jboss.naming.NamingService.startService(NamingService.java:274)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
    at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
    at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
    at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
    at $Proxy0.start(Unknown Source)
    at org.jboss.system.ServiceController.start(ServiceController.java:417)
    at org.jboss.system.ServiceController.start(ServiceController.java:435)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
    at $Proxy4.start(Unknown Source)
    at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
    at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:766)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
    at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
    at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
    at $Proxy5.deploy(Unknown Source)
    at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
    at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
    at org.jboss.Main.boot(Main.java:200)
    at org.jboss.Main$1.run(Main.java:490)
    at java.lang.Thread.run(Thread.java:662)

这个问题让我朝着正确的方向前进:ActiveMQInitialContextFactory vs. NamingContextFactory

最佳答案

我能够启动并运行它,问题是我有一个 jndi.properties 文件并且在该文件中我有标准,

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

并且因为我们已经在我们的应用程序中使用了 jndi,所以我无法继续修改​​此处存在的文件,也无法在此处添加我的 activemq 相关更改,因此解决方案是创建不同的 jndi.properties 文件为 activemq 并获取新的 initialcontextActiveMQInitialContextFactory vs. NamingContextFactory 中所述另一件事必须确保我在生产者和发件人方面都有相同的经纪人信息,这很明显并且工作正常。

添加信息,以便下次有人解决这个问题时,他或她就不必花费我已经花在解决这个问题上的时间。希望这会有所帮助。

关于java - ActiveMQ JNDI 查找问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8528102/

相关文章:

java - M2E Eclipse Maven 工作区解析和 CDI

jboss - EAP 7.3 : java. lang.ClassNotFoundException: # 许可给 Apache 软件基金会 (ASF) 一个或多个 - 仅在独立模式下

spring - 上下文初始化失败 : org. springframework.beans.factory.BeanDefinitionStoreException

java - JBoss下链式MySQL语句

java - Spring Boot - JNDI 值查找

java - 使用AWS S3作为监控平台的中间存储层

java - Android - 启用 Proguard 后应用程序崩溃

java - 以 jpeg 格式保存色彩空间

java - 如何处理 Selenium WebDriver 中的间歇性警报?

glassfish - 访问位于另一台服务器中的远程 ejb 的简便方法