第 19 章 配置客户端
19.1. 使用 wildfly-config.xml 文件配置客户端
在发布 7.1 之前,JBoss EAP 客户端库(如 EJB 和命名)采用了不同的配置策略。JBoss EAP 7.1 引入了 wildfly-config.xml
文件,旨在将所有客户端配置统一到一个配置文件中,其方式与服务器配置处理方式类似。
下表介绍了可以使用 JBoss EAP 中的 wildfly-config.xml
文件实现的客户端和配置类型,以及指向每种配置引用模式链接的链接。
客户端配置 | 架构位置/配置信息 |
---|---|
身份验证客户端 |
该架构引用在 模式也发布在 http://www.jboss.org/schema/jbossas/elytron-client-1_2.xsd。 |
如需更多信息,请参阅使用 如需其他信息,请参阅如何为 JBoss EAP 配置身份管理,以使用 Elytron 客户端配置客户端身份验证。 | |
eJB 客户端 |
该架构引用在 模式也发布在 http://www.jboss.org/schema/jbossas/wildfly-client-ejb_3_0.xsd。 |
如需更多信息和 示例配置,请参阅使用 另一个简单示例位于 JBoss EAP 迁移指南的 "将 EJB 客户端迁移到 Elytron "章节中。 | |
HTTP 客户端 |
该架构引用在 模式也发布在 http://www.jboss.org/schema/jbossas/wildfly-http-client_1_0.xsd。 |
注意
如需更多信息,请参阅使用 | |
远程客户端 |
该架构参考在 模式也发布在 http://www.jboss.org/schema/jbossas/jboss-remoting_5_0.xsd。 |
如需更多信息,请参阅使用 | |
XNIO worker 客户端 |
该架构参考在 |
如需更多信息,请参阅使用 |
19.1.1. 使用 wildfly-config.xml 文件的客户端身份验证配置
您可以使用位于 urn:elytron:
元素,以使用 client:1.2 命名空间中的 authentication-
clientwildfly-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
、set-port-number
和set-protocol
元素可以覆盖目的地。 -
可选
的 set-user-name
和set-anonymous
元素是互斥的,可用于设置身份验证的名称或切换到匿名身份验证。 -
接下来是
set-mechanism-realm-name
、rewrite-user-name-regex
、sasl-mechanism-selector
、set-mechanism-properties
、凭证
、set-authorization-name
和提供程序
可选元素。 -
最后两个可选
use-provider-sasl-factory
和use-service-loader-sasl-factory
元素互斥,并定义如何发现 SASL 机制工厂进行身份验证。
-
可选
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
Contextssl-context-rules
引用。此元素可以重复,这意味着可以使用不同的名称来引用默认 SSL 上下文。
ssl-context
此元素定义用于连接的 SSL 上下文。
它可选择性地包含以下各个子元素之一:
key-store-ssl-certificate
此元素定义对密钥存储中用于此 SSL 上下文的密钥存储条目的引用。
它具有以下属性:
属性名称 属性描述 key-store-name
密钥存储名称。此属性是必需的。
Alias
从引用的密钥存储加载的条目的别名。这仅适用于仅包含单个条目的密钥存储,可以省略。
它可包含以下子元素:
此结构与
key-store-credential
配置中使用的结构几乎相同,但此处获取了密钥和证书的条目除外。但是,嵌套的 key-store-clear-password
和key-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 中的任何身份验证机制。它们可以用于您自己的自定义身份验证机制实施,但它们不受支持。
-
key-pair
-
public-key-pem
-
key-store-reference
-
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>