Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringJMS与JBoss7.11(HornetQ)_Jms_Jboss7.x_Netty_Hornetq_Spring Jms - Fatal编程技术网

SpringJMS与JBoss7.11(HornetQ)

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

我正在尝试创建一个示例JMS应用程序。我想要它做的就是启动,当数据发送到端点时,让生产者向消费者发送消息

我的spring配置有问题,我不知道我需要在Maven中引入哪些依赖项(以及哪些版本)。我从一个简单的Roo项目开始

首先,我的SpringXML看起来正常吗?其次,我的maven依赖项正确吗?从我得到的错误来看,我想我已经从Maven那里得到了一个过时的依赖项。我还向jboss配置中添加了一个来宾用户/角色

以下是我的SpringXML的相关部分:

<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

IIRC
hornetqjms
被分为
hornetqjms服务器
hornetqjms客户端
。您可能需要
hornetqjms客户端
。Core还分为
hornetq Core客户端
hornetq服务器

在此处搜索版本号为
2.3.2.Final
的JAR(执行一些更高级的搜索)