2016-01-25 37 views
0

我遇到的问题以骆驼和ActiveMQ启动我的Spring Web应用程序。ActiveMQ无法启动(EOFException:null)

,我发现了特定的错误是不是很描述:

16:18:53.552 [localhost-startStop-1] ERROR o.a.a.b.BrokerService - Failed to start Apache ActiveMQ ([activemq.myworkingdomain.com, ID:Ricardos-MacBook-Air.local-65257-1453738732697-0:2], {}) 
java.io.EOFException: null 
at java.io.DataInputStream.readBoolean(DataInputStream.java:244) ~[na:1.8.0_60] 
at org.apache.activemq.openwire.v11.SubscriptionInfoMarshaller.looseUnmarshal(SubscriptionInfoMarshaller.java:133) ~[activemq-client-5.13.0.jar:5.13.0] 
at org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:366) ~[activemq-client-5.13.0.jar:5.13.0] 
at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:277) ~[activemq-client-5.13.0.jar:5.13.0] 
at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore$1.execute(KahaDBStore.java:755) ~[activemq-core-5.7.0.jar:5.7.0] 
at org.apache.kahadb.page.Transaction.execute(Transaction.java:769) ~[kahadb-5.7.0.jar:5.7.0] 
at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.getAllSubscriptions(KahaDBStore.java:749) ~[activemq-core-5.7.0.jar:5.7.0] 
at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.<init>(KahaDBStore.java:663) ~[activemq-core-5.7.0.jar:5.7.0] 
at org.apache.activemq.store.kahadb.KahaDBStore.createTopicMessageStore(KahaDBStore.java:920) ~[activemq-core-5.7.0.jar:5.7.0] 
at org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter.createTopicMessageStore(KahaDBPersistenceAdapter.java:100) ~[activemq-core-5.7.0.jar:5.7.0] 

我与Java和简单的弹簧东西坚持没有XML:

@Bean 
public CamelContext camelContext() { 
    final CamelContext camelContext = new DefaultCamelContext(); 
    camelContext.addComponent("activemq", activeMQComponent()); 

    try { 
     CamelConfigurator.addRoutesToCamel(camelContext); 
     camelContext.start(); 
    } catch (final Exception e) { 
     LOGGER.error("Failed to start the camel context", e); 
    } 
    LOGGER.info("Started the Camel context and components"); 
    return camelContext; 
} 

@Bean 
public ActiveMQComponent activeMQComponent() { 
    final ActiveMQComponent activeMQComponent = new ActiveMQComponent(); 
    activeMQComponent.setConfiguration(jmsConfiguration()); 
    activeMQComponent.setTransacted(true); 
    activeMQComponent.setCacheLevelName("CACHE_CONSUMER"); 
    return activeMQComponent; 
} 

@Bean 
public JmsConfiguration jmsConfiguration() { 
    final JmsConfiguration jmsConfiguration = new JmsConfiguration(pooledConnectionFactory()); 
    jmsConfiguration.setConcurrentConsumers(CONCURRENT_CONSUMERS); 
    return jmsConfiguration; 
} 

@Bean 
public PooledConnectionFactory pooledConnectionFactory() { 
    final PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(
      activeMQConnectionFactory()); 
    pooledConnectionFactory.setMaxConnections(MAX_CONNECTIONS_TO_POOL_FACTORY); 
    // pooledConnectionFactory.start(); 
    return pooledConnectionFactory; 
} 

@Bean 
public ActiveMQConnectionFactory activeMQConnectionFactory() { 
    return new ActiveMQConnectionFactory(username, password, activeMQBrokerURL); 
} 

我一直在试图改变事情加载的顺序也包括路由和内容,删除kahadb本地文件夹,但似乎没有任何工作,甚至指向我在正确的位置。

回答

1

你的堆栈跟踪表明您使用的应用程序

  • ActiveMQ的,客户端 - 5.13.0
  • ActiveMQ的 - 核心 - 5.7.0

我敢肯定,版本不匹配是造成此错误的原因。

您能直接导入activemq-all 5.13.0并重试吗?

+0

非常感谢。这确实是个问题。 – ricardoespsanto

0

根据您的堆栈跟踪,您似乎遇到了KahaDB(Apache ActiveMQ默认的持久性引擎)问题。

我相信KahaDB里面有一个bug,你可以在Apache issues Web Page上找到它的相关信息。

我曾经遇到过这个问题,但它很奇怪,因为它看起来好像随机发生,有时会起作用,有时会失败。

我设法通过为ActiveMQ选择不同的持久性引擎来解决此问题。也许你可以尝试一下,告诉我它是否适合你。希望这些信息可以帮助你。

+0

谢谢,我现在正在尝试它,因为我也打算使用它必须完成的共享持久数据库。如果有效,我会更新此回复。 – ricardoespsanto