第12章 HTTP の使用

概要

HTTP は Web の基礎となるトランスポートです。エンドポイント間の通信に標準化された堅牢で柔軟なプラットフォームを提供します。これらの要素により、ほとんどの WS-* 仕様のトランスポートが想定され、RESTful アーキテクチャーに不可欠です。

12.1. 基本的な HTTP エンドポイントの追加

代替 HTTP ランタイム

Apache CXF は、以下の代替の HTTP ランタイム実装をサポートします。

Netty HTTP URL

通常、HTTP エンドポイントはクラスパス (Undertow または Netty のいずれか) に含まれる HTTP ランタイムを使用します。ただし、Undertow ランタイムと Netty ランタイムの両方がクラスパスに含まれている場合は、Undertow ランタイムがデフォルトで使用されるため、Netty ランタイムをいつ使用するかを明示的に指定する必要があります。

クラスパスで複数の HTTP ランタイムが使用可能な場合は、エンドポイント URL を次の形式で指定することにより、Undertow ランタイムを選択できます。

netty://http://RestOfURL

ペイロードのタイプ

使用しているペイロード形式に応じて、HTTP エンドポイントのアドレスを指定する 3 つの方法があります。

  • SOAP 1.1 は標準化された soap:address 要素を使用します。
  • SOAP 1.2 は soap12:address 要素を使用します。
  • その他のペイロード形式はすべて http:address element. を使用します。
注記

Camel 2.16.0 リリースでは、Apache Camel CXF Payload は追加設定なしでストリームキャッシュをサポートします。

SOAP 1.1

HTTP 経由で SOAP 1.1 メッセージを送信する場合は、SOAP 1.1 address 要素を使用してエンドポイントのアドレスを指定する必要があります。エンドポイントのアドレスを URL として指定する 1 つの属性 location があります。SOAP 1.1 address 要素は、namespace http://schemas.xmlsoap.org/wsdl/soap/ で定義されています。

例12.1「SOAP 1.1 ポート要素」 は、HTTP 経由で SOAP 1.1 メッセージを送信するために使用される port 要素を示しています。

例12.1 SOAP 1.1 ポート要素

<definitions ...
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" ...>
  ...
  <service name="SOAP11Service">
    <port binding="SOAP11Binding" name="SOAP11Port">
      <soap:address location="http://artie.com/index.xml">
    </port>
  </service>
  ...
<definitions>

SOAP 1.2

HTTP 経由で SOAP 1.2 メッセージを送信する場合は、SOAP 1.2 address 要素を使用してエンドポイントのアドレスを指定する必要があります。エンドポイントのアドレスを URL として指定する 1 つの属性 location があります。SOAP 1.2 address 要素は、namespace http://schemas.xmlsoap.org/wsdl/soap12/ で定義されています。

例12.2「SOAP 1.2 ポート要素」 は、HTTP 経由で SOAP 1.2 メッセージを送信するために使用される port 要素を示しています。

例12.2 SOAP 1.2 ポート要素

<definitions ...
             xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" ... >
  <service name="SOAP12Service">
    <port binding="SOAP12Binding" name="SOAP12Port">
      <soap12:address location="http://artie.com/index.xml">
    </port>
  </service>
  ...
</definitions>

その他のメッセージタイプ

メッセージが SOAP 以外のペイロードフォーマットにマッピングされている場合は、HTTP address 要素を使用して、エンドポイントのアドレスを指定する必要があります。エンドポイントのアドレスを URL として指定する 1 つの属性 location があります。HTTP address 要素は、namespace http://schemas.xmlsoap.org/wsdl/http/ で定義されています。

例12.3「HTTP ポート要素」 は、XML メッセージの送信に使用される port 要素を示しています。

例12.3 HTTP ポート要素

<definitions ...
             xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" ... >
  <service name="HTTPService">
    <port binding="HTTPBinding" name="HTTPPort">
      <http:address location="http://artie.com/index.xml">
    </port>
  </service>
  ...
</definitions>