IBM 所有の SOAP over JMS プロトコル (非推奨)

SOAP over Java™ Message Service (JMS) トランスポートを HTTP の代わりに使用して、クライアント/サーバー間の SOAP メッセージ通信を行うことができます。Web サービス・エンジンは、業界標準の実装環境のみでなく、IBM® 所有の実装環境の使用もサポートします。

非推奨の機能 (Deprecated feature) 非推奨の機能 (Deprecated feature): アプリケーション・サーバーの前のバージョンでは、IBM 専有の SOAP over JMS プロトコルが、 Java API for XML-based RPC (JAX-RPC) アプリケーション用にサポートされていました。 WebSphere® Application Server 7.0 以降では、新しい業界標準の SOAP over JMS プロトコルが導入されているため、この専有の SOAP over JMS プロトコルは推奨されなくなりました。IBM 専有の SOAP over JMS プロトコルを Java API for XML Web Services (JAX-WS) や JAX-RPC Web サービスで使用することはできますが、新しい標準の SOAP over JMS プロトコルを利用してください。ご使用のクライアント・アプリケーションが、 前のバージョンの WebSphere Application Server でサポートされるエンタープライズ Bean ベースの Web サービスを呼び出す場合は、引き続き IBM 専有の SOAP over JMS プロトコルを使用して、これらの Web サービスにアクセスする必要があります。depfeat

クライアントまたはサーバー・コンポーネントに実装を提供し、その実装がアプリケーション・サーバーの Web サービス・エンジンで提供されるクライアントおよびサーバー・コンポーネントと相互運用できるようにする必要がある場合は、SOAP over JMS トランスポートを使用できます。IBM 所有の SOAP over JMS プロトコルでは、クライアント・コンポーネントおよびサーバー・コンポーネントが、アプリケーション・サーバーがサポートする JMS API を使用して SOAP 要求および応答メッセージを交換できるようにするための、特定のメッセージ交換要件が記述されています。

クライアント・コンポーネントは、SOAP 要求メッセージの送信と SOAP 応答メッセージの受信を担当し、以下のプロトコルの制約に従います。
  • クライアントは、SOAP 要求メッセージをサーバーに送信するのに、JMS TextMessage オブジェクト (例えば、javax.jms.TextMessage) または BytesMessage オブジェクト (例えば、javax.jms.BytesMessage) のいずれかを使用する必要があります。 要求メッセージに添付ファイルが含まれている場合は、BytesMessage オブジェクトを使用する必要があります。 要求メッセージに添付ファイルが含まれていない場合、クライアントは TextMessage オブジェクトまたは BytesMessage オブジェクトを使用できます。 アプリケーション・サーバーのクライアント実装では、添付ファイルを送信する必要がでてくる可能性があるため、要求メッセージに BytesMessage オブジェクトのみを使用します。
  • クライアントは、宛先のキューまたはトピックに送信する前に、JMS 要求メッセージで以下のプロパティーを設定する必要があります。
    • contentType: このプロパティーは、HTTP メッセージの Content-Type ヘッダーに似ており、メッセージのコンテンツ・タイプを記述するために使用されます。 添付ファイルのないメッセージなど、テキストのみの SOAP メッセージは、以下のように記述されます。
      text/xml; charset="UTF-8"
      添付ファイルを含む SOAP 要求メッセージの contentType プロパティーは、以下のように設定する必要があります。
      multipart/related; type="text/xml"; start="<...content-id of first part...>"       
      この例では、複数パーツ・メッセージを示しており、最初のパーツが、SOAP メッセージを含むタイプ text/xml です。複数パーツ・メッセージの他のパーツには、さまざまな添付ファイルが含まれています。 HTTP 1.1 仕様には、Content-Type ヘッダーに関するさらに多くの情報が含まれています。
    • enableTransaction: サーバー・コンポーネントが、宛先のキューまたはトピックからメッセージを受信する際に使用されたのと同じトランザクションで Web サービス要求を処理する必要がある場合には、発信する SOAP over JMS 要求メッセージでは、このオプション・プロパティーを true に設定します。クライアント・コンポーネントがこのプロパティーを true に設定する必要があるのは、片方向要求で、両方向の Web サービス要求で起こりうる同期の問題を回避する場合のみです。このプロパティーを設定しない場合、あるいはデフォルト値の false に設定した場合は、サーバーは、宛先のキューまたはトピックから要求メッセージを受信するのに使用したトランザクションを使用停止してから、要求を処理する Web サービス・エンジンを呼び出します。
      トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): クライアント・コンポーネントがこの プロパティーを true に設定する必要があるのは、片方向要求の場合のみです。両方向 Web サーバー要求に対してこのプロパティーを true に設定することは、同期の問題があるため、サポートされていません。gotcha
    • endpointURL: このプロパティーは、要求に関連付けられた JMS エンドポイント URL に設定する必要があります。
    • soapAction: Web サービス要求と関連付けられている soapAction 値を示すには、発信する SOAP over JMS 要求メッセージでこのオプション・プロパティーを設定します。このプロパティーは、HTTP トランスポートを介して Web サービス要求をトランスポートするのに使用される SOAPAction HTTP ヘッダーと同様の働きをします。soapAction プロパティーの値は、 SOAP 要求の意図を明らかにする URI です。 soapAction プロパティーを指定すると、サーバー・コンポーネントはこのプロパティーによって 要求の宛先を判断します。SOAP 仕様には、URI のフォーマットや特殊性、 あるいはその URI が解決可能かどうかに、まったく制限がありません。通常、 このプロパティーは WSDL 文書の soapAction 値に設定されます。
    • targetService: このプロパティーは、要求の JMS スタイル・エンドポイント・ロケーション URL にある、targetService プロパティー値に設定する必要があります。この値は、要求のディスパッチ時にターゲットのポート・コンポーネントを判別するために、サーバー・コンポーネントが使用します。
    • transportVersion: このプロパティーは、クライアントおよびサーバーで使用されるプロトコルのバージョン番号を示します。この値は 1 に設定します。
  • SOAP 要求メッセージが両方向要求を表している場合、クライアント・コンポーネントは、 応答メッセージに使用されるキューを指定するため、JMS メッセージの replyTo プロパティーを設定する必要があります。これには、JMS メッセージの setJMSReplyTo メソッドが使用されます。 クライアントで永続的な replyTo キューを構成すると、Web サービス要求を作成するたびにクライアントが JMS メッセージの replyTo プロパティーを設定しなくてもよいという利点があります。
  • SOAP 要求メッセージが片方向要求を表している場合、クライアント・コンポーネントでは JMS メッセージの replyTo プロパティーを設定しないようにする必要があります。
  • クライアント・コンポーネントは、SOAP 要求の送信に使用された JMS メッセージのタイプに関係なく、BytesMessage オブジェクトまたは TextMessage オブジェクトの応答メッセージを処理できるように準備済みである必要があります。 アプリケーション・サーバーのコンポーネントは、応答に添付ファイルが含まれていて、BytesMessage オブジェクトを使用する必要がある場合を除き、クライアントから受信したのと同じタイプの JMS メッセージで応答します。
  • クライアント・コンポーネントでは、応答メッセージの相関 ID が、元の要求メッセージ ID に一致するものと想定することができます。
サーバー・コンポーネントは、SOAP 要求メッセージの受信と SOAP 応答メッセージの送信を担当し、以下のプロトコルの制約に従います。
  • サーバーは、TextMessage または BytesMessage を受信できるように準備済みである必要があります。 要求に添付ファイルが含まれている場合は、ByteMessage を使用する必要があります。 サーバー・コンポーネントの WebSphere 製品実装は、応答に添付ファイルが含まれていて、BytesMessage を使用する場合を除き、応答メッセージをクライアントに送信する際に、同様の方法で応答します。
  • サーバー・コンポーネントは、SOAP 要求を正しく処理して、適切な SOAP 応答メッセージを作成する必要があります。
  • サーバー・コンポーネントは、JMS 要求メッセージの replyTo プロパティーが設定されている場合にのみ、応答メッセージをクライアントに送信する必要があります。
  • サーバー・コンポーネントは、replyTo キューに送信する前に、JMS 応答メッセージで以下のプロパティーを設定する必要があります。
    • contentType: このプロパティーの説明については、クライアントの役割のセクションを参照してください。
    • JMS 応答メッセージの相関 ID を元の JMS 要求メッセージのメッセージ ID に設定します。 これは、JMS メッセージの setJMSCorrelationID メソッドを呼び出すことで実行されます。
    • transportVersion: このプロパティーは、クライアントおよびサーバーで使用されるプロトコルのバージョン番号を示します。この値は 1 に設定します。

以下の例は、添付ファイルを含まない要求メッセージに対して、JMS メッセージの toString メソッドを呼び出した結果を示したものです。

JMSMessage class: jms_bytes
JMSType:          null
JMSDeliveryMode:  2
JMSExpiration:    0
JMSPriority:      4
JMSMessageID:     ID:d438eebf04cb124aa25c5821110a134f0000000000000001
JMSTimestamp:     1092110476167
JMSCorrelationID: null
JMSDestination:   topic://NewsGroupTopic?topicSpace=FvtTopicSpace
JMSReplyTo:       null
JMSRedelivered:   false
JMS_IBM_System_MessageID: 6B6765B36943A18C_11000001
transportVersion: 1
JMSXUserID:
targetService: NGConsumerJMS
JMSXAppID: Service Integration Bus
endpointURL: jms:/topic?destination=jms/NewsGroupTopic&connectionFactory;=jms/NewsGroupTCF&targetService;=NGConsumerJMS

contentType: text/xml; charset=utf-8
3c736f6170656e763a456e76656c6f706520786d6c6e733a736f6170656e763d22687474703a2f2f
736368656d61732e786d6c736f61702e6f72672f736f61702f656e76656c6f70652f2220786d6c6e
...
JMSMessage class: jms_bytes
JMSType:          null
JMSDeliveryMode:  2
JMSExpiration:    0
JMSPriority:      4
JMSMessageID:     ID:d438eebf04cb124aa25c5821110a134f0000000000000001
JMSTimestamp:     1092110476167
JMSCorrelationID: null
JMSDestination:   topic://NewsGroupTopic?topicSpace=FvtTopicSpace
JMSReplyTo:       null
JMSRedelivered:   false
JMS_IBM_System_MessageID: 6B6765B36943A18C_11000001
transportVersion: 1
JMSXUserID:
targetService: NGConsumerJMS
JMSXAppID: Service Integration Bus
endpointURL: jms:/topic?destination=jms/NewsGroupTopic&connectionFactory;=jms/NewsGroupTCF&targetService;=NGConsumerJMS

contentType: text/xml; charset=utf-8
3c736f6170656e763a456e76656c6f706520786d6c6e733a736f6170656e763d22687474703a2f2f
736368656d61732e786d6c736f61702e6f72672f736f61702f656e76656c6f70652f2220786d6c6e
...
以下の SOAP バージョン 1.1 例は、上記のメッセージ例のペイロードを示したものです。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
		xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<postMessage><ngName xsi:type="xsd:string">news.current.events</ngName>
<msg xsi:type="xsd:string">This is a sample news item.</msg>
</postMessage>
</soapenv:Body>
</soapenv:Envelope>
SOAP バージョン 1.2 では、encodingStyle パラメーターはサポートされていないため、例は以下に類似したものになります。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
		xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<postMessage><ngName xsi:type="xsd:string">news.current.events</ngName>
<msg xsi:type="xsd:string">This is a sample news item.</msg>
</postMessage>
</soapenv:Body>
</soapenv:Envelope>
以下の例は、添付ファイルを含む要求メッセージに対して、JMS メッセージの toString メソッドを呼び出した結果を示したものです。
JMSMessage class: jms_bytes
JMSType:          null
JMSDeliveryMode:  1
JMSExpiration:    1092086312310
JMSPriority:      4
JMSMessageID:     ID:4bb64ed64e7d813d59ba5fec110a134f0000000000000001
JMSTimestamp:     1092086012310
JMSCorrelationID: null
JMSDestination:   queue://Logger_Q
JMSReplyTo:       queue://_Q_6B6765B36943A18C_00000385
JMSRedelivered:   false
JMS_IBM_System_MessageID: 6B6765B36943A18C_10000001
transportVersion: 1
JMSXUserID:
targetService: WSLoggerJMS
JMSXAppID: Service Integration Bus
endpointURL: jms:/queue?
destination=jms/Logger_Q&connectionFactory=jms/Logger_CF&targetService=WSLoggerJMS
contentType: multipart/related; type="text/xml"; 
start="<945414389.1092086011970.IBM.WEBSERVICES@myhost1>";     
boundary="----=_Part_0_247953397.1092086011970"
0d0a2d2d2d2d2d2d3d5f506172745f305f3234373935333339372e31303932303836303131393730
0d0a436f6e74656e742d547970653a20746578742f786d6c3b20636861727365743d5554462d380d
...
以下は、上記のメッセージ例のペイロードを示したものです。
Content-Type: multipart/related; type="text/xml";

       start="<945414389.1092086011970.IBM.WEBSERVICES@myhost1>";

       boundary="----=_Part_0_247953397.1092086011970"

 

------=_Part_0_247953397.1092086011970
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-Id: <945414389.1092086011970.IBM.WEBSERVICES@myhost1>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<p499:InternationalizationContext soapenv:mustUnderstand="0"
		xmlns:p499="http://www.ibm.com/webservices/InternationalizationContext">
<Locales>
	<Locale>
		<LanguageCode>en</LanguageCode>
		<CountryCode>US</CountryCode>
	</Locale>
</Locales>
<TimeZoneId>America/Chicago</TimeZoneId>
</p499:InternationalizationContext>
</soapenv:Header>
<soapenv:Body>
	<sendJpegImage/>
</soapenv:Body>
<soapenv:Envelope>
------=_Part_0_247953397.1092086011970
Content-Type: image/jpeg
Content-Transfer-Encoding: binary
Content-ID: <jpegImageRequest=81380956150.1092086011880.IBM.WEBSERVICES@myhost1>
<...contents of jpeg image file...>
以下の例は、SOAP 応答メッセージに対して、JMS メッセージの toString メソッドを呼び出した結果を示したものです。
JMSMessage class: jms_bytes
JMSType:          null
JMSDeliveryMode:  2
JMSExpiration:    0
JMSPriority:      4
JMSMessageID:     null
JMSTimestamp:     0
JMSCorrelationID: ID:cdddb857f078a266eb9a972f110a134f0000000000000001
JMSDestination:   null
JMSReplyTo:       null
JMSRedelivered:   false
contentType: multipart/related; type="text/xml"; 
  start="<961368106530.1092112854745.IBM.WEBSERVICES@yackerjr>";
  boundary="----=_Part_0_1655006754.1092112854745"
0d0a2d2d2d2d2d2d3d5f506172745f305f313635353030363735342e313039323131323835343734
350d0a436f6e74656e742d547970653a20746578742f786d6c3b20636861727365743d5554462d38
...

トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwbs_soapjms
ファイル名:rwbs_soapjms.html