ActiveMQ:无法在JMX中注册传输连接器:java.io.IOException:无法识别传输方案:[stomp]

ActiveMQ:无法在JMX中注册传输连接器:java.io.IOException:无法识别传输方案:[stomp],java,apache-camel,activemq,jmx,Java,Apache Camel,Activemq,Jmx,我们正在将Java应用程序从Java 7更新为Java 8。作为这项工作的一部分,我们正在将ActiveMQ从5.7更新到5.14.4,将Apache Camel从2.12.2更新到2.18.3 应用程序生成时没有任何错误,但在启动时失败。最初我遇到了这样一个例外: 嵌套异常为java.lang.ClassNotFoundException: org.apache.activemq.store.kahadb.kahadbpersistencedapter 因此,我将activemq存储添加到po

我们正在将Java应用程序从Java 7更新为Java 8。作为这项工作的一部分,我们正在将ActiveMQ从5.7更新到5.14.4,将Apache Camel从2.12.2更新到2.18.3

应用程序生成时没有任何错误,但在启动时失败。最初我遇到了这样一个例外:

嵌套异常为java.lang.ClassNotFoundException: org.apache.activemq.store.kahadb.kahadbpersistencedapter

因此,我将activemq存储添加到pom.xml中&现在我得到了以下异常:

无法在JMX中注册传输连接器: java.io.IOException:无法识别传输方案:[stomp]

下面是适用于Java7和以前的库的activemq和camel配置设置。我需要更改什么以克服此错误

   <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <value>classpath:xxx.properties</value>
        </property>
    </bean> 

    <bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean">
        <property name="config" value="classpath:activemq.xml" />
        <property name="start" value="true" />
    </bean>

    <bean id="ProcessManager" class="com.xxx.boot.ProcessManager" />


           <bean id="shutdown" class="org.apache.camel.impl.DefaultShutdownStrategy">  
        <property name="timeout" value="30"/>
        </bean> 

    <bean id="XXXService" depends-on="broker" class="com.xxx.boot.ProcessExecuter" destroy-method="shutdownProcess">
        <property name="executableArguments">
            <array>
            <value>${JAVA_JDK_LOCATION_32BIT}</value>
            <value>-Xmx512M</value>
            <value>-Djava.library.path={web.directory}\\WEB-INF\\lib</value>
            <value>-Dactivemq.url.stomp=${activemq.url.stomp}</value>
            <value>-Dactivemq.url.openwire=${activemq.url.openwire}</value>
            <value>-cp</value>
            <value>{web.directory}\\WEB-INF\\lib\\*</value>
            </array>
        </property>
        <property name="executableClass">
            <value>boot.RunnerImpl</value>
        </property>
        <property name="executableDirectory">
            <value>WEB-INF/lib</value>
        </property>
        <property name="processManager">
            <ref bean="ProcessManager" />
        </property>
    </bean>

    <camelContext xmlns="http://camel.apache.org/schema/spring" id="ProcessManagerContext" trace="false" useMDCLogging="true">

        <propertyPlaceholder id="properties" location="classpath:xxx.properties"/>

        <route id="boot.XXXService" autoStartup="true">
            <from uri="timer://XXXService?repeatCount=1&amp;delay=5000" />
            <to uri="bean:XXXService?method=terminate" />
            <multicast parallelProcessing="true">
                <to uri="direct:startXXXService" />
                <to uri="direct:startXXXService" />
            </multicast>
        </route>

        <route id="boot.XXXService.start">
            <from uri="direct:startXXXService" />
            <to uri="bean:XXXService?method=start" />
        </route>    

        <route id="JMS.ProcessManager">
            <from uri="ir.activemq.broker.client:topic:xxx.ProcessManager?concurrentConsumers=1&amp;exchangePattern=InOnly"/>
            <filter>
                <method ref="ProcessManager" method="destinationFilter" />
                <to uri="bean:ProcessManager?method=doProcess&amp;cache=true" />
            </filter>       
        </route>
    </camelContext>

类路径:xxx.properties
${JAVA\u JDK\u位置\u 32位}
-Xmx512M
-Djava.library.path={web.directory}\\web-INF\\lib
-Dactivemq.url.stomp=${activemq.url.stomp}
-Dactivemq.url.openwire=${activemq.url.openwire}
-cp
{web.directory}\\web-INF\\lib\\*
boot.RunnerImpl
WEB-INF/lib

本文解释了这个问题:。我已经有了前两个activemq依赖项。我需要为activemq存储区和activemq stomp添加依赖项

    <!-- ActiveMQ -->
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-pool</artifactId>
        <version>${org.apache.activemq.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-camel</artifactId>
        <version>${org.apache.activemq.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-kahadb-store</artifactId>
        <version>${org.apache.activemq.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-stomp</artifactId>
        <version>${org.apache.activemq.version}</version>
    </dependency>

org.apache.activemq
activemq池
${org.apache.activemq.version}
org.apache.activemq
activemq骆驼
${org.apache.activemq.version}
org.apache.activemq
activemq存储
${org.apache.activemq.version}
org.apache.activemq
activemq跺脚
${org.apache.activemq.version}

本文解释了这个问题:。我已经有了前两个activemq依赖项。我需要为activemq存储区和activemq stomp添加依赖项

    <!-- ActiveMQ -->
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-pool</artifactId>
        <version>${org.apache.activemq.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-camel</artifactId>
        <version>${org.apache.activemq.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-kahadb-store</artifactId>
        <version>${org.apache.activemq.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-stomp</artifactId>
        <version>${org.apache.activemq.version}</version>
    </dependency>

org.apache.activemq
activemq池
${org.apache.activemq.version}
org.apache.activemq
activemq骆驼
${org.apache.activemq.version}
org.apache.activemq
activemq存储
${org.apache.activemq.version}
org.apache.activemq
activemq跺脚
${org.apache.activemq.version}

仅添加activemq stomp和activemq kahadb存储已经足够。仅添加activemq stomp和activemq kahadb存储已经足够。