OSGI上使用ActiveMQ时出现STOMP问题(KARAF)
我已经在Ubuntu Linux 10.04上安装了Karaf(2.2.5)。 将ActiveMQ作为功能安装在Karaf之上。 使用stomp connector创建了一个自定义代理。 现在,当我尝试从Java客户端连接到此stomp代理时,我得到“Java.net.SocketTimeoutException:Read timeout” 如果我将ActiveMQ作为独立应用程序启动,则同一个客户端可以正常工作 提前谢谢 这是我的配置:OSGI上使用ActiveMQ时出现STOMP问题(KARAF),activemq,stomp,apache-karaf,Activemq,Stomp,Apache Karaf,我已经在Ubuntu Linux 10.04上安装了Karaf(2.2.5)。 将ActiveMQ作为功能安装在Karaf之上。 使用stomp connector创建了一个自定义代理。 现在,当我尝试从Java客户端连接到此stomp代理时,我得到“Java.net.SocketTimeoutException:Read timeout” 如果我将ActiveMQ作为独立应用程序启动,则同一个客户端可以正常工作 提前谢谢 这是我的配置: <beans xmlns="http://ww
<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>
javax.jms.ConnectionFactory
我看不出您的配置有明显的问题。。。就我个人而言,我已经停止在OSGi中使用Spring,因为我一直遇到启动时竞争条件。Spring的
使用超时,因此启动延迟会把一切都搞砸。根据Karaf 2.2.4,以下替代方法对我非常有效:
- 将此repo添加到我的etc/org.apache.karaf.features.cfg文件:
mvn:org.apache.activemq/activemq-karaf/${activemq.version}/xml/features
- 添加通过Blueprint编写的etc/activemq-broker.xml文件。我从一开始就根据自己的需要定制了它
- 在my own features.xml文件中声明对activemq blueprint的依赖关系,如下所示:
activemq blueprint
- 在my features.XML:
blueprint:file:etc/activemq broker.XML
一般来说,我不太喜欢Blueprint,但它让我的配置变得非常简单。有人能帮忙吗??我被困在这里了!!你能把你的代理配置放在这里吗?如果人们不理解这个问题,他们就帮不了忙。