2012-04-17 4 views
0

Я установил Karaf (2.2.5) на Ubuntu Linux 10.04. Установлен ActiveMQ как функция поверх Карафа. Создан пользовательский брокер с точечным разъемом. Теперь, когда я пытаюсь подключиться к этому брокеру stomp с Java-клиента, я получаю «java.net.SocketTimeoutException: Read timed out»Проблема с STOMP на ActiveMQ, используемая в OSGI (KARAF)

Тот же клиент отлично работает, если я запускаю ActiveMQ в качестве автономного приложения.

Заранее спасибо

Вот мой конфиг:

<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:amq="http://activemq.apache.org/schema/core" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:osgi="http://www.springframework.org/schema/osgi" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
    http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd 
    http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd 
    http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd"> 
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/> 
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="dios" dataDirectory="${karaf.data}/activemq/dios" useShutdownHook="false"> 
     <destinationPolicy> 
      <policyMap> 
       <policyEntries> 
       <policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb"> 
        <pendingSubscriberPolicy> 
        <vmCursor /> 
        </pendingSubscriberPolicy> 
       </policyEntry> 
       <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb"> 
       </policyEntry> 
       </policyEntries> 
      </policyMap> 
     </destinationPolicy> 
     <managementContext> 
      <managementContext createConnector="false"/> 
     </managementContext> 
     <persistenceAdapter> 
      <kahaDB directory="${karaf.data}/activemq/dios/kahadb"/> 
     </persistenceAdapter> 
     <shutdownHooks> 
      <bean xmlns="http://www.springframework.org/schema/beans" id="hook" class="org.apache.activemq.hooks.SpringContextHook" /> 
     </shutdownHooks> 
     <transportConnectors> 
      <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/> 
      <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?trace=true"/> 
     </transportConnectors> 
    </broker> 
    <bean id="activemqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 
     <property name="brokerURL" value="tcp://0.0.0.0:61616" /> 
    </bean> 
    <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"> 
     <property name="maxConnections" value="8" /> 
     <property name="connectionFactory" ref="activemqConnectionFactory" /> 
    </bean> 
    <bean id="resourceManager" class="org.apache.activemq.pool.ActiveMQResourceManager" init-method="recoverResource"> 
      <property name="transactionManager" ref="transactionManager" /> 
      <property name="connectionFactory" ref="activemqConnectionFactory" /> 
      <property name="resourceName" value="activemq.dios" /> 
    </bean> 
    <osgi:reference id="transactionManager" interface="javax.transaction.TransactionManager" /> 
    <osgi:service ref="pooledConnectionFactory"> 
     <osgi:interfaces> 
      <value>javax.jms.ConnectionFactory</value> 
     </osgi:interfaces> 
     <osgi:service-properties> 
      <entry key="name" value="dios"/> 
     </osgi:service-properties> 
    </osgi:service> 
</beans> 
+0

Может ли кто-нибудь помочь? Я застрял здесь! –

+0

Можете ли вы поместить здесь свою конфигурацию брокера? Люди не могут помочь, если они не понимают проблему. – Buchi

ответ

0

Я не могу видеть очевидную проблему с вашей конфигурацией ... Лично я перестал использовать Весну в OSGi, потому что я постоянно сталкиваясь условия загрузки. Spring <osgi:service> использует таймауты, поэтому задержка загрузки загружает все. Следующий альтернативный подход работал очень хорошо для меня под Karaf 2.2.4:

  • Добавить репозиторий в мой и т.д./org.apache.karaf.features.cfg файла: mvn:org.apache.activemq/activemq-karaf/${activemq.version}/xml/features
  • Добавить т.д./activemq- broker.xml, написанный с помощью Blueprint. Я начал с an example XML from Talend и настроил его под мои нужды.
  • Объявите зависимость от ActiveMQ-план в своем собственном файле features.xml так: <feature version="${activemq.version}">activemq-blueprint</feature>
  • Объявите, что XML-файл в моем features.xml: <bundle>blueprint:file:etc/activemq-broker.xml</bundle>

Я не большой поклонник Blueprint в общем, но это сделало эту конфигурацию очень легкой для меня.

Смежные вопросы