クラス WebServiceTemplate

実装されたすべてのインターフェース:
org.springframework.beans.factory.InitializingBeanWebServiceOperations

public class WebServiceTemplate extends WebServiceAccessor implements WebServiceOperations
クライアント側 Web サービスの主要クラスWebServiceMessage インスタンスを送受信するためのメッセージ駆動型アプローチを提供します。

このクラスを使用するコードは、コールバックインターフェースを実装するか、データを読み取るための SourceSE オブジェクトを提供するか、プラグ可能な Marshaller サポートを使用するだけで済みます。marshalling methods を呼び出すには、marshaller プロパティと unmarshaller プロパティを設定する必要があります。

このテンプレートは、SoapFaultMessageResolver を使用して障害レスポンスメッセージを処理します。別の FaultMessageResolver は、faultMessageResolver プロパティを使用して定義できます。このプロパティが null に設定されている場合、障害解決は実行されません。

このテンプレートは、送受信に次のアルゴリズムを使用します。

  1. createConnection() を呼び出します。
  2. 登録済みメッセージファクトリで createWebServiceMessage() を呼び出して、リクエストメッセージを作成します。
  3. リクエストコールバックがある場合は、doWithMessage() を呼び出します。このステップでは、Source、マーシャリングなどに基づいて、リクエストメッセージにコンテンツを保存します。
  4. 登録された interceptorshandleRequest() を呼び出します。インターセプターは順番に実行されます。インターセプターのいずれかがメッセージコンテキストでレスポンスメッセージを作成する場合は、手順 7 にスキップします。
  5. 接続で send() を呼び出します。
  6. hasError() を呼び出して、接続にエラーがあるかどうかを確認します。HTTP トランスポートの場合、2xx 以外のステータスコードはエラーを示します。ただし、ステータスコード 500 は SOAP 障害を示している可能性もあるため、テンプレートはエラーが障害ではないかどうかを確認します。
    • 接続にエラーがある場合は、handleError() メソッドを呼び出します。このメソッドは、デフォルトで WebServiceTransportException をスローします。
    • 接続にエラーがない場合は、次の手順に進みます。
  7. 接続で receive を呼び出して、レスポンスメッセージがある場合はそれを読み取ります。
  8. 接続で close を呼び出します。
導入:
1.0.0
作成者:
Arjen Poutsma
  • フィールドの詳細

    • MESSAGE_TRACING_LOG_CATEGORY

      public static final StringSE MESSAGE_TRACING_LOG_CATEGORY
      メッセージトレースに使用するログカテゴリ。
      関連事項:
    • sentMessageTracingLogger

      protected static final org.apache.commons.logging.Log sentMessageTracingLogger
      送信メッセージのトレースに使用する追加のロガー。
    • receivedMessageTracingLogger

      protected static final org.apache.commons.logging.Log receivedMessageTracingLogger
      受信メッセージのトレースに使用する追加のロガー。
  • コンストラクターの詳細

    • WebServiceTemplate

      public WebServiceTemplate()
      デフォルト設定を使用して新しい WebServiceTemplate を作成します。
    • WebServiceTemplate

      public WebServiceTemplate(WebServiceMessageFactory messageFactory)
      指定されたメッセージファクトリに基づいて新しい WebServiceTemplate を作成します。
      パラメーター:
      messageFactory - 使用するメッセージファクトリ
    • WebServiceTemplate

      public WebServiceTemplate(org.springframework.oxm.Marshaller marshaller)
      指定されたマーシャラーで新しい WebServiceTemplate を作成します。指定された Marshaller が Unmarshaller インターフェースも実装している場合、マーシャリングとアンマーシャリングの両方に使用されます。それ以外の場合は、例外がスローされます。

      Spring のすべての Marshaller 実装も Unmarshaller インターフェースを実装するため、このコンストラクターを安全に使用できることに注意してください。

      パラメーター:
      marshaller - マーシャラーおよびアンマーシャラーとして使用されるオブジェクト
      例外:
      IllegalArgumentExceptionSE - marshaller が Unmarshaller インターフェースを実装していない場合
      導入:
      2.0.3
    • WebServiceTemplate

      public WebServiceTemplate(org.springframework.oxm.Marshaller marshaller, org.springframework.oxm.Unmarshaller unmarshaller)
      指定されたマーシャラーとアンマーシャラーを使用して新しい MarshallingMethodEndpointAdapter を作成します。
      パラメーター:
      marshaller - 使用するマーシャラー
      unmarshaller - 使用するアンマーシャラー
      導入:
      2.0.3
  • メソッドの詳細

    • getDefaultUri

      public StringSE getDefaultUri()
      URI パラメーターを持たない操作で使用されるデフォルトの URI を返します。
    • setDefaultUri

      public void setDefaultUri(StringSE uri)
      URI パラメーターを持たない操作で使用されるデフォルトの URI を設定します。

      通常、このプロパティは設定されているか、setDestinationProvider(DestinationProvider) のいずれかですが、両方は設定されていません。

      関連事項:
    • getDestinationProvider

      public DestinationProvider getDestinationProvider()
      URI パラメーターを持たない操作で使用される宛先プロバイダーを返します。
    • setDestinationProvider

      public void setDestinationProvider(DestinationProvider destinationProvider)
      URI パラメーターを持たない操作で使用される宛先プロバイダー URI を設定します。

      通常、このプロパティは設定されているか、setDefaultUri(String) のいずれかですが、両方は設定されていません。

      関連事項:
    • getMarshaller

      public org.springframework.oxm.Marshaller getMarshaller()
      このテンプレートのマーシャラーを返します。
    • setMarshaller

      public void setMarshaller(org.springframework.oxm.Marshaller marshaller)
      このテンプレートのマーシャラーを設定します。
    • getUnmarshaller

      public org.springframework.oxm.Unmarshaller getUnmarshaller()
      このテンプレートのアンマーシャラーを返します。
    • setUnmarshaller

      public void setUnmarshaller(org.springframework.oxm.Unmarshaller unmarshaller)
      このテンプレートのアンマーシャラーを設定します。
    • getFaultMessageResolver

      public FaultMessageResolver getFaultMessageResolver()
      このテンプレートの障害メッセージリゾルバーを返します。
    • setFaultMessageResolver

      public void setFaultMessageResolver(FaultMessageResolver faultMessageResolver)
      このテンプレートの障害解決ツールを設定します。デフォルトは SoapFaultMessageResolver ですが、障害処理を無効にするために null に設定することもできます。
    • setCheckConnectionForError

      public void setCheckConnectionForError(boolean checkConnectionForError)
      接続でエラーインジケータをチェックする必要があるか(true)、またはこれらを無視する必要があるか(false)を示します。デフォルトは true です。

      HTTP トランスポートを使用する場合、このプロパティは、HTTP レスポンスステータスコードが 2xx 成功範囲内にあるかどうかを確認するかどうかを定義します。SOAP 仕様と WS-I 基本プロファイルの両方で、Web サービスは通常のレスポンスに対して "200OK" または "202Accepted" HTTP ステータスコードを返す必要があると定義されています。このプロパティを false に設定すると、このテンプレートは不適合なサービスを処理できます。

      関連事項:
    • setCheckConnectionForFault

      public void setCheckConnectionForFault(boolean checkConnectionForFault)
      接続で障害インジケータをチェックする必要があるか(true)、または message のみに依存する必要があるか(false)を示します。デフォルトは true です。

      HTTP トランスポートを使用する場合、このプロパティは、HTTP レスポンスステータスコードで障害インジケータをチェックするかどうかを定義します。SOAP 仕様と WS-I 基本プロファイルの両方で、レスポンスエンベロープが障害の場合、Web サービスは「500 内部サーバーエラー」HTTP ステータスコードを返す必要があると定義されています。このプロパティを false に設定すると、このテンプレートは不適合なサービスを処理できます。

      関連事項:
    • getInterceptors

      public ClientInterceptor[] getInterceptors()
      このテンプレートによって行われたすべての Web サービス呼び出しに適用するクライアントインターセプターを返します。
      戻り値:
      エンドポイントインターセプターの配列、または存在しない場合は null 
    • setInterceptors

      public final void setInterceptors(ClientInterceptor[] interceptors)
      このテンプレートによって行われたすべての Web サービス呼び出しに適用するようにクライアントインターセプターを設定します。
      パラメーター:
      interceptors - エンドポイントインターセプターの配列、または存在しない場合は null 
    • initDefaultStrategies

      protected void initDefaultStrategies()
      テンプレートの戦略のデフォルトの実装を初期化します: SoapFaultMessageResolverSaajSoapMessageFactoryHttpUrlConnectionMessageSender
      例外:
      org.springframework.beans.factory.BeanInitializationException - 初期化エラーの場合
      関連事項:
    • marshalSendAndReceive

      public ObjectSE marshalSendAndReceive(ObjectSE requestPayload)
      インターフェースからコピーされた説明: WebServiceOperations
      構成された Marshaller によってマーシャリングされた、指定されたペイロードを含む Web サービスメッセージを送信します。レスポンスメッセージのマーシャリングされていないペイロードがあれば、それを返します。

      これは、デフォルトの URI が指定されている場合にのみ機能します。

      次で指定:
      インターフェース WebServiceOperationsmarshalSendAndReceive 
      パラメーター:
      requestPayload - リクエストメッセージペイロードにマーシャリングするオブジェクト
      戻り値:
      レスポンスメッセージのマーシャリングされていないペイロード、またはレスポンスがない場合は null 
      関連事項:
    • marshalSendAndReceive

      public ObjectSE marshalSendAndReceive(StringSE uri, ObjectSE requestPayload)
      インターフェースからコピーされた説明: WebServiceOperations
      構成された Marshaller によってマーシャリングされた、指定されたペイロードを含む Web サービスメッセージを送信します。レスポンスメッセージのマーシャリングされていないペイロードがあれば、それを返します。
      次で指定:
      インターフェース WebServiceOperationsmarshalSendAndReceive 
      パラメーター:
      uri - メッセージを送信する URI
      requestPayload - リクエストメッセージペイロードにマーシャリングするオブジェクト
      戻り値:
      レスポンスメッセージのマーシャリングされていないペイロード、またはレスポンスがない場合は null 
      関連事項:
    • marshalSendAndReceive

      public ObjectSE marshalSendAndReceive(ObjectSE requestPayload, WebServiceMessageCallback requestCallback)
      インターフェースからコピーされた説明: WebServiceOperations
      構成された Marshaller によってマーシャリングされた、指定されたペイロードを含む Web サービスメッセージを送信します。レスポンスメッセージのマーシャリングされていないペイロードがあれば、それを返します。指定されたコールバックでは、ペイロードがマーシャリングされた後、リクエストメッセージを変更できます。

      これは、デフォルトの URI が指定されている場合にのみ機能します。

      次で指定:
      インターフェース WebServiceOperationsmarshalSendAndReceive 
      パラメーター:
      requestPayload - リクエストメッセージペイロードにマーシャリングするオブジェクト
      requestCallback - メッセージを変更するためのコールバック、null にすることができます
      戻り値:
      レスポンスメッセージのマーシャリングされていないペイロード、またはレスポンスがない場合は null 
      関連事項:
    • marshalSendAndReceive

      public ObjectSE marshalSendAndReceive(StringSE uri, ObjectSE requestPayload, WebServiceMessageCallback requestCallback)
      インターフェースからコピーされた説明: WebServiceOperations
      構成された Marshaller によってマーシャリングされた、指定されたペイロードを含む Web サービスメッセージを送信します。レスポンスメッセージのマーシャリングされていないペイロードがあれば、それを返します。指定されたコールバックでは、ペイロードがマーシャリングされた後、リクエストメッセージを変更できます。
      次で指定:
      インターフェース WebServiceOperationsmarshalSendAndReceive 
      パラメーター:
      uri - メッセージを送信する URI
      requestPayload - リクエストメッセージペイロードにマーシャリングするオブジェクト
      requestCallback - メッセージを変更するためのコールバック、null にすることができます
      戻り値:
      レスポンスメッセージのマーシャリングされていないペイロード、またはレスポンスがない場合は null 
      関連事項:
    • sendSourceAndReceiveToResult

      public boolean sendSourceAndReceiveToResult(SourceSE requestPayload, ResultSE responseResult)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたペイロードを含む Web サービスメッセージを送信します。レスポンスがある場合は、指定された Result に書き込みます。

      これは、デフォルトの URI が指定されている場合にのみ機能します。

      次で指定:
      インターフェース WebServiceOperationssendSourceAndReceiveToResult 
      パラメーター:
      requestPayload - リクエストメッセージのペイロード
      responseResult - レスポンスペイロードを書き込む結果
      戻り値:
      レスポンスを受信した場合は true。それ以外の場合は false 
    • sendSourceAndReceiveToResult

      public boolean sendSourceAndReceiveToResult(StringSE uri, SourceSE requestPayload, ResultSE responseResult)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたペイロードを含む Web サービスメッセージを送信します。レスポンスがある場合は、指定された Result に書き込みます。
      次で指定:
      インターフェース WebServiceOperationssendSourceAndReceiveToResult 
      パラメーター:
      uri - メッセージを送信する URI
      requestPayload - リクエストメッセージのペイロード
      responseResult - レスポンスペイロードを書き込む結果
      戻り値:
      レスポンスを受信した場合は true。それ以外の場合は false 
    • sendSourceAndReceiveToResult

      public boolean sendSourceAndReceiveToResult(SourceSE requestPayload, WebServiceMessageCallback requestCallback, ResultSE responseResult)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたペイロードを含む Web サービスメッセージを送信します。レスポンスがある場合は、指定された Result に書き込みます。

      指定されたコールバックでは、ペイロードが書き込まれた後、リクエストメッセージを変更できます。

      これは、デフォルトの URI が指定されている場合にのみ機能します。

      次で指定:
      インターフェース WebServiceOperationssendSourceAndReceiveToResult 
      パラメーター:
      requestPayload - リクエストメッセージのペイロード
      requestCallback - メッセージを変更するためのコールバック、null にすることができます
      responseResult - レスポンスペイロードを書き込む結果
      戻り値:
      レスポンスを受信した場合は true。それ以外の場合は false 
    • sendSourceAndReceiveToResult

      public boolean sendSourceAndReceiveToResult(StringSE uri, SourceSE requestPayload, WebServiceMessageCallback requestCallback, ResultSE responseResult)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたペイロードを含む Web サービスメッセージを送信します。レスポンスがある場合は、指定された Result に書き込みます。

      指定されたコールバックでは、ペイロードが書き込まれた後、リクエストメッセージを変更できます。

      次で指定:
      インターフェース WebServiceOperationssendSourceAndReceiveToResult 
      パラメーター:
      uri - メッセージを送信する URI
      requestPayload - リクエストメッセージのペイロード
      requestCallback - メッセージを変更するためのコールバック、null にすることができます
      responseResult - レスポンスペイロードを書き込む結果
      戻り値:
      レスポンスを受信した場合は true。それ以外の場合は false 
    • sendSourceAndReceive

      public <T> T sendSourceAndReceive(SourceSE requestPayload, SourceExtractor<T> responseExtractor)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたペイロードを含む Web サービスメッセージを送信し、SourceExtractor で結果を読み取ります。

      これは、デフォルトの URI が指定されている場合にのみ機能します。

      次で指定:
      インターフェース WebServiceOperationssendSourceAndReceive 
      パラメーター:
      requestPayload - リクエストメッセージのペイロード
      responseExtractor - 結果を抽出するオブジェクト
      戻り値:
      SourceExtractor によって返される任意の結果オブジェクト
    • sendSourceAndReceive

      public <T> T sendSourceAndReceive(StringSE uri, SourceSE requestPayload, SourceExtractor<T> responseExtractor)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたペイロードを含む Web サービスメッセージを送信し、SourceExtractor で結果を読み取ります。
      次で指定:
      インターフェース WebServiceOperationssendSourceAndReceive 
      パラメーター:
      uri - メッセージを送信する URI
      requestPayload - リクエストメッセージのペイロード
      responseExtractor - 結果を抽出するオブジェクト
      戻り値:
      SourceExtractor によって返される任意の結果オブジェクト
    • sendSourceAndReceive

      public <T> T sendSourceAndReceive(SourceSE requestPayload, WebServiceMessageCallback requestCallback, SourceExtractor<T> responseExtractor)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたペイロードを含む Web サービスメッセージを送信し、SourceExtractor で結果を読み取ります。

      指定されたコールバックでは、ペイロードが書き込まれた後、リクエストメッセージを変更できます。

      これは、デフォルトの URI が指定されている場合にのみ機能します。

      次で指定:
      インターフェース WebServiceOperationssendSourceAndReceive 
      パラメーター:
      requestPayload - リクエストメッセージのペイロード
      requestCallback - メッセージを変更するためのコールバック、null にすることができます
      responseExtractor - 結果を抽出するオブジェクト
      戻り値:
      SourceExtractor によって返される任意の結果オブジェクト
    • sendSourceAndReceive

      public <T> T sendSourceAndReceive(StringSE uri, SourceSE requestPayload, WebServiceMessageCallback requestCallback, SourceExtractor<T> responseExtractor)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたペイロードを含む Web サービスメッセージを送信し、SourceExtractor で結果を読み取ります。

      指定されたコールバックでは、ペイロードが書き込まれた後、リクエストメッセージを変更できます。

      次で指定:
      インターフェース WebServiceOperationssendSourceAndReceive 
      パラメーター:
      uri - メッセージを送信する URI
      requestPayload - リクエストメッセージのペイロード
      requestCallback - メッセージを変更するためのコールバック、null にすることができます
      responseExtractor - 結果を抽出するオブジェクト
      戻り値:
      SourceExtractor によって返される任意の結果オブジェクト
    • sendAndReceive

      public boolean sendAndReceive(WebServiceMessageCallback requestCallback, WebServiceMessageCallback responseCallback)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたリクエストコールバックで操作できる Web サービスメッセージを送信し、レスポンスコールバックでレスポンスを処理します。

      これは、デフォルトの URI が指定されている場合にのみ機能します。

      次で指定:
      インターフェース WebServiceOperationssendAndReceive 
      パラメーター:
      requestCallback - リクエストメッセージの操作に使用されるコールバック
      responseCallback - レスポンスメッセージの操作に使用されるコールバック
      戻り値:
      レスポンスを受信した場合は true。それ以外の場合は false 
    • sendAndReceive

      public boolean sendAndReceive(StringSE uri, WebServiceMessageCallback requestCallback, WebServiceMessageCallback responseCallback)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたリクエストコールバックで操作できる Web サービスメッセージを送信し、レスポンスコールバックでレスポンスを処理します。
      次で指定:
      インターフェース WebServiceOperationssendAndReceive 
      パラメーター:
      uri - メッセージを送信する URI
      requestCallback - リクエストメッセージの操作に使用されるコールバック
      responseCallback - レスポンスメッセージの操作に使用されるコールバック
      戻り値:
      レスポンスを受信した場合は true。それ以外の場合は false 
    • sendAndReceive

      public <T> T sendAndReceive(WebServiceMessageCallback requestCallback, WebServiceMessageExtractor<T> responseExtractor)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたコールバックで操作できる Web サービスメッセージを送信し、WebServiceMessageExtractor で結果を読み取ります。

      これは、デフォルトの URI が指定されている場合にのみ機能します。

      次で指定:
      インターフェース WebServiceOperationssendAndReceive 
      パラメーター:
      requestCallback - リクエストメッセージの操作に使用される requestCallback
      responseExtractor - 結果を抽出するオブジェクト
      戻り値:
      WebServiceMessageExtractor によって返される任意の結果オブジェクト
    • sendAndReceive

      public <T> T sendAndReceive(StringSE uriString, WebServiceMessageCallback requestCallback, WebServiceMessageExtractor<T> responseExtractor)
      インターフェースからコピーされた説明: WebServiceOperations
      指定されたコールバックで操作できる Web サービスメッセージを送信し、WebServiceMessageExtractor で結果を読み取ります。
      次で指定:
      インターフェース WebServiceOperationssendAndReceive 
      パラメーター:
      uriString - メッセージを送信する URI
      requestCallback - リクエストメッセージの操作に使用される requestCallback
      responseExtractor - 結果を抽出するオブジェクト
      戻り値:
      WebServiceMessageExtractor によって返される任意の結果オブジェクト
    • doSendAndReceive

      protected <T> T doSendAndReceive(MessageContext messageContext, WebServiceConnection connection, WebServiceMessageCallback requestCallback, WebServiceMessageExtractor<T> responseExtractor) throws IOExceptionSE
      MessageContext を送受信します。request message を送信し、repsonse message に受信します。プロセスの一部として、定義された interceptors を呼び出します。
      パラメーター:
      messageContext - メッセージコンテキスト
      connection - 使用する接続
      requestCallback - リクエストメッセージの操作に使用される requestCallback
      responseExtractor - 結果を抽出するオブジェクト
      戻り値:
      WebServiceMessageExtractor によって返される任意の結果オブジェクト
      例外:
      WebServiceClientException - メッセージの送受信に問題がある場合
      IOExceptionSE - I/O エラーの場合
    • hasError

      protected boolean hasError(WebServiceConnection connection, WebServiceMessage request) throws IOExceptionSE
      指定された接続またはメッセージコンテキストにエラーがあるかどうかを判別します。

      この実装は、最初に connection をチェックします。エラーを示している場合は、fault ではないことを確認します。

      パラメーター:
      connection - 接続(おそらく FaultAwareWebServiceConnection
      request - レスポンスメッセージ(おそらく FaultAwareWebServiceMessage
      戻り値:
      接続にエラーがある場合は true。それ以外の場合は false 
      例外:
      IOExceptionSE - I/O エラーの場合
    • handleError

      protected ObjectSE handleError(WebServiceConnection connection, WebServiceMessage request) throws IOExceptionSE
      指定された接続のエラーを処理します。デフォルトの実装は WebServiceTransportException をスローします。
      パラメーター:
      connection - 誤った接続
      request - 対応するリクエストメッセージ
      戻り値:
      sendAndReceive(String,WebServiceMessageCallback, WebServiceMessageExtractor) から返されるオブジェクト(存在する場合)
      例外:
      IOExceptionSE
    • hasFault

      protected boolean hasFault(WebServiceConnection connection, WebServiceMessage response) throws IOExceptionSE
      指定された接続またはメッセージに障害があるかどうかを判別します。

      この実装は、checkConnectionForFault プロパティが true の場合は connection をチェックし、それ以外の場合はデフォルトで message になります。

      パラメーター:
      connection - 接続(おそらく FaultAwareWebServiceConnection
      response - レスポンスメッセージ(おそらく FaultAwareWebServiceMessage
      戻り値:
      接続またはメッセージのいずれかに障害がある場合は true。それ以外の場合は false 
      例外:
      IOExceptionSE - I/O エラーの場合
    • handleFault

      protected ObjectSE handleFault(WebServiceConnection connection, MessageContext messageContext) throws IOExceptionSE
      指定されたレスポンスメッセージの障害を処理します。デフォルトの実装では、登録されている場合は fault resolver が呼び出され、登録されていない場合は handleError(WebServiceConnection, WebServiceMessage) が呼び出されます。
      パラメーター:
      connection - 障害のある接続
      messageContext - メッセージコンテキスト
      戻り値:
      sendAndReceive(String,WebServiceMessageCallback, WebServiceMessageExtractor) から返されるオブジェクト(存在する場合)
      例外:
      IOExceptionSE