Red Hat Training
A Red Hat training course is available for Red Hat Fuse
12.5. Netty ランタイムの設定
概要
Netty ランタイムは、切り離されたエンドポイントを使用して HTTP サービスプロバイダーおよび HTTP コンシューマーによって使用されます。ランタイムのスレッドプールは設定でき、Netty ランタイムを介して HTTP サービスプロバイダーのセキュリティー設定を多数設定することもできます。
Maven 依存関係
Apache Maven をビルドシステムとして使用する場合は、プロジェクトの pom.xml ファイルに以下の依存関係を追加し、Netty ランタイムのサーバー側の実装 (Web サービスエンドポイントを定義するため) をプロジェクトに追加できます。
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-netty-server</artifactId>
<version>${cxf-version}</version>
</dependency>
プロジェクトの pom.xml ファイルに以下の依存関係を含めることで、Netty ランタイムのクライアント側実装 (Web サービスクライアントを定義するため) をプロジェクトに追加できます。
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-netty-client</artifactId>
<version>${cxf-version}</version>
</dependency>Namespace
Netty ランタイムの設定に使用される要素は、名前空間 http://cxf.apache.org/transports/http-netty-server/configuration で定義されています。通常、接頭辞 httpn を使用して参照されます。Netty 設定要素を使用するには、例12.16「Netty ランタイム設定名前空間」 にある行をエンドポイント設定ファイルの beans 要素に追加する必要があります。また、設定要素の namespace を xsi:schemaLocation 属性に追加する必要があります。
例12.16 Netty ランタイム設定名前空間
<beans ...
xmlns:httpn="http://cxf.apache.org/transports/http-netty-server/configuration"
...
xsi:schemaLocation="...
http://cxf.apache.org/transports/http-netty-server/configuration
http://cxf.apache.org/schemas/configuration/http-netty-server.xsd
...">engine-factory 要素
httpn:engine-factory 要素は、アプリケーションによって使用される Netty ランタイムを設定するために使用されるルート要素です。1 つの必須属性 bus があります。この値は、設定される Netty インスタンスを管理する Bus の名前です。
値は通常、デフォルトの Bus インスタンスの名前である cxf です。
httpn:engine-factory 要素には、Netty ランタイムファクトリーによってインスタンス化された HTTP ポートの設定に使用される情報が含まれる 3 つの子があります。子は、表12.10「Netty ランタイムファクトリーを設定するための要素」 で説明されています。
表12.10 Netty ランタイムファクトリーを設定するための要素
| 要素 | 説明 |
|---|---|
|
| 特定の Netty ランタイムインスタンスの設定を指定します。「engine 要素」を参照してください。 |
|
HTTP サービスプロバイダーを保護するための再利用可能なプロパティーのセットを指定します。これには、プロパティーセットを参照できる一意の識別子を指定する単一の属性 | |
|
Netty インスタンスのスレッドプールを制御するための再利用可能なプロパティーセットを指定します。これには、プロパティーセットを参照できる一意の識別子を指定する単一の属性 「スレッドプールの設定」を参照してください。 |
engine 要素
httpn:engine 要素は、Netty ランタイムの特定のインスタンスを設定するために使用されます。表12.11「Netty ランタイムインスタンスを設定するための属性」 は、httpn:engine 要素によってサポートされる属性を示します。
表12.11 Netty ランタイムインスタンスを設定するための属性
| 属性 | 説明 |
|---|---|
|
|
Netty HTTP サーバーインスタンスによって使用されるポートを指定します。port 属性に |
|
| Netty HTTP サーバーインスタンスによって使用されるリッスンアドレスを指定します。値はホスト名または IP アドレスになります。指定されていない場合、Netty HTTP サーバーはすべてのローカルアドレスをリッスンします。 |
|
| Netty 接続の最大読み取りアイドル時間を指定します。タイマーは、基礎となるストリームに読み取りアクションがある場合は常にリセットされます。 |
|
| Netty 接続の最大書き込みアイドル時間を指定します。タイマーは、基礎となるストリームに書き込みアクションがある場合は常にリセットされます。 |
|
| Netty 接続の集約された最大コンテンツサイズを指定します。デフォルト値は 10MB です。 |
httpn:engine 要素には、セキュリティープロパティーを設定する子要素が 1 つあります。また、Netty インスタンスのスレッドプールを設定するための 1 つの子要素。設定の各タイプに対して、設定情報を直接提供するか、親 httpn:engine-factory 要素で定義された設定プロパティーのセットへの参照を指定できます。
httpn:engine でサポートされる子要素が 表12.12「Netty ランタイムインスタンスを設定するための要素」 に表示されます。
表12.12 Netty ランタイムインスタンスを設定するための要素
| 要素 | 説明 |
|---|---|
| 特定の Netty インスタンスに使用されるセキュリティーを設定するための一連のプロパティーを指定します。 | |
|
| |
| 特定の Netty インスタンスが使用するスレッドプールのサイズを指定します。「スレッドプールの設定」を参照してください。 | |
|
| |
|
|
|
|
|
|
スレッドプールの設定
Netty インスタンスのスレッドプールのサイズは、次のいずれかで設定できます。
-
engine-factory要素のidentifiedThreadingParameters要素を使用して、スレッドプールのサイズを指定します。次に、tthreadingParametersRef要素を使用して要素を参照します。 -
threadingParameters要素を使用して、スレッドプールのサイズを直接指定します。
threadingParameters 要素には、表12.13「Netty スレッドプールを設定するための属性」 で説明されているようにスレッドプールのサイズを指定する 1 つの属性があります。
httpn:identifiedThreadingParameters 要素には、単一の子 threadingParameters 要素があります。
表12.13 Netty スレッドプールを設定するための属性
| 属性 | 説明 |
|---|---|
|
| Netty インスタンスがリクエストを処理するために使用できるスレッドの数を指定します。 |
例
例12.17「Netty インスタンスの設定」 は、さまざまな Netty ポートを設定する設定フラグメントを示しています。
例12.17 Netty インスタンスの設定
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:h="http://cxf.apache.org/transports/http/configuration"
xmlns:httpn="http://cxf.apache.org/transports/http-netty-server/configuration"
xmlns:sec="http://cxf.apache.org/configuration/security"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/configuration/security
http://cxf.apache.org/schemas/configuration/security.xsd
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
http://cxf.apache.org/transports/http-netty-server/configuration
http://cxf.apache.org/schemas/configuration/http-netty-server.xsd"
>
...
<httpn:engine-factory bus="cxf">
<httpn:identifiedTLSServerParameters id="sample1">
<httpn:tlsServerParameters jsseProvider="SUN" secureSocketProtocol="TLS">
<sec:clientAuthentication want="false" required="false"/>
</httpn:tlsServerParameters>
</httpn:identifiedTLSServerParameters>
<httpn:identifiedThreadingParameters id="sampleThreading1">
<httpn:threadingParameters threadPoolSize="120"/>
</httpn:identifiedThreadingParameters>
<httpn:engine port="9000" readIdleTime="30000" writeIdleTime="90000">
<httpn:threadingParametersRef id="sampleThreading1"/>
</httpn:engine>
<httpn:engine port="0">
<httpn:threadingParameters threadPoolSize="400"/>
</httpn:engine>
<httpn:engine port="9001" readIdleTime="40000" maxChunkContentSize="10000">
<httpn:threadingParameters threadPoolSize="99" />
<httpn:sessionSupport>true</httpn:sessionSupport>
</httpn:engine>
<httpn:engine port="9002">
<httpn:tlsServerParameters>
<sec:clientAuthentication want="true" required="true"/>
</httpn:tlsServerParameters>
</httpn:engine>
<httpn:engine port="9003">
<httpn:tlsServerParametersRef id="sample1"/>
</httpn:engine>
</httpn:engine-factory>
</beans>