JAX-WSに少し問題があります。ActiveMQをMOMおよびSpringとして使用しています。メッセージングは非常に単純です。1つのjarが、データを含むsoapメッセージを別のjarに送信する必要があります。
私はsender_beans.xmlでこのようにクライアントを定義しました。
<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から何も呼び出さないでください。