池连接问题、ActiveMQ 5.14.3、JMS 2.0、Karaf 4.2.0

池连接问题、ActiveMQ 5.14.3、JMS 2.0、Karaf 4.2.0,jms,osgi,activemq,apache-karaf,Jms,Osgi,Activemq,Apache Karaf,我现在无法切换到Artemis。在后续的几篇文章中,我了解到ActiveMQ与JMS 2.0通信变得很棘手 由于jolokiaapi()中的一些限制,我切换到jmsapi来浏览注释中建议的队列。这工作得非常好,并且在作为独立应用程序运行时提供了预期的结果,因为我已经将activemq客户端作为依赖项之一包括在内: org.apache.activemq activemq客户端 5.12.1 罐子 我尝试在Karaf中使用相同的依赖项部署类似的实现,方法是创建连接工厂,如下所示: Connec

我现在无法切换到Artemis。在后续的几篇文章中,我了解到ActiveMQ与JMS 2.0通信变得很棘手

由于jolokiaapi()中的一些限制,我切换到jmsapi来浏览注释中建议的队列。这工作得非常好,并且在作为独立应用程序运行时提供了预期的结果,因为我已经将activemq客户端作为依赖项之一包括在内:


org.apache.activemq
activemq客户端
5.12.1
罐子
我尝试在Karaf中使用相同的依赖项部署类似的实现,方法是创建连接工厂,如下所示:

ConnectionFactory ConnectionFactory=new-ActiveMQConnectionFactory(
"tcp://localhost:61616");
此操作失败,因为: 1.activemq客户端需要JMS 1.x 2.我的karaf容器具有JMS 2.0

因此,我选择将我的池连接工厂与
javax.jmsapi/2.0
一起用作osgi捆绑包中的jms api依赖项,如下所示:

e、 g.我的蓝图配置;其中,
jms/consumer
已在服务注册表中可用


javax.jms
javax.jms-api
2
我在创建连接时的代码片段如下所示:

brokerConnection=connectionFactory.createConnection();
会话=this.createSession(brokerConnection);
brokerConnection.start();
在此之前,brokerConnection和session都不是null

Queue Queue=session.createQueue(“test.Queue”);
queueBrowser=session.createBrowser(队列);
从这一点开始,我得到一个NullPointerException,如下所示:

java.lang.NullPointerException 
at org.apache.activemq.ActiveMQSession.createQueue(ActiveMQSession.java:1335) 
at org.apache.activemq.jms.pool.PooledSession.createQueue(PooledSession.java:197) 
at test.mbean.getBrokerEntries(BrokerMBean.java:142) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71) 
at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275) 
at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112) 
at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46) 
at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) 
at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) 
at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) 
at javax.management.StandardMBean.invoke(StandardMBean.java:405) 
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
at org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:98) 
at org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:40) 
at org.jolokia.handler.JsonRequestHandler.handleRequest(JsonRequestHandler.java:89) 
at org.jolokia.backend.MBeanServerExecutorLocal.handleRequest(MBeanServerExecutorLocal.java:109) 
at org.jolokia.backend.MBeanServerHandler.dispatchRequest(MBeanServerHandler.java:159) 
at org.jolokia.backend.LocalRequestDispatcher.dispatchRequest(LocalRequestDispatcher.java:99) 
... 
我不确定这里出了什么问题。任何输入都会非常有用


多谢各位

ActiveMQ JMS客户机不支持JMS 2.0,因此可能是混合了可能试图使用上述API的代码。您是对的。目前,我选择摆脱依赖JMS 2.0的组件。再次回到JMS1.x,它可以按预期工作。我也在ActiveMQ用户论坛()上发布了这个问题。有人建议我试用QPID JMS驱动程序。虽然我在第一次试用中没有成功,但我会尽快试用。ActiveMQ JMS客户端不支持JMS 2.0,因此混合可能试图使用所述API的代码可能是问题所在。您是对的。目前,我选择摆脱依赖JMS 2.0的组件。再次回到JMS1.x,它可以按预期工作。我也在ActiveMQ用户论坛()上发布了这个问题。有人建议我试用QPID JMS驱动程序。虽然我在第一次试训中没有成功,但我会尽快试一试。