240.7. 使用例
240.7.1. Request-Reply とシリアライズされたオブジェクトペイロードを使用する UDP Netty エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
240.7.2. 一方向通信を使用する TCP ベースの Netty コンシューマーエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
240.7.3. Request-Reply 通信を使用する SSL/TCP ベースの Netty consumer エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
JSSE 設定ユーティリティーの使用
Camel 2.9 の時点で、Netty コンポーネントは Camel JSSE Configuration Utility を介した SSL/TLS 設定をサポートしています。このユーティリティーは、記述する必要があるコンポーネント固有のコードの量を大幅に削減し、エンドポイントおよびコンポーネントレベルで設定できます。次の例は、Netty コンポーネントでユーティリティーを使用する方法を示しています。
コンポーネントのプログラムによる設定
エンドポイントの Spring DSL ベースの設定
Jetty コンポーネントでの基本的な SSL/TLS 設定の使用
SSLSession とクライアント証明書へのアクセスを取得する
Camel 2.12 以降で利用可能
たとえば、クライアント証明書に関する詳細を取得する必要がある場合は、javax.net.ssl.SSLSession
にアクセスできます。ssl=true
の場合、以下に示すように、Netty コンポーネントは SSLSession
を Camel メッセージのヘッダーとして保存します。
SSLSession session = exchange.getIn().getHeader(NettyConstants.NETTY_SSL_SESSION, SSLSession.class); // get the first certificate which is client certificate javax.security.cert.X509Certificate cert = session.getPeerCertificateChain()[0]; Principal principal = cert.getSubjectDN();
SSLSession session = exchange.getIn().getHeader(NettyConstants.NETTY_SSL_SESSION, SSLSession.class);
// get the first certificate which is client certificate
javax.security.cert.X509Certificate cert = session.getPeerCertificateChain()[0];
Principal principal = cert.getSubjectDN();
クライアントを認証するには、必ず needClientAuth=true
を設定してください。そうしないと、SSLSession
はクライアント証明書に関する情報にアクセスできず、例外 javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
が発生する可能性があります。クライアント証明書の有効期限が切れているか、有効でない場合などにも、この例外が発生する可能性があります。
オプション sslClientCertHeaders を
true
に設定すると、Camel メッセージがクライアント証明書に関する詳細を含むヘッダーで強化されます。たとえば、サブジェクト名はヘッダー CamelNettySSLClientCertSubjectName
ですぐに利用できます。
240.7.4. 複数のコーデックの使用 リンクのコピーリンクがクリップボードにコピーされました!
場合によっては、エンコーダーとデコーダーのチェーンを netty パイプラインに追加する必要があります。複数のコーデックを camel netty エンドポイントに追加するには、'encoders' および 'decoders' uri パラメーターを使用する必要があります。encoder および decoder パラメーターと同様に、パイプラインに追加する必要がある (ChannelUpstreamHandlers および ChannelDownstreamHandlers のリストへの) 参照を提供するために使用されます。エンコーダーが指定されている場合、デコーダーとデコーダーのパラメーターと同様に、エンコーダーのパラメーターは無視されることに注意してください。
共有不可能なエンコーダー/デコーダーの使用については、上記をお読みください。
エンドポイントの作成時に解決できるように、コーデックのリストを Camel のレジストリーに追加する必要があります。
Spring のネイティブコレクションサポートを使用して、アプリケーションコンテキストでコーデックリストを指定できます。
Bean 名は、netty エンドポイント定義でコンマ区切りのリストとして使用するか、リストに含めることができます。
または Spring 経由。