SpringJMS与JBoss7.11(HornetQ)
我正在尝试创建一个示例JMS应用程序。我想要它做的就是启动,当数据发送到端点时,让生产者向消费者发送消息 我的spring配置有问题,我不知道我需要在Maven中引入哪些依赖项(以及哪些版本)。我从一个简单的Roo项目开始 首先,我的SpringXML看起来正常吗?其次,我的maven依赖项正确吗?从我得到的错误来看,我想我已经从Maven那里得到了一个过时的依赖项。我还向jboss配置中添加了一个来宾用户/角色 以下是我的SpringXML的相关部分:SpringJMS与JBoss7.11(HornetQ),jms,jboss7.x,netty,hornetq,spring-jms,Jms,Jboss7.x,Netty,Hornetq,Spring Jms,我正在尝试创建一个示例JMS应用程序。我想要它做的就是启动,当数据发送到端点时,让生产者向消费者发送消息 我的spring配置有问题,我不知道我需要在Maven中引入哪些依赖项(以及哪些版本)。我从一个简单的Roo项目开始 首先,我的SpringXML看起来正常吗?其次,我的maven依赖项正确吗?从我得到的错误来看,我想我已经从Maven那里得到了一个过时的依赖项。我还向jboss配置中添加了一个来宾用户/角色 以下是我的SpringXML的相关部分: <bean id="jnditem
<bean id="jnditemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">org.jboss.naming.remote.client.InitialContextFactory</prop>
<prop key="java.naming.provider.url">remote://127.0.0.1:4447</prop>
<prop key="java.naming.security.principal">guest</prop>
<prop key="java.naming.security.credentials">password1</prop>
</props>
</property>
</bean>
<bean id="connectionfactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jnditemplate"/>
<property name="jndiName" value="jms/RemoteConnectionFactory"/>
</bean>
<bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jnditemplate"/>
<property name="jndiName" value="jms/queue/test"/>
</bean>
<bean id="credentialsconnectionfactory"
class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
<property name="targetConnectionFactory" ref="connectionfactory"/>
<property name="username" value="guest"/>
<property name="password" value="password1"/>
</bean>
<bean id="jmstemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="credentialsconnectionfactory"/>
<property name="defaultDestination" ref="destination"/>
</bean>
<bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
<property name="connectionFactory" ref="credentialsconnectionfactory"/>
<property name="destination" ref="destination"/>
<property name="messageListener" ref="receiver"/>
</bean>
<bean id="sender" class="com.example.web.Producer">
<property name="jmsTemplate" ref="jmstemplate"/>
</bean>
<bean id="receiver" class="com.example.web.Consumer"/>
org.jboss.naming.remote.client.InitialContextFactory
remote://127.0.0.1:4447
客人
密码1
以下是我的POM的相关部分:
<spring.version>3.2.0.RELEASE</spring.version>
<hornetq.client.version>2.3.0.Final</hornetq.client.version>
...
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-ejb-client-bom</artifactId>
<version>7.1.1.Final</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.hornetq</groupId>
<artifactId>hornetq-core-client</artifactId>
<version>${hornetq.client.version}</version>
</dependency>
<dependency>
<groupId>org.hornetq</groupId>
<artifactId>hornetq-jms-client</artifactId>
<version>${hornetq.client.version}</version>
</dependency>
<dependency>
<groupId>org.jboss</groupId>
<artifactId>jboss-ejb-client</artifactId>
<version>1.0.5.Final</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-ext-api</artifactId>
<version>2.0.0-beta-2</version>
</dependency>
<dependency>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
<version>3.2.9.Final</version>
</dependency>
<dependency>
<groupId>org.hornetq</groupId>
<artifactId>hornetq-core</artifactId>
<version>2.0.0.GA</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hornetq</groupId>
<artifactId>hornetq-jms</artifactId>
<version>2.0.0.GA</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hornetq</groupId>
<artifactId>hornetq-logging</artifactId>
<version>2.0.0.GA</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hornetq</groupId>
<artifactId>hornetq-transports</artifactId>
<version>2.0.0.GA</version>
<scope>compile</scope>
</dependency>
3.2.0.0版本
2.3.0.1最终版本
...
org.springframework
SpringJMS
${spring.version}
org.jboss.as
jboss作为ejb客户端bom
7.1.1.最终版本
聚甲醛
org.hornetq
大黄蜂核心客户
${hornetq.client.version}
org.hornetq
hornetqjms客户端
${hornetq.client.version}
org.jboss
JBossEJB客户端
1.0.5.1最终版本
运行时
org.jboss.ejb3
jboss-ejb3-ext-api
2.0.0-beta-2
org.jboss.netty
内蒂
3.2.9.最终版本
org.hornetq
大黄蜂核心
2.0.0.GA
编译
org.hornetq
大黄蜂
2.0.0.GA
编译
org.hornetq
hornetq测井
2.0.0.GA
编译
org.hornetq
大黄蜂运输公司
2.0.0.GA
编译
以及我的jboss standalone.xml的相关部分:
<subsystem xmlns="urn:jboss:domain:messaging:1.1">
<hornetq-server>
<persistence-enabled>true</persistence-enabled>
<journal-file-size>10240</journal-file-size>
<journal-min-files>2</journal-min-files>
<connectors>
<netty-connector name="netty" socket-binding="messaging"/>
<netty-connector name="netty-throughput" socket-binding="messaging-throughput">
<param key="batch-delay" value="50"/>
</netty-connector>
<in-vm-connector name="in-vm" server-id="0"/>
</connectors>
<acceptors>
<netty-acceptor name="netty" socket-binding="messaging"/>
<netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
<param key="batch-delay" value="50"/>
<param key="direct-deliver" value="false"/>
</netty-acceptor>
<in-vm-acceptor name="in-vm" server-id="0"/>
</acceptors>
<security-settings>
<security-setting match="#">
<permission type="send" roles="guest"/>
<permission type="consume" roles="guest"/>
<permission type="createNonDurableQueue" roles="guest"/>
<permission type="deleteNonDurableQueue" roles="guest"/>
</security-setting>
</security-settings>
<address-settings>
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<address-full-policy>BLOCK</address-full-policy>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
</address-setting>
</address-settings>
<jms-connection-factories>
<connection-factory name="InVmConnectionFactory">
<connectors>
<connector-ref connector-name="in-vm"/>
</connectors>
<entries>
<entry name="java:/ConnectionFactory"/>
</entries>
</connection-factory>
<connection-factory name="RemoteConnectionFactory">
<connectors>
<connector-ref connector-name="netty"/>
</connectors>
<entries>
<entry name="RemoteConnectionFactory"/>
<entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
</entries>
</connection-factory>
<pooled-connection-factory name="hornetq-ra">
<transaction mode="xa"/>
<connectors>
<connector-ref connector-name="in-vm"/>
</connectors>
<entries>
<entry name="java:/JmsXA"/>
</entries>
</pooled-connection-factory>
</jms-connection-factories>
<jms-destinations>
<jms-queue name="testQueue">
<entry name="queue/test"/>
<entry name="java:/queue/test"/>
<entry name="java:jboss/exported/jms/queue/test"/>
</jms-queue>
<jms-queue name="DemoQueue">
<entry name="/queue/DemoQueue"/>
</jms-queue>
<jms-topic name="testTopic">
<entry name="topic/test"/>
<entry name="java:jboss/exported/jms/topic/test"/>
</jms-topic>
</jms-destinations>
</hornetq-server>
</subsystem>
<subsystem xmlns="urn:jboss:domain:weld:1.0"/>
</profile>
真的
10240
2.
jms.queue.DLQ
jms.queue.ExpiryQueue
0
10485760
块
10
以及在尝试通过eclipse/vmware vFabric启动时收到的错误
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.jms.listener.SimpleMessageListenerContainer#0' defined in ServletContext resource [/WEB-INF/spring/webmvc-config.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hornetq.utils.HornetQThreadFactory.<init>(Ljava/lang/String;Z)V
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.jms.listener.SimpleMessageListenerContainer#0”的bean时出错,该bean在ServletContext资源[/WEB-INF/spring/webmvc config.xml]中定义:调用init方法失败;嵌套的异常是java.lang.NoSuchMethodError:org.hornetq.utils.HornetQThreadFactory
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
至少pom.xml中的某些依赖项是完全错误的。查看底部的hornetq日志记录
,hornetq传输
,hornetq jms
等。这些在2.3.X版本中不再存在,应该删除
通常,如果您有来自主HornetQ项目的任何JAR,它应该使用相同的版本。使用2.0.0.GA
移除所有这些罐子。其中一些被重命名,在这两种情况下,您应该尝试只使用相同版本的org.hornetq
jar。对于pom,它将是2.3.0-Final
。顺便说一句,最新版本是2.3.2-Final
,您应该升级到该IMHO
IIRChornetqjms
被分为hornetqjms服务器
或hornetqjms客户端
。您可能需要hornetqjms客户端
。Core还分为hornetq Core客户端
和hornetq服务器
在此处搜索版本号为2.3.2.Final
的JAR(执行一些更高级的搜索)