12.4. Undertow 런타임 구성
12.4.1. 개요
Undertow 런타임은 분리된 끝점을 사용하여 HTTP 서비스 공급자 및 HTTP 소비자가 사용합니다. 런타임의 스레드 풀을 구성할 수 있으며, Undertow 런타임을 통해 HTTP 서비스 공급자에 대한 여러 보안 설정도 설정할 수 있습니다.
12.4.2. Maven 종속성
Apache Maven을 빌드 시스템으로 사용하는 경우 프로젝트의 pom.xml
파일에 다음 종속성을 포함하여 프로젝트에 Undertow 런타임을 추가할 수 있습니다.
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-undertow</artifactId> <version>${cxf-version}</version> </dependency>
12.4.3. 네임스페이스
Undertow 런타임을 구성하는 데 사용되는 요소는 네임스페이스 http://cxf.apache.org/transports/http-undertow/configuration 에 정의되어 있습니다. Undertow 구성 요소를 사용하려면 예 12.14. “Undertow 런타임 구성 네임스페이스” 에 표시된 줄을 끝점 구성 파일의 빈 요소에 추가해야 합니다. 이 예에서 네임스페이스에는 httpu 접두사가 할당됩니다. 또한 구성 요소의 네임스페이스를
xsi:schemaLocation
속성에 추가해야 합니다.
예 12.14. Undertow 런타임 구성 네임스페이스
<beans ... xmlns:httpu="http://cxf.apache.org/transports/http-undertow/configuration" ... xsi:schemaLocation="... http://cxf.apache.org/transports/http-undertow/configuration http://cxf.apache.org/schemas/configuration/http-undertow.xsd ...">
12.4.4. engine-factory 요소
httpu:engine-factory
요소는 애플리케이션에서 사용하는 Undertow 런타임을 구성하는 데 사용되는 루트 요소입니다. 구성 중인 Undertow 인스턴스를 관리하는 버스
의 이름이 값인 단일 필수 속성 버스가 있습니다.
값은 일반적으로 기본 버스
인스턴스의 이름인 cxf
입니다.
http:engine-factory
요소에는 Undertow 런타임 팩토리에서 인스턴스화한 HTTP 포트를 구성하는 데 사용되는 정보가 포함된 세 개의 자식이 있습니다. 어린이는 표 12.7. “Undertow Runtime Factory 구성을 위한 요소” 에 설명되어 있습니다.
요소 | 설명 |
---|---|
| 특정 Undertow 런타임 인스턴스에 대한 구성을 지정합니다. “엔진 요소” 을 참조하십시오. |
HTTP 서비스 공급자를 보호하기 위해 재사용 가능한 속성 세트를 지정합니다. 속성 집합을 참조할 수 있는 고유 식별자를 지정하는 단일 속성 | |
Undertow 인스턴스의 스레드 풀을 제어하기 위해 재사용 가능한 속성 세트를 지정합니다. 속성 집합을 참조할 수 있는 고유 식별자를 지정하는 단일 속성 “스레드 풀 구성” 을 참조하십시오. |
12.4.5. 엔진 요소
httpu:engine
요소는 Undertow 런타임의 특정 인스턴스를 구성하는 데 사용됩니다. 여기에는 두 개의 속성인 host
가 포함되어 있는 undertow 및 port
가 포함된 글로벌 IP 주소를 지정합니다. 이 속성은 Undertow 인스턴스에서 관리하는 포트의 수를 지정합니다.
port
특성에 값을 0
으로 지정할 수 있습니다. 포트
특성이 0
으로 설정된 httpu:engine
요소에 지정된 모든 스레드 속성은 명시적으로 구성되지 않은 모든 Undertow 리스너의 구성으로 사용됩니다.
각 httpu:engine
요소에는 두 개의 하위 항목이 있을 수 있습니다. 하나는 보안 속성을 구성하고 다른 하나는 Undertow 인스턴스의 스레드 풀을 구성하는 데 사용됩니다. 각 유형의 구성에 대해 구성 정보를 직접 제공하거나 상위 httpu:engine-factory
요소에 정의된 구성 속성 집합에 대한 참조를 제공할 수 있습니다.
구성 속성을 제공하는 데 사용되는 하위 요소는 표 12.8. “Undertow 런타임 인스턴스 구성을 위한 요소” 에 설명되어 있습니다.
요소 | 설명 |
---|---|
특정 Undertow 인스턴스에 사용되는 보안을 구성하기 위한 속성 세트를 지정합니다. | |
| |
특정 Undertow 인스턴스에서 사용하는 스레드 풀의 크기를 지정합니다. “스레드 풀 구성” 을 참조하십시오. | |
|
12.4.6. 스레드 풀 구성
다음 중 하나를 통해 Undertow 인스턴스의 스레드 풀 크기를 구성할 수 있습니다.
-
engine-factory
요소에서확인된ThreadingParameters
요소를 사용하여 스레드 풀의 크기를 지정합니다. 그런 다음threadingParametersRef
요소를 사용하여 요소를 참조합니다. -
threadingParameters
요소를 사용하여 스레드 풀의 크기를 직접 지정합니다.
threadingParameters
에는 스레드 풀의 크기를 지정하는 두 개의 속성이 있습니다. 속성은 표 12.9. “Undertow 스레드 풀 구성을 위한 속성” 에서 확인할 수 있습니다.
httpu:identifiedThreadingParameters
요소에는 단일 자 식 스레드 매개 변수
요소가 있습니다.
속성 | 설명 |
---|---|
작업자에 대해 생성할 I/O 스레드 수를 지정합니다. 지정하지 않으면 dafult 값이 선택됩니다. 기본값은 CPU 코어당 하나의 I/O 스레드입니다. | |
요청을 처리하는 데 Undertow 인스턴스에서 사용할 수 있는 최소 스레드 수를 지정합니다. | |
요청을 처리하는 데 Undertow 인스턴스에서 사용할 수 있는 최대 스레드 수를 지정합니다. |
12.4.7. 예제
예 12.15. “Undertow 인스턴스 구성” 포트 번호 9001에서 Undertow 인스턴스를 구성하는 구성 조각을 보여줍니다.
예 12.15. Undertow 인스턴스 구성
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sec="http://cxf.apache.org/configuration/security" xmlns:http="http://cxf.apache.org/transports/http/configuration" xmlns:httpu="http://cxf.apache.org/transports/http-undertow/configuration" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xsi:schemaLocation="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-undertow/configuration http://cxf.apache.org/schemas/configuration/http-undertow.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> ... <httpu:engine-factory bus="cxf"> <httpu:identifiedTLSServerParameters id="secure"> <sec:keyManagers keyPassword="password"> <sec:keyStore type="JKS" password="password" file="certs/cherry.jks"/> </sec:keyManagers> </httpu:identifiedTLSServerParameters> <httpu:engine port="9001"> <httpu:tlsServerParametersRef id="secure" /> <httpu:threadingParameters minThreads="5" maxThreads="15" /> </httpu:engine> </httpu:engine-factory> </beans>
12.4.8. 동시 요청 및 대기열 크기 제한
Undertow 서버 인스턴스에서 처리할 수 있는 최대 동시 연결 요청 수 및 대기열 크기에 대한 제한을 설정하는 Request Limiting Handler를 구성할 수 있습니다. 이 구성의 예는 다음과 같습니다. 예 12.16. “연결 요청 및 대기열 크기 제한”
속성 | 설명 |
---|---|
Undertow 인스턴스에서 처리할 수 있는 최대 동시 요청 수를 지정합니다. 요청 수가 이 제한을 초과하면 요청이 대기됩니다. | |
Undertow 인스턴스에서 처리하기 위해 대기열에 있을 수 있는 총 요청 수를 지정합니다. 요청 수가 이 제한을 초과하면 요청이 거부됩니다. |
예 12.16. 연결 요청 및 대기열 크기 제한
<httpu:engine-factory> <httpu:engine port="8282"> <httpu:handlers> <bean class="org.jboss.fuse.quickstarts.cxf.soap.CxfRequestLimitingHandler"> <property name="maximumConcurrentRequests" value="1" /> <property name="queueSize" value="1"/> </bean> </httpu:handlers> </httpu:engine> </httpu:engine-factory>