第18章 リモーティングの設定

18.1. Remoting サブシステム

remoting サブシステムは、ローカルおよびリモートサービスのインバウンドおよびアウトバウンド接続の設定を可能にします。

JBoss Remoting には、設定可能な要素としてエンドポイント、コネクター、複数のローカルおよびリモート接続 URI が含まれます。独自のアプリケーションにカスタムコネクターを使用する場合を除き、remoting のサブシステムの設定は必要でないことがほとんどです。EJB などの、リモーティングクライアントとして動作するアプリケーションには特定のコネクターに接続するための別の設定が必要になります。

Remoting サブシステムのデフォルト設定

<subsystem xmlns="urn:jboss:domain:remoting:3.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 つのタイプのアウトバウンド接続を指定することができます。

追加設定

リモーティングは、ネットワークインターフェースや IO ワーカーなどの remoting サブシステム外部で設定された複数の要素に依存します。

詳細は、リモーティングの追加設定を参照してください。

18.2. エンドポイントの設定

重要

JBoss EAP 6 では、ワーカースレッドプールは直接 remoting サブシステムで設定されていました。JBoss EAP 7 では、リモーティング endpoint 設定が io サブシステムからワーカーを参照します。

JBoss EAP は 以下の endpoint 設定をデフォルトで提供します。

<subsystem xmlns="urn:jboss:domain:remoting:3.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:3.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. リモートアウトバウンド接続の設定

リモートアウトバウンド接続は、プロトコル、アウトバウンドソケットバインディング、ユーザー名、およびセキュリティーレルムによって指定されます。プロトコルは remotehttp-remotinghttps-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 は攻撃者がクライアントの要求を妨害し、要求を編集してセキュアでない接続を要求する中間者攻撃の対象になりやすい欠点があります。セキュアでない接続が適切なフォールバックである場合を除き、クライアントがセキュアな接続を取得できなかったときに適切に失敗するよう記述する必要があります。