我们正在将Java 7应用程序从Java 7更新为8.作为其中的一部分,我们将ActiveMQ从5.7更新到5.14.4,将Apache Camel从2.12.2更新到2.18.3。
应用程序构建时没有任何错误但在启动时失败。最初我得到了这个例外:
嵌套异常是java.lang.ClassNotFoundException: org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter
所以我将activemq-kahadb-store添加到pom.xml&现在我得到了这个例外:
无法在JMX中注册传输连接器: java.io.IOException:无法识别传输方案:[stomp]
以下是activemq& camel配置设置适用于Java 7&以前的图书馆。我需要更改哪些内容才能解决此错误?
<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&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&exchangePattern=InOnly"/>
<filter>
<method ref="ProcessManager" method="destinationFilter" />
<to uri="bean:ProcessManager?method=doProcess&cache=true" />
</filter>
</route>
</camelContext>
答案 0 :(得分:2)
本文解释了该问题:http://activemq.apache.org/activemq-580-release.html。我已经有了前两个activemq依赖项。我需要为activemq-kahadb-store&amp;添加依赖项。的ActiveMQ-跺脚
<!-- 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>