第 19 章 配置客户端

19.1. 使用 wildfly-config.xml 文件配置客户端

在发布 7.1 之前,JBoss EAP 客户端库(如 EJB 和命名)采用了不同的配置策略。JBoss EAP 7.1 引入了 wildfly-config.xml 文件,旨在将所有客户端配置统一到一个配置文件中,其方式与服务器配置处理方式类似。

下表介绍了可以使用 JBoss EAP 中的 wildfly-config.xml 文件实现的客户端和配置类型,以及指向每种配置引用模式链接的链接。

客户端配置架构位置/配置信息

身份验证客户端

该架构引用在 EAP_HOME/docs/schema/elytron-client-1_2.xsd 上的产品安装中提供。

模式也发布在 http://www.jboss.org/schema/jbossas/elytron-client-1_2.xsd

如需更多信息,请参阅使用 wildfly-config.xml 文件的客户端身份验证配置 来了解配置示例。

如需其他信息,请参阅如何为 JBoss EAP 配置身份管理,以使用 Elytron 客户端配置客户端身份验证

eJB 客户端

该架构引用在 EAP_HOME/docs/schema/wildfly-client-ejb_3_0.xsd 产品安装中提供。

模式也发布在 http://www.jboss.org/schema/jbossas/wildfly-client-ejb_3_0.xsd

如需更多信息和 示例配置,请参阅使用 wildfly-config.xml 文件的 EJB 客户端 配置。

另一个简单示例位于 JBoss EAP 迁移指南的 "将 EJB 客户端迁移到 Elytron "章节中。

HTTP 客户端

该架构引用在 EAP_HOME/docs/schema/wildfly-http-client_1_0.xsd 上的产品安装中提供。

模式也发布在 http://www.jboss.org/schema/jbossas/wildfly-http-client_1_0.xsd

如需更多信息,请参阅使用 wildfly-config.xml 文件的 HTTP 客户端配置 来了解配置示例。

远程客户端

该架构参考在 EAP_HOME/docs/schema/jboss-remoting_5_0.xsd 产品安装中提供。

模式也发布在 http://www.jboss.org/schema/jbossas/jboss-remoting_5_0.xsd

如需更多信息,请参阅使用 wildfly-config.xml 文件删除 客户端配置 以了解更多信息和示例配置。

XNIO worker 客户端

该架构参考在 EAP_HOME/docs/schema/xnio_3_5.xsd 产品安装中提供。

模式也发布在 http://www.jboss.org/schema/jbossas/xnio_3_5.xsd

如需更多信息,请参阅使用 wildfly-config.xml 文件配置默认 XNIO 工作程序 配置。

19.1.1. 使用 wildfly-config.xml 文件的客户端身份验证配置

您可以使用位于 urn:elytron: client:1.2 命名空间中的 authentication- client 元素,以使用 wildfly-config.xml 文件配置客户端身份验证信息。这部分论述了如何使用这个元素配置客户端身份验证。

authentication-client Elements 和 Attributes

authentication-client 元素可选择性地包含以下顶层子元素,及其子元素:

credential-stores

此可选元素定义从配置的其他位置引用的凭据存储,作为在配置中嵌入凭据的替代方法。

它可以包含任意数量 的凭据存储 元素。

示例: 凭证存储配置

<configuration>
  <authentication-client xmlns="urn:elytron:client:1.2">
    <credential-stores>
      <credential-store name="..." type="..." provider="..." >
        <attributes>
          <attribute name="..." value="..." />
        </attributes>
        <protection-parameter-credentials>...</protection-parameter-credentials>
      </credential-store>
    </credential-stores>
  </authentication-client>
</configuration>

credential-store

此元素定义从配置的其他位置引用的凭据存储。

它具有以下属性:

属性名称属性描述

name

凭据存储的名称。此属性是必需的。

type

凭据存储的类型。此属性是可选的。

provider

用于加载凭据存储的 java.security.Provider 的名称。此属性是可选的。

它可包含一个以及仅包含以下各个子元素之一:

属性

此元素定义用于初始化凭据存储的配置属性,并可根据需要重复。

示例: 属性 配置

<attributes>
  <attribute name="..." value="..." />
</attributes>

protection-parameter-credentials

此元素包含一个或多个凭据,组合成一个保护参数,以便在初始化凭据存储时使用。

它可包含以下一个或多个子元素,它们依赖于凭证存储实现:

示例: Protection-parameter-credentials 配置

<protection-parameter-credentials>
  <key-store-reference>...</key-store-reference>
  <credential-store-reference store="..." alias="..." clear-text="..." />
  <clear-password password="..." />
  <key-pair public-key-pem="..." private-key-pem="..." />
  <certificate private-key-pem="..." pem="..." />
  <public-key-pem>...</public-key-pem>
  <bearer-token value="..." />
  <oauth2-bearer-token token-endpoint-uri="...">...</oauth2-bearer-token>
</protection-parameter-credentials>

key-store-reference

此元素目前未由 JBoss EAP 中的任何身份验证机制使用,它定义对密钥存储的引用。

它具有以下属性:

属性名称属性描述

key-store-name

密钥存储名称。此属性是必需的。

Alias

从引用的密钥存储加载的条目的别名。这仅适用于仅包含单个条目的密钥存储,可以省略。

它可以包含其中一个,并且只能包含以下子元素之一:

示例: 键存储引用 配置

<key-store-reference key-store-name="..." alias="...">
  <key-store-clear-password password="..." />
  <key-store-credential>...</key-store-credential>
</key-store-reference>

credential-store-reference

此元素定义对凭据存储的引用。

它具有以下属性:

属性名称属性描述

Storage

凭据存储名称。

Alias

从引用的凭据存储加载的条目的别名。这仅适用于仅包含单个条目的密钥存储,可以省略。

clear-text

明文密码。

clear-password
此元素定义明文密码。
key-pair

此元素目前未由 JBoss EAP 中的任何身份验证机制使用,它定义一个公钥和私钥对。

它可以包含下列子元素:

public-key-pem
此元素目前未由 JBoss EAP 中的任何身份验证机制使用,它定义 PEM 编码的公钥。
private-key-pem
这个元素定义了 PEM 编码的私钥。
certificate

此元素目前未由 JBoss EAP 中的任何身份验证机制使用,它指定了一个证书。

它具有以下属性:

属性名称属性描述

private-key-pem

PEM 编码的私钥。

pem

对应的证书。

bearer-token
此元素定义 bearer 令牌。
oauth2-bearer-token

此元素定义 OAuth 2 bearer 令牌。

它具有以下属性:

属性名称属性描述

token-endpoint-uri

令牌端点的 URI。

它可包含一个以及仅包含以下各个子元素之一:

client-credentials

此元素定义客户端凭据。

它具有以下属性:

属性名称属性描述

client-id

客户端 ID。此属性是必需的。

client-secret

客户端机密。此属性是必需的。

resource-owner-credentials

此元素定义资源所有者凭据。

它具有以下属性:

属性名称属性描述

name

资源名称。此属性是必需的。

pasword

密码.此属性是必需的。

key-stores

此可选元素定义从配置的其他位置引用的密钥存储。

示例: 密钥存储配置

<configuration>
  <authentication-client xmlns="urn:elytron:client:1.2">
    <key-stores>
      <key-store name="...">
        <!-- The following 3 elements specify where to load the keystore from. -->
        <file name="..." />
        <load-from uri="..." />
        <resource name="..." />
        <!-- One of the following to specify the protection parameter to unlock the keystore. -->
        <key-store-clear-password password="..." />
        <key-store-credential>...</key-store-credential>
      </key-store>
    </key-stores>
   ...
  </authentication-client>
</configuration>

key-store

此可选元素定义从配置的其他位置引用的密钥存储。

key-store 具有下列属性:

属性名称属性描述

name

密钥存储的名称。此属性是必需的。

type

密钥存储类型,如 JCEKS。此属性是必需的。

provider

用于加载凭据存储的 java.security.Provider 的名称。此属性是可选的。

wrap-passwords

如果为 true,密码 将被换行。通过采用明确的密码内容,在 UTF-8 中对密码进行编码,并将生成的字节存储为 secret 密钥来存储密码。默认值为 false

它必须正好包含下列元素之一,这些元素定义从中加载密钥存储的位置:

它还必须包含下列元素之一,以指定在初始化密钥存储时要使用的保护参数。

file

此元素指定密钥存储文件的名称。

它具有以下属性:

属性名称属性描述

name

文件的完全限定文件名和名称。

load-from

此元素指定密钥存储文件的 URI。

它具有以下属性:

属性名称属性描述

uri

密钥存储文件的 URI。

resource

此元素指定要从 线程 上下文类加载器加载的资源名称。

它具有以下属性:

属性名称属性描述

name

资源名称。

key-store-clear-password

此元素指定明文密码。

它具有以下属性:

属性名称属性描述

password

明文密码。

key-store-credential

此元素指定对另一个密钥存储的引用,该存储获取一个条目,用作访问此密钥存储的保护参数。

key-store-credential 元素具有以下属性:

属性名称属性描述

key-store-name

密钥存储名称。此属性是必需的。

Alias

从引用的密钥存储加载的条目的别名。这仅适用于仅包含单个条目的密钥存储,可以省略。

它可以包含其中一个,并且只能包含以下子元素之一:

示例: key-store-credential 配置

<key-store-credential key-store-name="..." alias="...">
  <key-store-clear-password password="..." />
  <key-store-credential>...</key-store-credential>
</key-store-credential>

authentication-rules

此元素定义与出站连接匹配的规则,以应用适当的身份验证配置。需要 身份验证配置 时,访问资源的 URI 以及可选的抽象类型授权与配置中定义的规则匹配,以识别应使用哪些 身份验证配置

此元素可以包含一个或多个子 规则 元素。

示例: authentication-rules 配置

<configuration>
  <authentication-client xmlns="urn:elytron:client:1.2">
    ...
    <authentication-rules>
      <rule use-configuration="...">
        ...
      </rule>
     </authentication-rules>
     ...
  </authentication-client>
</configuration>

规则

此元素定义与出站连接匹配的规则,以应用适当的身份验证配置。

它具有以下属性:

属性名称属性描述

使用配置

规则匹配时选择的身份验证配置。

身份验证配置规则匹配独立于 SSL 上下文规则匹配。身份验证规则结构与 SSL 上下文规则结构相同,只是它引用身份验证配置,而 SSL 上下文规则引用 SSL 上下文。

它可以包含下列子元素:

示例:身份验证 的规则 配置

<rule use-configuration="...">
    <!-- At most one of the following two can be defined. -->
    <match-no-user />
    <match-user name="..." />
    <!-- Each of the following can be defined at most once. -->
    <match-protocol name="..." />
    <match-host name="..." />
    <match-path name="..." />
    <match-port number="..." />
    <match-urn name="..." />
    <match-domain name="..." />
    <match-abstract-type name="..." authority="..." />
</rule>

match-no-user
当 URI 中没有 嵌入用户信息时, 此规则将匹配。
match-user
当 URI 中嵌入的 user-info 与此元素中指定的 name 属性匹配时,此规则将匹配。
match-protocol
当 URI 中的协议与此元素 中指定的 协议匹配时,此规则匹配。
match-host
当 URI 中指定的主机名与此元素中指定的 主机名 匹配时,此规则匹配。
match-path
当 URI 中指定的路径与此元素中指定的路径匹配时,此规则 匹配此规则。
match-port
当 URI 中指定的端口号与此元素中指定的端口 匹配时,此规则匹配。这仅与 URI 中指定的编号匹配,而不与从协议派生的任何默认端口号匹配。
match-urn
当 URI 的特定方案部分与此元素中指定的 name 属性匹配时,此规则匹配。
match-domain-name
当 URI 协议是 domain 时,此规则匹配,并且 URI 的特定部分与此元素中指定的 name 属性匹配。
match-abstract-type
当抽象类型与 name 属性匹配并且权威与此元素 中指定的 authority 属性匹配时,此规则将匹配此规则。
身份验证配置

此元素定义将由身份验证规则选择的指定身份验证配置。

它可以包含一个或多个 配置 元素。

示例: 身份验证配置

<configuration>
  <authentication-client xmlns="urn:elytron:client:1.2">
    <authentication-configurations>
      <configuration name="...">
        <!-- Destination Overrides. -->
        <set-host name="..." />
        <set-port number="..." />
        <set-protocol name="..." />
        <!-- At most one of the following two elements. -->
        <set-user-name name="..." />
        <set-anonymous />
        <set-mechanism-realm name="..." />
        <rewrite-user-name-regex pattern="..." replacement="..." />
        <sasl-mechanism-selector selector="..." />
        <set-mechanism-properties>
          <property key="..." value="..." />
        </set-mechanism-properties>
        <credentials>...</credentials>
        <set-authorization-name name="..." />
        <providers>...</providers>
        <!-- At most one of the following two elements. -->
        <use-provider-sasl-factory />
        <use-service-loader-sasl-factory module-name="..." />
      </configuration>
    </authentication-configurations>
  </authentication-client>
</configuration>

配置

此元素定义将由身份验证规则选择的指定身份验证配置。

它可以包含下列子元素:

set-host-name

此元素覆盖经过身份验证的调用的主机名。

它具有以下属性:

属性名称属性描述

name

主机名。

set-port-number

此元素覆盖经过身份验证的调用的端口号。

它具有以下属性:

属性名称属性描述

数字

端口号。

set-protocol

此元素覆盖经过身份验证的调用的协议。

它具有以下属性:

属性名称属性描述

name

协议.

set-user-name

此元素设置用于身份验证的用户名。它不应与 set-anonymous 元素一起使用。

它具有以下属性:

属性名称属性描述

name

用于身份验证的用户名。

set-anonymous
元素用于切换到匿名身份验证。它不应与 set-user-name 元素搭配使用。
set-mechanism-realm-name

此元素指定 SASL 机制将在需要时选择的域的名称。

它具有以下属性:

属性名称属性描述

name

域的名称。

rewrite-user-name-regex

此元素定义正则表达式模式和替换,以重写用于身份验证的用户名。

它具有以下属性:

属性名称属性描述

pattern

正则表达式模式.

replace

用于重写用于身份验证的用户名的替代方法。

sasl-mechanism-selector

此元素使用 org.wildfly.security.sasl.Sasl.SaslMechanismSelector.fromString(string) 方法的语法指定 SASL 机制选择器。

它具有以下属性:

属性名称属性描述

selector

SASL 机制选择器。

有关 sasl-mechanism-selector 所需的语法的更多信息,请参阅 如何为 JBoss EAP 配置服务器 安全性的 sasl-mechanism-selector Grammar

set-mechanism-properties
此元素可以包含一个或多个要传递到身份验证机制的属性 元素
属性

此元素定义要传递到身份验证机制的属性。

它具有以下属性:

属性名称属性描述

key

属性名称。

value

属性值。

credentials

此元素定义一个或多个可在身份验证期间使用的凭据。

它可包含以下一个或多个子元素,它们依赖于凭证存储实现:

这些子元素与 protected -parameter-credentials 元素中包含的子元素相同。有关详细信息和示例配置,请参见 Protection -parameter-credentials 元素。

set-authorization-name

此元素指定在与身份验证身份不同的授权时使用的名称。

它具有以下属性:

属性名称属性描述

name

用于授权的名称。

use-provider-sasl-factory
此元素指定此配置中继承或定义的 java.security.Provider 实例,用于查找可用的 SASL 客户端工厂。此元素不应与 use-service-loader-sasl-factory 元素一起使用。
use-service-loader-sasl-factory

此元素指定用于利用服务加载器发现机制发现 SASL 客户端工厂的模块。如果没有指定模块,则使用载入该配置的类加载程序。此元素不应与 use-provider-sasl-factory 元素一起使用。

它具有以下属性:

属性名称属性描述

module-name

模块的名称。

net-authenticator

此元素不包含任何配置。如果存在,org.wildfly.security.auth.util.ElytronAuthenticator 已注册到 java.net.Authenticator.setDefault(Authenticator)。当 JDK API 用于需要身份验证的 HTTP 调用时,可以使用 Elytron 身份验证客户端配置进行身份验证。

注意

由于 JDK 在第一个调用 JVM 之间缓存身份验证,因此最好仅在不需要不同凭据的单机进程上使用此方法。

ssl-context-rules

此可选元素定义 SSL 上下文规则。需要 ssl-context 时,访问资源的 URI 以及可选的抽象类型和抽象类型授权与配置中定义的规则匹配,以确定应使用哪些 ssl-context

此元素可以包含一个或多个子 规则 元素。

示例: ssl-context-rules 配置

<configuration>
  <authentication-client xmlns="urn:elytron:client:1.2">
    <ssl-context-rules>
      <rule use-ssl-context="...">
        ...
      </rule>
    </ssl-context-rules>
    ...
  </authentication-client>
</configuration>

规则

此元素定义要在 SSL 上下文定义上匹配的规则。

它具有以下属性:

属性名称属性描述

use-ssl-context

规则匹配时选择的 SSL 上下文定义。

SSL 上下文规则匹配独立于身份验证规则匹配。SSL 上下文规则结构与身份验证配置规则结构相同,只是它引用 SSL 上下文,而身份验证规则引用身份验证配置。

它可以包含下列子元素:

示例:SSL 上下文 的规则 配置

<rule use-ssl-context="...">
  <!-- At most one of the following two can be defined. -->
  <match-no-user />
  <match-user name="..." />
  <!-- Each of the following can be defined at most once. -->
  <match-protocol name="..." />
  <match-host name="..." />
  <match-path name="..." />
  <match-port number="..." />
  <match-urn name="..." />
  <match-domain name="..." />
  <match-abstract-type name="..." authority="..." />
</rule>

ssl-contexts

此可选元素定义将由 SSL 上下文规则选择的 SSL 上下文定义。

示例: ssl-contexts 配置

<configuration>
  <authentication-client xmlns="urn:elytron:client:1.2">
    <ssl-contexts>
      <default-ssl-context name="..."/>
      <ssl-context name="...">
        <key-store-ssl-certificate>...</key-store-ssl-certificate>
        <trust-store key-store-name="..." />
        <cipher-suite selector="..." />
        <protocol names="... ..." />
        <provider-name name="..." />
        <providers>...</providers>
        <certificate-revocation-list path="..." maximum-cert-path="..." />
      </ssl-context>
    </ssl-contexts>
  </authentication-client>
</configuration>

default-ssl-context
此元素取 javax.net.ssl.SSLContext.getDefault() 返回的 SSL Context 返回,并为它分配一个名称,以便它能够从 ssl-context-rules 引用。此元素可以重复,这意味着可以使用不同的名称来引用默认 SSL 上下文。
ssl-context

此元素定义用于连接的 SSL 上下文。

它可选择性地包含以下各个子元素之一:

key-store-ssl-certificate

此元素定义对密钥存储中用于此 SSL 上下文的密钥存储条目的引用。

它具有以下属性:

属性名称属性描述

key-store-name

密钥存储名称。此属性是必需的。

Alias

从引用的密钥存储加载的条目的别名。这仅适用于仅包含单个条目的密钥存储,可以省略。

它可包含以下子元素:

此结构与 key-store-credential 配置中使用的结构几乎相同,但此处获取了密钥和证书的条目除外。但是,嵌套 的 key-store-clear-passwordkey-store-credential 元素仍然提供用于解锁条目的保护参数。

示例: key-store-ssl-certificate Configuration

<key-store-ssl-certificate key-store-name="..." alias="...">
  <key-store-clear-password password="..." />
  <key-store-credential>...</key-store-credential>
</key-store-ssl-certificate>

trust-store

此元素是对用于初始化 TrustManager 的密钥存储的引用。

它具有以下属性:

属性名称属性描述

key-store-name

密钥存储名称。此属性是必需的。

cipher-suite

这个元素为启用的密码套件配置过滤器。

它具有以下属性:

属性名称属性描述

selector

用于过滤密码套件的选择器。选择器使用由 org.wildfly.security.ssl.CipherSuiteSelector.fromString(selector) 方法创建的 OpenSSL 样式密码列表字符串的格式。

示例: 使用默认过滤的 cipher-suite 配置

<cipher-suite selector="DEFAULT" />

protocol
此元素定义要支持的协议的空格分隔列表。有关可用协议列表,请参阅如何为 JBoss EAP 配置服务器安全性 https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.3/html-single/how_to_configure_server_security/#client_ssl_context_attributes 的客户端-ssl-context Attributes 表。红帽建议您使用 TLSv1.2
provider-name
确定了可用的提供程序后,仅使用此元素上定义的名称的供应商。
certificate-revocation-list

此元素同时定义了证书撤销列表的路径和认证路径中可能存在的非自签发中间证书的最大数量。通过存在此元素,可以根据证书撤销列表检查同级的证书。

它具有以下属性:

属性名称属性描述

路径

认证列表的路径.此属性是可选的。

maximum-cert-path

认证路径中可能存在的非自签发中间证书的最大数量。此属性是可选的。

供应商

此元素定义 java.security.Provider 实例在需要时如何定位。

它可以包含下列子元素:

由于 authentication-client 的配置部分相互独立,因此可以在以下位置配置此元素:

示例: 供应商 配置的位置

<configuration>
  <authentication-client xmlns="urn:elytron:client:1.2">
    <providers />
    ...
    <credential-stores>
      <credential-store name="...">
        ...
        <providers />
      </credential-store>
    </credential-stores>
    ...
    <authentication-configurations>
      <authentication-configuration name="...">
        ...
        <providers />
      </authentication-configuration>
    </authentication-configurations>
    ...
    <ssl-contexts>
      <ssl-context name="...">
        ...
        <providers />
      </ssl-context>
    </ssl-contexts>
  </authentication-client>
</configuration>

提供程序 配置适用于定义它的元素,以及它的任何子元素,除非被覆盖。子元素中的 提供程序 规范会覆盖其任何父元素中指定的 提供程序。如果没有指定 提供程序 配置,默认行为等同于以下内容,这赋予 Elytron 提供商高于任何全局注册供应商的优先级,但也允许使用全局注册的供应商:

示例: 供应商 配置

<providers>
  <use-service-loader />
  <global />
</providers>

global
此空元素指定使用 java.security.Security.getProviders() 方法调用加载的全局提供程序。
use-service-loader
此空元素指定使用指定模块加载的供应商。如果没有指定模块,则使用加载身份验证客户端的类加载程序。
重要

任何 JBoss EAP 身份验证机制当前未使用的元素

Elytron 客户端配置中的 credentials 元素的以下子元素目前未用于 JBoss EAP 中的任何身份验证机制。它们可以用于您自己的自定义身份验证机制实施,但它们不受支持。

  1. key-pair
  2. public-key-pem
  3. key-store-reference
  4. certificate

19.1.2. 使用 wildfly-config.xml 文件进行 EJB 客户端配置

您可以使用 jboss-ejb-client 元素(位于 urn:jboss:wildfly-client-ejb:3.0 命名空间)来配置 EJB 客户端连接、全局拦截器和使用 wildfly-config.xml 文件调用超时。本节介绍如何使用此元素配置 EJB 客户端。

jboss-ejb-client Elements and Attributes

jboss-ejb-client 元素可以选择性地包含以下三个顶级子元素,及其子元素:

invocation-timeout

此可选元素指定 EJB 调用超时。它具有以下属性:

属性名称属性描述

EJB 握手或方法调用请求/响应周期的超时时间(以秒为单位)。此属性是必需的。

如果方法的执行用时超过超时时间,调用将引发 java.util.concurrent.TimeoutException ;但是,服务器端不会被中断。

global-interceptors
此可选元素指定全局 EJB 客户端拦截器。它可以包含任意数量的 拦截器 元素。
拦截器

此元素用于指定 EJB 客户端拦截器。它具有以下属性:

属性名称属性描述

class

实施 org.jboss.ejb.client.EJBClientInterceptor 接口的类的名称。此属性是必需的。

module

用于加载拦截器类的模块名称。此属性是可选的。

连接
此元素用于指定 EJB 客户端连接。它可以包含任意数量 的连接 元素。
连接

此元素用于指定 EJB 客户端连接。它可以选择包含 拦截器 元素。它具有以下属性:

属性名称属性描述

uri

连接的目标 URI。此属性是必需的。

拦截器
此元素用于指定 EJB 客户端拦截器,可以包含任意数量的 拦截器 元素。
wildfly-config.xml 文件中的 EJB 客户端配置示例

下例中使用 wildfly-config.xml 文件中的 jboss-ejb-client 元素配置 EJB 客户端连接、全局拦截器和调用超时:

<configuration>
...
    <jboss-ejb-client xmlns="urn:jboss:wildfly-client-ejb:3.0">
        <invocation-timeout seconds="10"/>
        <connections>
            <connection uri="remote+http://10.20.30.40:8080"/>
        </connections>
        <global-interceptors>
            <interceptor class="org.jboss.example.ExampleInterceptor"/>
        </global-interceptors>
    </jboss-ejb-client>
...
</configuration>

19.1.3. 使用 wildfly-config.xml 文件配置 HTTP 客户端

以下是如何使用 wildfly-config.xml 文件配置 HTTP 客户端的示例:

<configuration>
...
    <http-client xmlns="urn:wildfly-http-client:1.0">
        <defaults>
            <eagerly-acquire-session value="true" />
            <buffer-pool buffer-size="2000" max-size="10" direct="true" thread-local-size="1" />
        </defaults>
    </http-client>
...
</configuration>
重要

使用 wildfly-config.xml 文件的 HTTP 客户端配置仅作为技术预览提供。技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

如需有关技术预览功能支持范围的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。

19.1.4. 使用 wildfly-config.xml 文件调整客户端配置

您可以使用 endpoint 元素(位于 urn:jboss-remoting:5.0 命名空间中)来配置使用 wildfly-config.xml 文件的远程客户端。本节论述了如何使用这个元素配置远程客户端。

端点元素和属性

endpoint 元素可以选择性地包含以下两个顶级子元素,以及它们的子元素。

它还具有以下属性:

属性名称属性描述

name

端点名称。此属性是可选的。如果没有提供,则端点名称会从系统的主机名派生(如果可能)。

供应商
此可选元素指定远程端点的传输提供程序。它可以包含任意数量 的供应商 元素。
provider

此元素定义远程传输提供程序。它具有以下属性:

属性名称属性描述

scheme

与此提供程序对应的主 URI 方案。此属性是必需的。

Alias

也为此提供程序识别的其他 URI 方案名称的空格分隔列表。此属性是可选的。

module

包含提供程序实施的模块的名称。此属性是可选的。如果没有提供,加载 JBoss 远程的类加载程序将搜索提供商类。

class

实施传输提供程序的类的名称。此属性是可选的。如果未提供,则使用 java.util.ServiceLoader 功能来搜索提供程序类。

连接
此可选元素指定远程端点的连接。它可以包含任意数量 的连接 元素。
连接

此元素定义远程端点的连接。它具有以下属性:

属性名称属性描述

destination

端点的目标 URI。此属性是必需的。

read-timeout

在对应套接字上读取操作的超时时间(以秒为单位)。此属性是可选的;但只有在定义了 heartbeat-interval 时才应提供它。

write-timeout

写入操作的超时时间(以秒为单位)。此属性是可选的;但只有在定义了 heartbeat-interval 时才应提供它。

ip-traffic-class

定义用于此连接流量的数字 IP 流量类。此属性是可选的。

tcp-keepalive

确定是否使用 TCP keepalive 的布尔值设置.此属性是可选的。

heartbeat-interval

检查心跳时要使用的间隔,以毫秒为单位。此属性是可选的。

wildfly-config.xml 文件中删除客户端配置示例

以下是使用 wildfly-config.xml 文件配置远程客户端的示例:

<configuration>
  ...
  <endpoint xmlns="urn:jboss-remoting:5.0">
    <connections>
      <connection destination="remote+http://10.20.30.40:8080" read-timeout="50" write-timeout="50" heartbeat-interval="10000"/>
    </connections>
  </endpoint>
  ...
</configuration>

19.1.5. 使用 wildfly-config.xml 文件进行默认的 XNIO 工作程序配置

您可以使用 worker 元素(位于 urn:xnio:3.5 命名空间中),使用 wildfly-config.xml 文件配置 XNIO 工作程序。本节论述了如何使用这个元素配置 XNIO worker 客户端。

Worker Elements and Attributes

worker 元素可选择性地包含以下顶层子元素,及其子元素:

daemon-threads

这个可选元素指定 worker 和任务线程应该是守护进程线程。此元素没有内容。它具有以下属性:

属性名称属性描述

value

指定 worker 和任务线程是否应是守护进程线程的布尔值。值 true 表示 worker 和任务线程应当是守护进程线程。值 false 表示它们不应是守护进程线程。此属性是必需的。

如果未提供此元素,则假设值为 true

worker-name

此元素定义工作程序的名称。worker 名称会出现在线程转储和 JMX 中。此元素没有内容。它具有以下属性:

属性名称属性描述

value

worker 的名称。此属性是必需的。

pool-size

此可选元素定义 worker 任务线程池的最大大小。此元素没有内容。它具有以下属性:

属性名称属性描述

max-threads

正整数,用于指定应创建的线程的最大数量。此属性是必需的。

task-keepalive

此可选元素在任务线程过期前建立任务线程的 keep-alive 时间。它具有以下属性:

属性名称属性描述

value

一个正整数,指定空闲线程处于活动状态所需的最少秒数。此属性是必需的。

io-threads

此可选元素决定了应当维护多少个 I/O 选择器线程。通常,这个数字应该是可用内核数的倍数的小常数。它具有以下属性:

属性名称属性描述

value

指定 I/O 线程数量的正整数。此属性是必需的。

stack-size

此可选元素为 worker 线程建立所需的最小线程堆栈大小。这个元素只应在非常特殊的情况下定义,其中密度很高。它具有以下属性:

属性名称属性描述

value

指定所请求堆栈大小的正整数,以字节为单位。此属性是必需的。

outbound-bind-addresses
此可选元素指定用于出站连接的绑定地址。每个绑定地址映射均包含一个目标 IP 地址块,以及用于该块内目的地连接的绑定地址和可选端口号。它可以包含任意数量的 bind-address 元素。
bind-address

此可选元素定义单独的绑定地址映射。它具有以下属性:

属性名称属性描述

匹配

要匹配的 IP 地址块,采用 CIDR 表示法。

bind-address

如果地址块匹配,要绑定到的 IP 地址。此属性是必需的。

bind-port

如果地址块匹配,要绑定到的端口号。这个值解译为 0,即它绑定到任何端口。此属性是可选的。

wildfly-config.xml 文件中的 XNIO Worker 配置示例

以下是如何使用 wildfly-config.xml 文件配置默认 XNIO 工作程序的示例。

<configuration>
  ...
  <worker xmlns="urn:xnio:3.5">
    <io-threads value="10"/>
    <task-keepalive value="100"/>
  </worker>
  ...
</configuration>