第18章 リモーティングの設定
18.1. Remoting サブシステム
remoting
サブシステムは、ローカルおよびリモートサービスのインバウンドおよびアウトバウンド接続の設定を可能にします。
JBoss Remoting には、設定可能な要素としてエンドポイント、コネクター、複数のローカルおよびリモート接続 URI が含まれます。独自のアプリケーションにカスタムコネクターを使用する場合を除き、remoting
のサブシステムの設定は必要でないことがほとんどです。EJB などの、リモーティングクライアントとして動作するアプリケーションには特定のコネクターに接続するための別の設定が必要になります。
Remoting サブシステムのデフォルト設定
<subsystem xmlns="urn:jboss:domain:remoting:4.0"> <endpoint/> <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/> </subsystem>
remoting サブシステムで使用できる属性の完全リストは、「Remoting サブシステムの属性
」を参照してください。
リモーティングエンドポイント
リモーティングエンドポイントは、io
サブシステムによって宣言および設定される XNIO ワーカーを使用します。
リモーティングエンドポイントの設定方法の詳細は、「エンドポイントの設定」を参照してください。
コネクター
コネクターは主なリモーティング設定要素です。複数のコネクターを設定できます。各コネクターは、複数のサブ要素を持つ <connector>
要素とその他の属性で構成されます。デフォルトのコネクターは複数の JBoss EAP サブシステムによって使用されます。カスタムコネクターの要素と属性の設定は、アプリケーションによって異なります。詳細は Red Hat グローバルサポートサービスまでお問い合わせください。
コネクターの設定方法の詳細は、「コネクターの設定」を参照してください。
送信接続
3 つのタイプのアウトバウンド接続を指定することができます。
- URI によって指定されるアウトバウンド接続
- ソケットなどのローカルリソースに接続するローカルアウトバウンド接続
- リモートリソースに接続し、セキュリティーレルムを使用して認証を行うリモートアウトバウンド接続
追加設定
リモーティングは、ネットワークインターフェースや IO ワーカーなどの remoting
サブシステム外部で設定された複数の要素に依存します。
詳細は、「リモーティングの追加設定」を参照してください。
18.2. エンドポイントの設定
JBoss EAP 6 では、ワーカースレッドプールは直接 remoting
サブシステムで設定されていました。JBoss EAP 7 では、リモーティング endpoint
設定が io
サブシステムからワーカーを参照します。
JBoss EAP は 以下の endpoint
設定をデフォルトで提供します。
<subsystem xmlns="urn:jboss:domain:remoting:4.0"> <endpoint/> ... </subsystem>
既存のエンドポイント設定の更新
/subsystem=remoting/configuration=endpoint:write-attribute(name=authentication-retries,value=2)
reload
新規エンドポイント設定の作成
/subsystem=remoting/configuration=endpoint:add
エンドポイント設定の削除
/subsystem=remoting/configuration=endpoint:remove
reload
エンドポイント設定で使用できる属性の完全リストは、「エンドポイントの設定」を参照してください。
18.3. コネクターの設定
コネクターはリモーティングに関する主な設定要素で、追加設定のサブ要素が複数含まれます。
既存のコネクター設定の更新
/subsystem=remoting/connector=new-connector:write-attribute(name=socket-binding,value=my-socket-binding)
reload
新規コネクターの作成
/subsystem=remoting/connector=new-connector:add(socket-binding=my-socket-binding)
コネクターの削除
/subsystem=remoting/connector=new-connector:remove
reload
コネクターの設定に使用できる属性の完全リストは「Remoting サブシステムの属性」の項を参照してください。
18.4. HTTP コネクターの設定
HTTP コネクターは、HTTP アップグレードベースのリモーティングコネクターの設定を提供します。JBoss EAP はデフォルトで次の http-connector
設定を提供します。
<subsystem xmlns="urn:jboss:domain:remoting:4.0"> ... <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/> </subsystem>
デフォルトでは、この HTTP コネクターは undertow
サブシステムに設定される default
という名前の HTTP リスナーに接続します。詳細は、「Web サーバーの設定 (Undertow)」を参照してください。
既存の HTTP コネクター設定の更新
/subsystem=remoting/http-connector=new-connector:write-attribute(name=connector-ref,value=new-connector-ref)
reload
新規 HTTP コネクターの作成
/subsystem=remoting/http-connector=new-connector:add(connector-ref=default)
HTTP コネクターの削除
/subsystem=remoting/http-connector=new-connector:remove
HTTP コネクターの設定に使用できる属性の完全リストは、「コネクターの属性」を参照してください。
18.5. アウトバウンド接続の設定
アウトバウンド接続は、URI によって完全に指定される汎用のリモーティングアウトバウンド接続です。
既存のアウトバウンド接続の更新
/subsystem=remoting/outbound-connection=new-outbound-connection:write-attribute(name=uri,value=http://example.com)
新規アウトバウンド接続の作成
/subsystem=remoting/outbound-connection=new-outbound-connection:add(uri=http://example.com)
アウトバウンド接続の削除
/subsystem=remoting/outbound-connection=new-outbound-connection:remove
アウトバウンド接続の設定に使用できる属性の完全リストは、「アウトバウンド接続の属性」を参照してください。
18.6. リモートアウトバウンド接続の設定
リモートアウトバウンド接続は、プロトコル、アウトバウンドソケットバインディング、ユーザー名、およびセキュリティーレルムによって指定されます。プロトコルは remote
、http-remoting
、https-remoting
のいずれかになります。
既存のリモートアウトバウンド接続の更新
/subsystem=remoting/remote-outbound-connection=new-remote-outbound-connection:write-attribute(name=outbound-socket-binding-ref,value=outbound-socket-binding)
新規リモートアウトバウンド接続の作成
/subsystem=remoting/remote-outbound-connection=new-remote-outbound-connection:add(outbound-socket-binding-ref=outbound-socket-binding)
リモートアウトバウント接続の削除
/subsystem=remoting/remote-outbound-connection=new-remote-outbound-connection:remove
リモートアウトバウンド接続の設定に使用できる属性の完全リストは、「リモートアウトバウンド接続の属性」を参照してください。
18.7. ローカルアウトバウンド接続の設定
ローカルアウトバウンド接続はプロトコルが local
のリモーティングアウトバウンド接続で、アウトバウントソケットバインディングのみによって指定されます。
既存のローカルアウトバウンド接続の更新
/subsystem=remoting/local-outbound-connection=new-local-outbound-connection:write-attribute(name=outbound-socket-binding-ref,value=outbound-socket-binding)
新規ローカルアウトバウンド接続の作成
/subsystem=remoting/local-outbound-connection=new-local-outbound-connection:add(outbound-socket-binding-ref=outbound-socket-binding)
ローカルアウトバウンド接続の削除
/subsystem=remoting/local-outbound-connection=new-local-outbound-connection:remove
ローカルアウトバウンド接続の設定に使用できる属性の完全リストは、「ローカルアウトバウンド接続の属性」を参照してください。
18.8. リモーティングの追加設定
remoting
サブシステム外部に接続されるリモーティング要素が複数あります。
- IO ワーカー
以下のコマンドを使用してリモーティングの IO ワーカーを設定します。
/subsystem=remoting/configuration=endpoint:write-attribute(name=worker, value=WORKER_NAME)
IO ワーカーの設定方法に関する詳細は「ワーカーの設定」を参照してください。
- ネットワークインターフェース
remoting
サブシステムによって使用されるネットワークインターフェースはpublic
インターフェースです。このインターフェースは他のサブシステムによっても使用されるため、変更する場合は十分注意してください。<interfaces> <interface name="management"> <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </interface> <interface name="unsecure"> <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/> </interface> </interfaces>
管理対象ドメインでは、
public
インターフェースはホストごとにhost.xml
ファイルで定義されます。- ソケットバインディング
remoting
サブシステムによって使用されるデフォルトのソケットバインディングはポート8080
にバインドされます。ソケットバインディングおよびソケットバインディンググループの詳細は、「ソケットバインディング」を参照してください。
- EJB の リモーティングコネクター参照
ejb3
サブシステムにはリモートメソッド呼び出しに対するリモーティングコネクターへの参照が含まれています。デフォルト設定は次のとおりです。<remote connector-ref="remoting-connector" thread-pool-name="default"/>
- セキュアなトランスポート設定
リモーティングトランスポートはクライアントの要求があれば STARTTLS を使用してセキュアな接続 (HTTPS、Secure Servlet など) を使用します。セキュアな接続とセキュアでない接続の両方で同じソケットバインディングまたはネットワークポートが使用されるため、サーバー側に追加の設定をする必要はありません。クライアントは必要に応じてセキュアなトランスポートまたはセキュアでないトランスポートを要求します。EJB、ORB、JMS プロバイダーなどのリモーティングを使用する JBoss EAP のコンポーネントはデフォルトでセキュアなインターフェースを使用します。
警告STARTTLS はクライアントの要求があればセキュアな接続を有効にしますが、セキュアでない接続がデフォルトになります。本質的に、StartTLS は攻撃者がクライアントの要求を妨害し、要求を編集してセキュアでない接続を要求する中間者攻撃の対象になりやすい欠点があります。セキュアでない接続が適切なフォールバックである場合を除き、クライアントがセキュアな接続を取得できなかったときに適切に失敗するよう記述する必要があります。