2013-02-24 21 views
0

我將我的應用程序從ActiveMQ 5.5.1遷移到ActiveMQ 5.8.0。 我的應用程序具有持久性配置在activemq.xml文件如下:ClassNotFoundException:ACtiveMQ 5.8中的KahaPersistenceAdapter

<persistenceAdapter> 
    <kahaPersistenceAdapter directory="${activemq.base}/data/msg" maxDataFileLength="20 Mb"/> 
    </persistenceAdapter> 

但是當我開始ActiveMQ的,我得到的wrapper.log文件以下異常:

INFO | jvm 1 | 2013/02/24 10:43:28 | Caused by: java.lang.ClassNotFoundException: org.apache.activemq.store.kahadaptor.KahaPersistenceAdapter 
INFO | jvm 1 | 2013/02/24 10:43:28 | at java.net.URLClassLoader$1.run(Unknown Source) 
INFO | jvm 1 | 2013/02/24 10:43:28 | at java.security.AccessController.doPrivileged(Native Method) 
INFO | jvm 1 | 2013/02/24 10:43:28 | at java.net.URLClassLoader.findClass(Unknown Source) 
INFO | jvm 1 | 2013/02/24 10:43:28 | at java.lang.ClassLoader.loadClass(Unknown Source) 
INFO | jvm 1 | 2013/02/24 10:43:28 | at java.lang.ClassLoader.loadClass(Unknown Source) 
INFO | jvm 1 | 2013/02/24 10:43:28 | at org.apache.xbean.spring.context.v2c.XBeanQNameHelper.loadClass(XBeanQNameHelper.java:107) 
INFO | jvm 1 | 2013/02/24 10:43:28 | at org.apache.xbean.spring.context.v2c.XBeanQNameHelper.getBeanInfo(XBeanQNameHelper.java:72) 

注:我的應用程序存儲在隊列中的消息通過activemq 5.5.1並且不能更改持久性配置。

回答

1

你把activemq-all-5.8.0.jar放在classpath中嗎?

KahaPersistenceAdapterdeprecated,但它仍然包含在jar中。

+0

@Tim Bish:謝謝。我把'activemq-all-5.8.0.jar'放到了classpath中,糾正了我的問題,但另一個異常拋出了:'java.lang.ClassNotFoundException:org.eclipse.jetty.http.security.Constraint' – MJM 2013-02-25 14:04:32

+0

你能否提供完整的堆棧跟蹤?它看起來像你有一個破碎的依賴碼頭罐子。 – ericson 2013-02-25 14:41:28

+0

解決了:),我用'activemq 5.5'替換了'activemq 5.8'中的'jetty.xml'文件,謝謝。 – MJM 2013-02-25 14:50:25

3

在v5.8.0中,依賴關係已經分解了一些,以便讓您縮小需要運行Broker時所需的jar數量。 Kaha適配器位於activemq-amq-store組件內,因此如果要使用它,則需要將其引入到項目中。

請注意,此適配器已被棄用,並將在v5.9.0中消失,所以最好移動到其中一個支持的適配器。目前,默認的適配器是KahaDB,位於activemq-kahadb-store中。您也可以嘗試LevelDB適配器,它具有更快的索引,但仍然很年輕,可能有一些問題。

雖然沒有遷移工具,將很容易讓你從舊的店面設置了KahaDB新的代理移動到新的KahaDB商店,你可以做到這一點,利用網絡連接到舊的連接。一旦新經紀商註冊您舊經紀商的舊商店中的消息目的地,新經紀商就應該將所有消息排除並存儲在KahaDB商店中。