2012-11-06 48 views
2

我有一个独立的hornetq服务器和一个JMS客户端与它一起工作!关于hornetq用户手册,我应该只添加jnp-client.jarjms.jar到客户端类路径。但是,当我试图使用HornetQ服务(生产和消费的消息),几个ClassNotFoundExceptions抛出,所以我被迫添加这些JAR文件到我的客户端类路径:我需要JMS客户端的哪个HornetQ库?

1. JMS 2. JNP客户端 3. hornetq- JMS客户端 4.网状 5. HornetQ的核 - cilent 6. JBoss的共用

正在使用HornetQ的核心客户端代替JMS客户端 I 12我真的需要什么jar文件jms客户端 ??

我的applicationContext.xml:

<!-- JndiTemplate --> 
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
     <property name="environment"> 
      <props> 
       <prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop> 
       <prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop> 
       <prop key="java.naming.provider.url">jnp://localhost:1099</prop> 
      </props> 
     </property> 
</bean> 

<!-- Connection Factory --> 
<bean id="hornetqConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="jndiTemplate" ref="jndiTemplate"/> 
     <property name="jndiName" value="/ConnectionFactory" /> 
</bean> 

<!-- Destionation --> 
<bean id="annotationDeleteCommandDestination" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="jndiTemplate" ref="jndiTemplate"/> 
     <property name="jndiName" value="/queue/command/annotation/deleteQueue" /> 
</bean> 

<!-- Message Listener --> 
<bean id="annotationMessageHandler" class="command.messaging.handler.annotation.AnnotationMessageHandler"> 
     <property name="annotationService" ref="annotationService"/> 
</bean> 

<!-- Message Listener Container --> 
<bean id="annotationDeleteCommandMsgListenerContainer" 
     class="org.springframework.jms.listener.DefaultMessageListenerContainer" 
     p:connectionFactory-ref="hornetqConnectionFactory" 
     p:destination-ref="annotationDeleteCommandDestination" 
     p:cacheLevelName="CACHE_CONSUMER" 
     p:messageListener-ref="annotationDeleteCommandMessageHandler" 
     p:concurrentConsumers="10" 
     p:maxConcurrentConsumers="50" 
     p:receiveTimeout="5000" 
     p:idleTaskExecutionLimit="10 
     p:idleConsumerLimit="5" /> 

<!-- Message Producer --> 
<bean id="messageSender" class="command.messaging.sender.MessageSender"> 
     <property name="connectionFactory" ref="hornetqConnectionFactory" /> 
</bean> 

回答

0

HornetQ中的JMS客户端是HornetQ的核心客户端暴露出JMS API的适配器。 所以你需要他们两个。

而HornetQ-Core-Client在内部需要netty,所以你也需要这个netty。

不确定关于jboss-common。你需要一些日志依赖,但我不记得确切的是哪一个。

请注意,与SOAP不同,JMS是一个API,而不是一个协议。应用程序的其余部分独立于API提供程序,但您需要了解JMS服务器使用的自定义协议的正确客户端库。例如,您不能使用HornetQ JMS客户端连接到ActiveMQ。

+1

除非要在客户端ala jboss样式上进行日志记录配置,否则您不需要客户端上的jboss-loggins。 –

+0

他也在使用spring ..我不确定他需要什么样的依赖。 –

0

%的文档...

如果您使用的只是一个纯粹的Hornet的核心客户(即无JMS),那么你需要将hornetq核-client.jar中,将hornetq-commons.jar和netty.jar 。

如果您在客户端使用JMS,那么您还需要包含hornetq-jms-client.jar和jboss-jms-api.jar。

这些是指独立hornetq下载的lib目录中的文件。

我需要添加jnp-client.jar以避免CNF。