23.2. 対話型 Web サービス
Seam では SOAP 要求と応答のメッセージの両方で SOAP ヘッダーエレメントを使い、 その対話 ID を消費者側からサービスへ、 またサービスから消費者側へと伝えています。 以下は対話 ID を含む Web サービス要求の一例です。
上記の SOAP メッセージには
conversationId エレメントが含まれ、 要求の対話 ID を含んでいます。 この例の場合は 2 です。 Web サービスを使う Web サービスのクライアントは多種多様で、なおかつさまざまな言語で記述されているため、 ひとつの対話のスコープ内で使われるそれぞれの Web サービス間の対話 ID の伝播を実装するのは開発者の責任となります。
conversationId ヘッダーエレメントは http://www.jboss.org/seam/webservice の名前空間に適したものでなければいけません。 そうでないと、 Seam はその要求から対話 ID を読み取ることができなくなります。 上記の要求メッセージに対する応答の例を示します。
応答メッセージには要求と同じ
conversationId エレメントが含まれているので留意してください。
23.2.1. 推奨される方法 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Web サービスはステートレスセッション Bean または POJO で実装する必要があります。そのため 対話型 Web サービスには対話型 Seam コンポーネントの外観に Web サービスを実装させることをお勧めします。
Web サービスをステートレスセッション Bean で記述する場合は、 それに
@Name アノテーションを付与することで Seam コンポーネントに変換することも可能です。 これにより Web サービスのクラス自体で Seam のバイジェクションやその他の機能を使用することができます。