Menu Close

第12章 HTTP の使用

概要

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

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

代替 HTTP ランタイム

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

Netty HTTP URL

通常、HTTP エンドポイントは、クラスパスに含まれている HTTP ランタイム (Undertow または Netty のいずれか) を使用します。ただし、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.1address 要素を使用してエンドポイントのアドレスを指定する必要があります。エンドポイントのアドレスを URL として指定する 1 つの属性 location があります。SOAP 1.1 address 要素は、namespace http://schemas.xmlsoap.org/wsdl/soap/ に定義されています。

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

例12.1 SOAP 1.1 port 要素

<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.2address 要素を使用してエンドポイントのアドレスを指定する必要があります。エンドポイントのアドレスを URL として指定する 1 つの属性 location があります。SOAP 1.2 address 要素は namespace http://schemas.xmlsoap.org/wsdl/soap12/ に定義されています。

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

例12.2 SOAP 1.2 port 要素

<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 port 要素」 は、XML メッセージの送信に使用される port 要素を示しています。

例12.3 HTTP port 要素

<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>