2011-12-15 153 views
3

尝试以下(http://activemq.apache.org/jndi-support.html)使用JNDI运行得到的ActiveMQ和我拥有所有必需的ActiveMQ的罐子在我的JBoss /服务器/节点/ lib文件夹,我的jndi.properties样子:ActiveMQ的JNDI查找问题

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

+0

让我知道,如果需要了解更多信息 – Rachel 2011-12-16 01:14:16

回答

2

我能得到它运行起来,问题是,我有一个jndi.properties文件,在该文件中,我有标准,

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

,因为我们已经在我们的应用程序中使用jndi,所以我无法继续修改​​这里存在的文件,也无法添加我的activemq相关更改,因此解决方案是为activemq创建不同的jndi.properties文件并获取新的initialcontext把它作为ActiveMQInitialContextFactory vs. NamingContextFactory提到的和其他的事情不得不作出肯定的是,我有两个生产和发送方相同代理的信息,这是显而易见的,它能正常工作。

添加信息,以便下一次有人在这个问题上的土地了,然后他或她不必花时间,我已经花出去搞清楚这件事。希望这会有所帮助。