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.17 “Netty Runtime 配置命名空间” 中显示的行添加到端点配置文件的 beans 元素中。另外,您必须将配置元素的命名空间添加到 xsi:schemaLocation 属性中。

例 12.17. Netty Runtime 配置命名空间

<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 运行时的根元素。它有一个必需属性 bus,其值是管理所配置的 Netty 实例的 总线 名称。

注意

该值通常是 cxf,这是默认 总线实例的名称

httpn:engine-factory 元素有三个子项,其中包含用于配置由 Netty 运行时工厂实例化的 HTTP 端口的信息。子项在 表 12.11 “配置 Netty Runtime Factory 的元素” 中进行了描述。

表 12.11. 配置 Netty Runtime Factory 的元素
元素描述

httpn:engine

指定特定 Netty 运行时实例的配置。请参阅 “engine 元素”一节

httpn:identifiedTLSServerParameters

指定用于保护 HTTP 服务提供商的可重复使用的属性集合。它有一个属性 id,用于指定可以引用属性集的唯一标识符。

httpn:identifiedThreadingParameters

指定控制 Netty 实例的线程池的可重复使用的属性集合。它有一个属性 id,用于指定可以引用属性集的唯一标识符。

请参阅 “配置线程池”一节

engine 元素

httpn:engine 元素用于配置 Netty 运行时的特定实例。表 12.12 “配置 Netty Runtime 实例的属性” 显示 httpn:engine 元素支持的属性。

表 12.12. 配置 Netty Runtime 实例的属性
属性描述

port

指定 Netty HTTP 服务器实例使用的端口。您可以为 port 属性指定 0 值。在 engine 元素中指定的线程属性,其 port 属性设置为 0,作为未明确配置的 Netty 侦听的配置。

主机

指定 Netty HTTP 服务器实例使用的侦听地址。该值可以是主机名或 IP 地址。如果没有指定,Netty HTTP 服务器将侦听所有本地地址。

readIdleTime

指定 Netty 连接的最大读取空闲时间。每当底层流上有任何读取操作时,计时器都会被重置。

writeIdleTime

指定 Netty 连接的最大写入闲置时间。每当底层流上有任何写入操作时,计时器都会被重置。

maxChunkContentSize

指定 Netty 连接的最大聚合内容大小。默认值为 10MB。

httpn:engine 元素具有一个子元素,用于配置安全属性和一个子元素,用于配置 Netty 实例的线程池。对于每种配置,您可以直接提供配置信息,或者您可以提供对父 httpn:engine-factory 元素中定义的一组配置属性的引用。

httpn:engine 支持的子元素显示在 表 12.13 “配置 Netty 运行时实例的元素” 中。

表 12.13. 配置 Netty 运行时实例的元素
元素描述

httpn:tlsServerParameters

指定一组属性,用于配置用于特定 Netty 实例的安全性。

httpn:tlsServerParametersRef

指的是由 identifiedTLSServerParameters 元素定义的一组安全属性。id 属性提供引用的 TLSServerParameters 元素的 id。

httpn:threadingParameters

指定特定 Netty 实例使用的线程池的大小。请参阅 “配置线程池”一节

httpn:threadingParametersRef

指的是由 识别ThreadingParameters 元素定义的一组属性。id 属性提供引用的 ThreadingParameters 元素的 id。

httpn:sessionSupport

true 时,启用对 HTTP 会话的支持。默认为 false

httpn:reuseAddress

指定一个布尔值来设置 ReuseAddress TCP socket 选项。默认为 false

配置线程池

您可以通过以下方法配置 Netty 实例线程池的大小:

  • 使用 engine-factory 元素 中标识的ThreadingParameters 元素来指定线程池的大小。然后,您可以使用 threadingParametersRef 元素引用元素。
  • 使用 threadingParameters 元素直接指定线程池的大小。

threadingParameters 元素具有一个属性来指定线程池的大小,如 表 12.14 “配置网络线程池的属性” 所述。

注意

httpn:identifiedThreadingParameters 元素有一个子 threadingParameters 元素。

表 12.14. 配置网络线程池的属性
属性描述

threadPoolSize

指定 Netty 实例可用于处理请求的线程数量。

Example

例 12.18 “配置 Netty 实例” 显示配置各种 Netty 端口的配置片段。

例 12.18. 配置 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>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.