我在JAX-WS中遇到了一些問題。我使用ActiveMQ作爲MOM和Spring。消息傳遞非常簡單:一個jar應該發送帶有一些數據的soap消息給另一個。 我定義了客戶這樣在我sender_beans.xmlJAX-WS:連接不會關閉 - 在x消息後停止消息傳遞
<bean id="jmsConfig-Manager" class="org.apache.cxf.transport.jms.JMSConfiguration"
p:connectionFactory-ref="jmsConnectionFactory"
p:targetDestination="activemq:example.manager"
p:pubSubDomain="true" p:maxConcurrentConsumers="40" p:deliveryMode="1"
p:explicitQosEnabled="true" p:reconnectOnException="true" />
<bean id="jmsConnectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="sessionCacheSize" value="40" />
<property name="targetConnectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL"
value="tcp://localhost:61616?jms.useAsyncSend=true" />
</bean>
</property>
</bean>
這是我的終點:
<jaxws:endpoint id="ManagerService" implementor="#ManagerServ"
implementorClass="com.example.Service"
address="jms://">
<jaxws:features>
<bean class="org.apache.cxf.transport.jms.JMSConfigFeature"
p:jmsConfig-ref="jmsConfig-Manager" />
</jaxws:features>
</jaxws:endpoint>
<bean id="jmsConnectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="sessionCacheSize" value="40" />
<property name="targetConnectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL"
value="tcp://localhost:61616?jms.useAsyncSend=true" />
</bean>
</property>
</bean>
因此,消息的工作 - 但只有40倍! (這是有史以來p的值:maxConcurrentConsumers)。我認爲問題在於,每次發送消息時,都會創建一個新消費者,但不會銷燬。所以在40條消息之後,不能創建新的消費者並且消息停止工作。我必須重新啓動完整的消息傳遞。 我只能使用聲明的方式來解決這個問題,我從來沒有從我的代碼中調用jms中的任何東西。 有沒有人解決?這是真的急了,我希望有人能幫助我:-)