23.20. 高度な使用方法
HTTP プロデューサーをより詳細に制御する必要がある場合は、HttpComponent を使用する必要があります。ここで、さまざまなクラスを設定してカスタム動作を提供できます。
23.20.1. HTTP クライアントの SSL の設定 リンクのコピーリンクがクリップボードにコピーされました!
JSSE 設定ユーティリティーの使用
HTTP コンポーネントは、Camel JSSE 設定ユーティリティーを介して SSL/TLS 設定をサポートします。このユーティリティーは、記述する必要があるコンポーネント固有のコードの量を大幅に削減し、エンドポイントおよびコンポーネントレベルで設定できます。以下の例は、HTTP コンポーネントで ユーティリティーを使用する方法を示しています。
コンポーネントのプログラムによる設定
エンドポイントの Spring DSL ベースの設定
Apache HTTP クライアントを直接設定する
基本的に camel-http コンポーネントは Apache HttpClient 上に構築されています。詳細は SSL/TLS のカスタマイズ を参照するか、org.apache.camel.component.http.HttpsServerTestSupport unit test ベースクラスを確認してください。
カスタムの org.apache.camel.component.http.HttpClientConfigurer を実装して、http クライアントを完全に制御する必要がある場合は、http クライアントでいくつかの設定を行うこともできます。
ただし、キーストアとトラストストアを指定する だけ の場合は、Apache HTTP HttpClientConfigurer でこれを行うことができます。以下に例を示します。
KeyStore keystore = ...;
KeyStore truststore = ...;
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("https", 443, new SSLSocketFactory(keystore, "mypassword", truststore)));
KeyStore keystore = ...;
KeyStore truststore = ...;
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("https", 443, new SSLSocketFactory(keystore, "mypassword", truststore)));
次に、HttpClientConfigurer を実装するクラスを作成し、上記の例ごとにキーストアまたはトラストストアを提供する https プロトコルを登録する必要があります。次に、Camel ルートビルダークラスから、以下のようにフックできます。
HttpComponent httpComponent = getContext().getComponent("http", HttpComponent.class);
httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer());
HttpComponent httpComponent = getContext().getComponent("http", HttpComponent.class);
httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer());
Spring DSL を使用してこれを実行する場合は、URI を使用して HttpClientConfigurer を指定できます。以下に例を示します。
<bean id="myHttpClientConfigurer" class="my.https.HttpClientConfigurer"> </bean> <to uri="https://myhostname.com:443/myURL?httpClientConfigurer=myHttpClientConfigurer"/>
<bean id="myHttpClientConfigurer"
class="my.https.HttpClientConfigurer">
</bean>
<to uri="https://myhostname.com:443/myURL?httpClientConfigurer=myHttpClientConfigurer"/>
上記のように HttpClientConfigurer を実装し、キーストアとトラストストアを設定すると問題なく機能します。
HTTPS を使用した gotchas の認証
エンドユーザーは、HTTPS での認証に問題があることを報告していました。この問題は最終的に、カスタム設定済みの org.apache.http.protocol.HttpContext を指定して解決されました。
- 1.HttpContexts の(Spring)ファクトリーを作成します。
- 2.Spring アプリケーションコンテキストファイルで HttpContext を宣言します。
<bean id="myHttpContext" factory-bean="httpContextFactory" factory-method="getObject"/>
<bean id="myHttpContext" factory-bean="httpContextFactory" factory-method="getObject"/>
- 3.http URL でコンテキストを参照します。
<to uri="https://myhostname.com:443/myURL?httpContext=myHttpContext"/>
<to uri="https://myhostname.com:443/myURL?httpContext=myHttpContext"/>
異なる SSLContextParameters の使用
HTTP コンポーネントは、コンポーネントごとに org.apache.camel.support.jsse.SSLContextParameters の 1 つのインスタンスのみをサポートします。2 つ以上の異なるインスタンスを使用する必要がある場合は、以下のように複数の HTTP コンポーネントを設定する必要があります。には 2 つのコンポーネントがあり、それぞれが sslContextParameters プロパティーの独自のインスタンスを使用します。