ActiveMQ JNDI 查找问题
Posted
技术标签:
【中文标题】ActiveMQ JNDI 查找问题【英文标题】:ActiveMQ JNDI Lookup Issues 【发布时间】:2012-01-21 14:55:28 【问题描述】:尝试让 ActiveMQ 与 JNDI 运行以下 (http://activemq.apache.org/jndi-support.html),我的 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
【问题讨论】:
如果需要更多信息,请告诉我 【参考方案1】:我能够启动并运行它,问题是我有一个 jndi.properties
文件,并且在该文件中我有标准,
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
并且由于我们已经在我们的应用程序中使用了 jndi,我无法继续修改此处存在的文件,也无法在此处添加我的 activemq
相关更改,因此解决方案是为 @987654326 创建不同的 jndi.properties
文件@ 并得到新的initialcontext
,如ActiveMQInitialContextFactory vs. NamingContextFactory 中提到的那样,其他事情必须确保我对生产者和发送者端都有相同的经纪人信息,这很明显并且工作正常。
添加信息,以便下次有人提出这个问题时,他或她不必花费我已经花时间弄清楚这件事的时间。希望这会有所帮助。
【讨论】:
以上是关于ActiveMQ JNDI 查找问题的主要内容,如果未能解决你的问题,请参考以下文章