2016-06-16 6 views
0

Apache CXFでビルドされたSOAP over JMS Webサービスをテストしていました。特に、私は"jms_specs_demo"に従っていました:消費者が必要とするコール、SOAPサービスの実装、およびメッセージ永続性に必要なキューを記述するWSDL-fistサンプル。消費者がMQメーカのライブラリを追加することなくSOAP/JMSサービスを作成できますか?

クライアントコールはSOAP over HTTP呼び出しと同じです(エンドポイントはWSDLファイルにあります)。しかし、JMS JNDIアドレスは、MQメーカーのライブラリ(org.apache.activemq.jndi.ActiveMQInitialContextFactory)を使用し、それはまた、クライアント上で必須です:私はそれをテストするための独立したクライアントを構築してい

<soap:address location="jms:jndi:dynamicQueues/test.cxf.jmstransport.queue?jndiInitialContextFactory=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;jndiConnectionFactoryName=ConnectionFactory&amp;jndiURL=tcp://localhost:61616"/> 

JMSGreeterService service = new JMSGreeterService(); 
JMSGreeterPortType greeter = service.getGreeterPort(); 

greeter.greetMeOneWay("hello World"); 

しかしApacheMQ依存関係が追加された場合効果的に、このコードは動作します:

<dependency> 
    <groupId>org.apache.activemq</groupId> 
    <artifactId>activemq-broker</artifactId> 
    <version>5.13.3</version> 
</dependency> 

はMQを追加することなく、JMSサービスの上にSOAPを作成する方法はありますメーカーのライブラリ(JAR)は消費者にありますか?私は、JMS APIがトランスポートを管理し、メッセージを余分なライブラリなしでリモートキューにプッシュすると考えました。

答えて

0

要約すれば、JMS APIはそれだけで、JMSオブジェクトが果たすべき契約を定義するAPIです。 javadoc for the JMS APIを参照してください。

実際にJMSを使用するには、クライアントがJMS APIの具体的な実装(JMSプロバイダ)を使用する必要があります。これは、activemq-brokerライブラリを使用して実行しているものです。

関連する問題