구성 가이드


Red Hat JBoss Enterprise Application Platform 7.0

Red Hat JBoss Enterprise Application Platform 7.0에서 사용할 수 있습니다.

Red Hat Customer Content Services

초록

이 문서에서는 관리자가 Red Hat JBoss Enterprise Application Platform 7.0을 구성할 수 있는 실용적인 가이드를 제공합니다.

1장. 개요

이 가이드의 목적은 JBoss EAP 설정 및 유지 관리와 애플리케이션 및 기타 서비스를 실행하는 데 필요한 많은 구성 작업을 다룹니다. 이 가이드를 사용하여 JBoss EAP를 구성하기 전에 최신 버전의 JBoss EAP가 다운로드 및 설치된 것으로 가정합니다. 설치 지침은 JBoss EAP 설치 가이드를 참조하십시오.

중요

JBoss EAP의 설치 위치는 호스트 시스템마다 다르기 때문에 이 가이드에서는 설치 위치를 EAP_HOME 로 나타냅니다. 관리 작업을 수행할 때 EAP_HOME 대신 JBoss EAP 설치의 실제 위치를 사용해야 합니다.

2장. JBoss EAP 시작 및 중지

2.1. JBoss EAP 시작

JBoss EAP는 독립 실행형 서버 또는 관리형 도메인에서 두 가지 운영 모드 중 하나로 실행되며 Red Hat Enterprise Linux, Windows Server, Oracle Solaris 및 Hewlett-Packard HP- Cryostat의 여러 플랫폼에서 지원됩니다.

JBoss EAP를 시작하는 특정 명령은 기본 플랫폼 및 원하는 운영 모드에 따라 다릅니다.

JBoss EAP를 독립 실행형 서버로 시작
$ EAP_HOME/bin/standalone.sh
Copy to Clipboard Toggle word wrap
참고

Windows Server의 경우 EAP_HOME\bin\standalone.extension 스크립트를 사용합니다.

이 시작 스크립트는 EAP_HOME/bin/standalone.conf 파일(또는 Windows Server의 경우 standalone.conf )을 사용하여 JVM 옵션과 같은 몇 가지 기본 설정을 설정합니다. 이 파일에서 설정을 사용자 지정할 수 있습니다.

JBoss EAP는 기본적으로 standalone.xml 구성 파일을 사용하지만 다른 파일을 사용하여 시작할 수 있습니다. 사용 가능한 독립 실행형 구성 파일 및 사용 방법에 대한 자세한 내용은 독립 실행형 서버 구성 파일 섹션을 참조하십시오.

사용 가능한 모든 시작 스크립트 인수의 전체 목록은 --help 인수를 사용하거나 서버 런타임 인수 섹션을 참조하십시오.

관리형 도메인에서 JBoss EAP 시작

도메인 컨트롤러는 도메인의 서버 그룹에 있는 서버보다 먼저 시작해야 합니다. 이 스크립트를 사용하여 먼저 도메인 컨트롤러를 시작한 다음, 연결된 각 호스트 컨트롤러에 대해 를 사용합니다.

$ EAP_HOME/bin/domain.sh
Copy to Clipboard Toggle word wrap
참고

Windows Server의 경우 EAP_HOME\bin\domain.#159 스크립트를 사용합니다.

이 시작 스크립트는 EAP_HOME/bin/domain.conf 파일(또는 Windows Server의 경우 domain.conf. #159)을 사용하여 JVM 옵션과 같은 몇 가지 기본 설정을 설정합니다. 이 파일에서 설정을 사용자 지정할 수 있습니다.

JBoss EAP는 기본적으로 host.xml 호스트 구성 파일을 사용하지만 다른 이름으로 시작할 수 있습니다. 사용 가능한 관리형 도메인 구성 파일 및 사용 방법에 대한 자세한 내용은 관리 도메인 구성 파일 섹션을 참조하십시오.

관리형 도메인을 설정할 때 추가 인수를 시작 스크립트에 전달해야 합니다. 사용 가능한 모든 시작 스크립트 인수의 전체 목록은 --help 인수를 사용하거나 서버 런타임 인수 섹션을 참조하십시오.

2.2. JBoss EAP 중지

JBoss EAP를 중지하는 방법은 시작 방법에 따라 다릅니다.

JBoss EAP의 상호 작용 인스턴스 중지

JBoss EAP가 시작된 터미널에서 Ctrl+C 를 누릅니다.

JBoss EAP의 배경 정보 인스턴스 중지

관리 CLI를 사용하여 실행 중인 인스턴스에 연결하고 서버를 종료합니다.

  1. 관리 CLI를 시작합니다.

    $ EAP_HOME/bin/jboss-cli.sh --connect
    Copy to Clipboard Toggle word wrap
  2. shutdown 명령을 실행합니다.

    shutdown
    Copy to Clipboard Toggle word wrap
참고

관리형 도메인에서 실행하는 경우 shutdown 명령과 함께 --host 인수를 사용하여 종료할 호스트 이름을 지정해야 합니다.

2.3. 관리 전용 모드에서 JBoss EAP 실행

JBoss EAP는 관리자 전용 모드에서 시작할 수 있습니다. 이를 통해 JBoss EAP는 관리 요청을 실행 및 수락하지만 다른 런타임 서비스를 시작하거나 최종 사용자 요청을 수락하지 않습니다. 관리자 전용 모드는 관리형 도메인뿐만 아니라 독립 실행형 서버 모두에서 사용할 수 있습니다. 관리형 도메인에서 도메인 컨트롤러가 관리자 전용 모드로 시작되면 슬레이브 호스트 컨트롤러에서 들어오는 연결을 허용하지 않습니다.

관리자 전용 모드에서 JBoss EAP 인스턴스를 시작하려면 JBoss EAP 인스턴스를 시작할 때 --admin-only 런타임 스위치를 사용합니다.

참고

표시된 관리 CLI 명령은 JBoss EAP 독립 실행형 서버를 실행한다고 가정합니다. JBoss EAP 관리형 도메인에 대한 관리 CLI 사용에 대한 자세한 내용은 JBoss EAP 관리 CLI 가이드를 참조하십시오.

관리 전용 모드에서 JBoss EAP 시작
$ EAP_HOME/bin/standalone.sh --admin-only
Copy to Clipboard Toggle word wrap
JBoss EAP가 관리자 전용 모드에서 실행 중인지 확인

JBoss EAP 인스턴스가 관리자 전용 모드에서 실행되고 있는지 확인하려면 다음을 수행합니다.

참고

표시된 관리 CLI 명령은 JBoss EAP 독립 실행형 서버를 실행한다고 가정합니다. JBoss EAP 관리형 도메인에 대한 관리 CLI 사용에 대한 자세한 내용은 JBoss EAP 관리 CLI 가이드를 참조하십시오.

:read-attribute(name=running-mode)
Copy to Clipboard Toggle word wrap

JBoss EAP 인스턴스가 관리자 전용 모드에서 실행되는 경우 결과는 다음과 같습니다.

{
  "outcome" => "success",
  "result" => "ADMIN_ONLY"
}
Copy to Clipboard Toggle word wrap

그렇지 않으면 결과는 다음과 같습니다.

{
  "outcome" => "success",
  "result" => "NORMAL"
}
Copy to Clipboard Toggle word wrap
관리 CLI에서 다른 모드에서 다시 시작

다른 런타임 스위치로 JBoss EAP 인스턴스를 중지 및 시작하는 것 외에도 관리 CLI를 사용하여 서버를 다시 로드하고 다른 모드로 시작할 수도 있습니다. JBoss EAP 인스턴스를 다시 로드하여 관리자 전용 모드로 시작하려면 다음을 수행합니다.

참고

표시된 관리 CLI 명령은 JBoss EAP 독립 실행형 서버를 실행한다고 가정합니다. JBoss EAP 관리형 도메인에 대한 관리 CLI 사용에 대한 자세한 내용은 JBoss EAP 관리 CLI 가이드를 참조하십시오.

reload --admin-only=true
Copy to Clipboard Toggle word wrap

JBoss EAP 인스턴스를 다시 로드하여 일반 모드에서 시작하려면 다음을 수행합니다.

reload --admin-only=false
Copy to Clipboard Toggle word wrap
참고

현재 실행 중인 모드와 별도로 /core-service=server-environment:read-attribute(name=initial-running-mode) 명령을 사용하여 초기 실행 모드를 확인할 수도 있습니다. 이 명령은 JBoss EAP가 시작된 실행 모드와 현재 실행 모드가 아닌 :read-attribute(name=running-mode) 와 다릅니다.

2.4. JBoss EAP 일시 중단 및 종료

JBoss EAP는 정상적으로 일시 중지되거나 종료될 수 있습니다. 이렇게 하면 새 요청을 수락하지 않고도 활성 요청이 정상적으로 완료될 수 있습니다. 시간 초과 값은 활성 요청이 완료될 때까지 일시 중지 또는 종료 작업이 대기하는 시간을 지정합니다. 서버가 일시 중지되는 동안 관리 요청이 계속 처리됩니다.

정상 종료는 서버 전체 수준에서 조정되며, 대부분 요청이 서버에 들어오는 진입점에 중점을 둡니다. 다음 하위 시스템은 정상 종료를 지원합니다.

Cryostat
undertow 하위 시스템은 모든 요청이 완료될 때까지 기다립니다.
mod_cluster
modcluster 하위 시스템은 로드 밸런서에 서버가 PRE_SUSPEND 단계에서 일시 중단됨을 알립니다.
EJB
Cryo stat3 하위 시스템은 모든 원격 Clevis 요청 및 Cryostat 메시지 전달이 완료될 때까지 기다립니다. PRE_SUSPEND 단계에서 Cryostat에 대한 전달이 중지됩니다. Clevis 타이머는 일시 중지되며 서버가 다시 시작될 때 누락된 타이머가 활성화됩니다.
EE Concurrency

서버는 모든 활성 작업이 완료될 때까지 기다립니다. 대기 중인 모든 작업은 건너뜁니다. 현재 EE Concurrency에는 지속성이 없으므로 건너뛰는 대기 중인 작업이 손실됩니다.

서버가 일시 중단된 상태이지만 예약된 작업은 예약된 시간에 계속 실행되지만 java.lang.IllegalStateException 이 발생합니다. 서버가 다시 시작되면 예약된 작업이 정상적으로 계속 실행되고 대부분의 경우 작업을 다시 예약할 필요가 없습니다.

batch
서버는 제한 시간 내에 실행 중인 모든 작업을 중지하고 예약된 모든 작업을 지연합니다.
참고

현재 정상 종료는 인바운드 원격 분산 트랜잭션 또는 새 인바운드 JMS 메시지를 거부하지 않습니다. 현재 진행 중인 활동으로 예약된 EE 배치 작업 및 EE 동시성 작업을 진행할 수 있습니다. 그러나 실행 시 현재 오류 시간 초과 창을 전달하는 EE 동시성 작업이 제출되었습니다.

요청은 request-controller 하위 시스템에서 추적합니다. 이 하위 시스템이 없으면 일시 중지 및 재개 기능이 제한되며 서버는 요청을 일시 중지하거나 종료하기 전에 요청이 완료될 때까지 기다리지 않습니다. 그러나 이 기능이 필요하지 않은 경우 성능 향상을 위해 request-controller 하위 시스템을 제거할 수 있습니다.

2.4.1. 서버 일시 중단

JBoss EAP 7에는 서버 작업을 정상적으로 일시 중단하는 일시 중단 모드가 도입되었습니다. 이렇게 하면 모든 활성 요청이 정상적으로 완료되지만 새 요청을 수락하지 않습니다. 서버가 일시 중지되면 종료되거나 실행 중인 상태로 반환되거나 유지보수를 수행하기 위해 일시 중지된 상태로 되돌릴 수 있습니다.

참고

관리 인터페이스는 서버를 일시 중지하여 영향을 받지 않습니다.

관리 콘솔 또는 관리 CLI를 사용하여 서버를 일시 중지하고 다시 시작할 수 있습니다.

Server Suspend State를 확인합니다.

서버 일시 중단 상태는 다음 관리 CLI 명령을 사용하여 볼 수 있습니다. 결과 값은 RUNNING,PRE_SUSPEND,SUSPENDING 또는 SUSPENDED 중 하나입니다.

  • 독립 실행형 서버의 일시 중단 상태를 확인합니다.

    :read-attribute(name=suspend-state)
    Copy to Clipboard Toggle word wrap
  • 관리형 도메인에서 서버의 일시 중단 상태를 확인합니다.

    /host=master/server=server-one:read-attribute(name=suspend-state)
    Copy to Clipboard Toggle word wrap
일시 중단

다음 관리 CLI 명령을 사용하여 활성 요청이 완료될 때까지 대기하는 시간 제한 값(초)을 지정하여 서버를 일시 중지합니다. 기본값은 0 이며 즉시 일시 중지됩니다. 값이 -1 이면 모든 활성 요청이 완료될 때까지 서버가 무기한 대기합니다.

각 예제에서는 일시 중지하기 전에 요청이 완료될 때까지 최대 60초 동안 기다립니다.

  • 독립 실행형 서버를 일시 중지합니다.

    :suspend(timeout=60)
    Copy to Clipboard Toggle word wrap
  • 관리형 도메인의 모든 서버를 일시 중지합니다.

    :suspend-servers(timeout=60)
    Copy to Clipboard Toggle word wrap
  • 관리형 도메인에서 단일 서버를 일시 중지합니다.

    /host=master/server-config=server-one:suspend(timeout=60)
    Copy to Clipboard Toggle word wrap
  • 서버 그룹의 모든 서버를 일시 중지합니다.

    /server-group=main-server-group:suspend-servers(timeout=60)
    Copy to Clipboard Toggle word wrap
resume

서버를 다시 일반 실행 상태로 반환하여 적절한 수준(서버, 서버 그룹, 전체 도메인)에서 resume 명령을 사용하여 새 요청을 수락할 수 있습니다. 예를 들면 다음과 같습니다.

:resume
Copy to Clipboard Toggle word wrap

2.4.2. 서버 종료 중

서버를 중지할 때 적절한 시간 초과 값이 지정된 경우 서버가 정상적으로 종료됩니다. 명령이 실행되면 서버가 일시 중지되고 종료되기 전에 모든 요청이 완료될 때까지 지정된 시간 초과까지 기다립니다.

다음 관리 CLI 명령을 사용하여 서버를 정상적으로 종료합니다. 서버가 활성 요청이 완료될 때까지 대기할 시간 초과 값(초)을 지정합니다. 기본값은 0 이며, 이 값은 서버를 즉시 종료합니다. 값 -1 을 사용하면 서버가 종료되기 전에 모든 활성 요청이 완료될 때까지 무기한 대기합니다.

각 예제에서는 요청을 종료하기 전에 최대 60초 동안 기다립니다.

  • 독립 실행형 서버를 정상적으로 종료합니다.

    :shutdown(timeout=60)
    Copy to Clipboard Toggle word wrap
  • 관리형 도메인의 모든 서버를 정상적으로 중지합니다.

    :stop-servers(timeout=60)
    Copy to Clipboard Toggle word wrap
  • 관리형 도메인에서 정상적으로 단일 서버를 중지합니다.

    /host=master/server-config=server-one:stop(timeout=60)
    Copy to Clipboard Toggle word wrap
  • 서버 그룹의 모든 서버를 정상적으로 중지합니다.

    /server-group=main-server-group:stop-servers(timeout=60)
    Copy to Clipboard Toggle word wrap

2.5. JBoss EAP 시작 및 중지(RPM 설치)

JBoss EAP를 시작하고 중지하는 것은 RPM 설치 시 ZIP 또는 설치 관리자 설치에 비해 다릅니다.

2.5.1. JBoss EAP 시작(RPM 설치)

JBoss EAP의 RPM 설치를 시작하는 명령은 시작하려는 운영 모드(독립 실행형 서버 또는 관리형 도메인)와 실행 중인 Red Hat Enterprise Linux 버전에 따라 다릅니다.

JBoss EAP를 독립 실행형 서버로 시작(RPM 설치)
  • Red Hat Enterprise Linux 6의 경우:

    $ service eap7-standalone start
    Copy to Clipboard Toggle word wrap
  • Red Hat Enterprise Linux 7의 경우:

    $ systemctl start eap7-standalone.service
    Copy to Clipboard Toggle word wrap

이렇게 하면 기본적으로 standalone.xml 구성 파일을 사용하여 JBoss EAP가 시작됩니다. RPM 서비스 구성 파일에서 속성을 설정하여 다른 독립 실행형 서버 구성 파일로 JBoss EAP를 시작할 수 있습니다. 자세한 내용은 아래의 RPM 서비스 속성 구성 섹션을 참조하십시오.

관리 도메인(RPM 설치)에서 JBoss EAP 시작
  • Red Hat Enterprise Linux 6의 경우:

    $ service eap7-domain start
    Copy to Clipboard Toggle word wrap
  • Red Hat Enterprise Linux 7의 경우:

    $ systemctl start eap7-domain.service
    Copy to Clipboard Toggle word wrap

그러면 기본적으로 host.xml 구성 파일을 사용하는 JBoss EAP가 시작됩니다. RPM 서비스 구성 파일에서 속성을 설정하여 다른 관리형 도메인 구성 파일로 JBoss EAP를 시작할 수 있습니다. 자세한 내용은 아래의 RPM 서비스 속성 구성 섹션을 참조하십시오.

RPM 서비스 속성 구성

이 섹션에서는 JBoss EAP 설치를 위한 RPM 서비스 속성 및 기타 시작 옵션을 구성하는 방법을 설명합니다. 수정 전에 구성 파일을 백업하는 것이 좋습니다.

RPM 설치에 사용 가능한 모든 시작 옵션 목록은 RPM 서비스 구성 속성 섹션을 참조하십시오.

중요

Red Hat Enterprise Linux 7의 경우 RPM 서비스 구성 파일은 systemd 를 사용하여 로드되므로 변수 표현식은 확장되지 않습니다.

  • 서버 구성 파일을 지정합니다.

    독립 실행형 서버를 시작할 때 standalone.xml 파일이 기본적으로 사용됩니다. 관리형 도메인에서 실행하는 경우 기본적으로 host.xml 파일이 사용됩니다. 적절한 RPM 구성 파일인 WILDFLY_SERVER_CONFIG 속성을 설정하여 다른 구성 파일로 JBoss EAP를 시작할 수 있습니다(예: Cryostat 7-standalone.conf ).

    WILDFLY_SERVER_CONFIG=standalone-full.xml
    Copy to Clipboard Toggle word wrap
  • 특정 IP 주소에 바인딩합니다.

    기본적으로 JBoss EAP RPM 설치는 0.0.0.0 에 바인딩됩니다. 적절한 RPM 구성 파일 (예: Cryostat 7-standalone.conf )에서 WILDFLY_BIND 속성을 설정하여 JBoss EAP를 특정 IP 주소에 바인딩할 수 있습니다.

    WILDFLY_BIND=192.168.0.1
    Copy to Clipboard Toggle word wrap
    참고

    관리 인터페이스를 특정 IP 주소에 바인딩하려면 다음 예와 같이 JBoss EAP 시작 구성 파일에서 이 인터페이스를 구성할 수 있습니다.

  • JVM 옵션 또는 Java 속성을 설정합니다.

    시작 구성 파일을 편집하여 JBoss EAP 시작 스크립트에 전달할 JVM 옵션 또는 Java 속성을 지정할 수 있습니다. 이 파일은 독립 실행형 서버의 경우 EAP_HOME/bin/standalone.conf 이거나 관리형 도메인의 경우 EAP_HOME/bin/domain.conf 입니다. 다음 예제에서는 힙 크기를 구성하고 JBoss EAP 관리 인터페이스를 IP 주소에 바인딩합니다.

    JAVA_OPTS="$JAVA_OPTS -Xms2048m -Xmx2048m"
    JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=192.168.0.1"
    Copy to Clipboard Toggle word wrap
    참고

    필요한 경우 JBoss EAP 바인딩 주소는 WILDFLY_BIND 속성을 사용하여 구성해야 하며 여기에서 jboss.bind.address 표준 속성을 사용하지 않아야 합니다.

참고

속성의 이름이 RPM 서비스 구성 파일(예: /etc/sysconfig/eap7-standalone)과 JBoss EAP 시작 구성 파일(예: EAP_HOME/bin/standalone.conf)에 있는 경우 우선 순위를 사용하는 값은 JBoss EAP 시작 구성 파일의 값입니다. 이러한 속성 중 하나는 JAVA_HOME 입니다.

2.5.2. JBoss EAP 중지(RPM 설치)

JBoss EAP의 RPM 설치를 중지하는 명령은 시작된 운영 모드(독립 실행형 서버 또는 관리형 도메인)와 실행 중인 Red Hat Enterprise Linux 버전에 따라 다릅니다.

JBoss EAP를 독립 실행형 서버로 중지(RPM 설치)
  • Red Hat Enterprise Linux 6의 경우:

    $ service eap7-standalone stop
    Copy to Clipboard Toggle word wrap
  • Red Hat Enterprise Linux 7의 경우:

    $ systemctl stop eap7-standalone.service
    Copy to Clipboard Toggle word wrap
관리 도메인(RPM 설치)에서 JBoss EAP 중지
  • Red Hat Enterprise Linux 6의 경우:

    $ service eap7-domain stop
    Copy to Clipboard Toggle word wrap
  • Red Hat Enterprise Linux 7의 경우:

    $ systemctl stop eap7-domain.service
    Copy to Clipboard Toggle word wrap

RPM 설치에 사용 가능한 모든 시작 옵션 목록은 RPM 서비스 구성 파일 섹션을 참조하십시오.

2.6. PowerShell 스크립트(Windows Server)

중요

이 기능은 기술 프리뷰로만 제공됩니다. 프로덕션 환경에서의 사용은 지원되지 않으며 향후 변경 사항이 발생할 수 있습니다. 기술 프리뷰 기능에 대한 지원 범위에 대한 정보는 Red Hat 고객 포털에서 기술 프리뷰 기능 지원 범위를 참조하십시오.

JBoss EAP에는 대부분의 JBoss EAP 관리 스크립트에 해당하는 PowerShell 스크립트가 포함되어 있습니다. 여기에는 Microsoft Windows Server에서 JBoss EAP를 시작하는 PowerShell 스크립트가 포함됩니다.

JBoss EAP PowerShell 스크립트는 테스트된 버전의 Windows Server에서 실행되는 PowerShell 버전 2 이상에서 작동하도록 설계되었습니다.

JBoss EAP PowerShell 스크립트는 EAP_HOME\bin 에 있으며 JBoss EAP 배치 스크립트와 거의 동일한 방식으로 사용됩니다.

예를 들어 standalone-full.xml 구성 파일을 사용하여 독립 실행형 JBoss EAP 서버를 시작하려면 다음 PowerShell 명령을 사용합니다.

.\standalone.ps1 "-c=standalone-full.xml"
Copy to Clipboard Toggle word wrap
참고

JBoss EAP PowerShell 스크립트의 인수는 따옴표로 묶어야 합니다.

3장. JBoss EAP Management

JBoss EAP는 독립 실행형 서버 또는 관리형 도메인당 하나의 구성 파일을 사용하여 단순화된 구성을 사용합니다. 독립 실행형 서버에 대한 기본 구성은 EAP_HOME/standalone/configuration/standalone.xml 파일에 저장되고 관리형 도메인의 기본 구성은 EAP_HOME/domain/configuration/domain.xml 파일에 저장됩니다. 또한 호스트 컨트롤러의 기본 구성은 EAP_HOME/domain/configuration/host.xml 파일에 저장됩니다.

JBoss EAP는 명령줄 관리 CLI, 웹 기반 관리 콘솔, Java API 또는 HTTP API를 사용하여 구성할 수 있습니다. 이러한 관리 인터페이스를 사용하여 변경한 내용은 자동으로 유지되며 관리 API에서 XML 구성 파일을 덮어씁니다. 관리 CLI 및 관리 콘솔은 기본 방법이며 XML 구성 파일을 수동으로 편집하지 않는 것이 좋습니다.

3.1. Cryostats, Extensions 및 Profiles 정보

JBoss EAP 기능의 다양한 측면이 다른 하위 시스템에서 구성됩니다. 예를 들어 애플리케이션 및 서버 로깅은 로깅 하위 시스템에서 구성됩니다.

하위 시스템은 특정 확장에 대한 구성 옵션을 제공합니다. 확장 은 서버의 핵심 기능을 확장하는 모듈입니다. 확장 기능은 배포에 필요한 대로 로드되며 더 이상 필요하지 않으면 언로드됩니다.

하위 시스템 구성 컬렉션은 서버의 요구 사항을 충족하도록 구성된 프로필 을 구성합니다. 독립 실행형 서버에는 이름이 지정되지 않은 단일 프로필이 있습니다. 관리형 도메인은 도메인의 서버 그룹에서 사용할 여러 프로필을 정의할 수 있습니다.

사용 가능한 하위 시스템에 대한 자세한 내용은 JBoss EAP Cryostat 개요 를 참조하십시오.

관리 콘솔 또는 관리 CLI 사용

관리 콘솔과 관리 CLI는 모두 유효하며 JBoss EAP 인스턴스의 구성을 업데이트하는 방법이 지원됩니다. 둘 중 하나를 결정하는 것은 선호의 문제입니다. 그래픽 웹 기반 인터페이스를 사용하려는 사용자는 관리 콘솔을 사용해야 합니다. 명령줄 인터페이스를 선호하는 사용자는 관리 CLI를 사용해야 합니다.

3.2. 관리 사용자

기본 JBoss EAP 구성은 사용자가 인증 없이도 로컬 호스트의 관리 CLI에 액세스할 수 있도록 로컬 인증을 제공합니다.

그러나 관리 CLI에 원격으로 액세스하거나 로컬 호스트에서 트래픽이 시작된 경우에도 원격 액세스로 간주되는 관리 콘솔을 사용하려면 관리 사용자를 추가해야 합니다. 관리 사용자를 추가하기 전에 관리 콘솔에 액세스하려고 하면 오류 메시지가 표시됩니다.

그래픽 설치 프로그램을 사용하여 JBoss EAP를 설치하는 경우 설치 프로세스 중에 관리 사용자가 생성됩니다.

이 가이드에서는 기본 제공 인증을 위해 새 사용자를 속성 파일에 추가하는 유틸리티인 add-user 스크립트를 사용하여 JBoss EAP에 대한 간단한 사용자 관리에 대해 설명합니다. LDAP 또는 RBAC(역할 기반 액세스 제어)와 같은 고급 인증 및 권한 부여 옵션은 JBoss EAP 보안 아키텍처 가이드의 코어 관리 인증 섹션을 참조하십시오.

3.2.1. 관리 사용자 추가

  1. add-user 유틸리티 스크립트를 실행하고 프롬프트를 따릅니다.

    $ EAP_HOME/bin/add-user.sh
    Copy to Clipboard Toggle word wrap
    참고

    Windows Server의 경우 EAP_HOME\bin\add-user.extension 스크립트를 사용합니다.

  2. Enter를 눌러 기본 옵션 a 를 선택하여 관리 사용자를 추가합니다.

    이 사용자는 ManagementRealm 에 추가되며 관리 콘솔 또는 관리 CLI를 사용하여 관리 작업을 수행할 수 있는 권한이 부여됩니다. 다른 선택 사항(b)은 애플리케이션에 사용되며 특정 권한을 제공하지 않는 ApplicationRealm 에 사용자를 추가합니다.

  3. 원하는 사용자 이름과 암호를 입력합니다. 암호를 확인하라는 메시지가 표시됩니다.

    기본적으로 JBoss EAP는 약한 암호를 허용하지만 경고를 발행합니다. 이 기본 동작 변경에 대한 자세한 내용은 사용자 유틸리티 암호 제한 설정을 참조하십시오.

  4. 사용자가 속한 쉼표로 구분된 그룹 목록을 입력합니다. 사용자가 그룹에 속하지 않도록 하려면 Enter 키를 눌러 비워 둡니다.
  5. 정보를 검토하고 yes 를 입력하여 확인합니다.
  6. 이 사용자가 원격 JBoss EAP 서버 인스턴스를 나타내는지 확인합니다. 기본 관리 사용자의 경우 no 를 입력합니다.

    ManagementRealm 에 추가해야 하는 한 유형의 사용자는 JBoss EAP의 다른 인스턴스를 나타내는 사용자이며 클러스터의 멤버로 가입하려면 인증할 수 있어야 합니다. 이 경우 yes 에 이 프롬프트에 응답하고 사용자 암호를 나타내는 해시된 시크릿 값이 제공됩니다. 이 값은 다른 구성 파일에 추가해야 합니다.

사용자는 매개 변수를 add-user 스크립트에 전달하여 비대화형으로 생성할 수도 있습니다. 이 접근 방식은 로그 및 기록 파일에 암호가 표시되므로 공유 시스템에서 권장되지 않습니다. 자세한 내용은 사용자 추가 유틸리티 실행을 참조하십시오.

3.2.2. 사용자 추가 유틸리티 실행 non- interactively

명령줄에서 인수를 전달하여 add-user 스크립트를 비대화형으로 실행할 수 있습니다. 최소한 사용자 이름과 암호를 제공해야 합니다.

주의

이 접근 방식은 로그 및 기록 파일에 암호가 표시되므로 공유 시스템에서 권장되지 않습니다.

여러 그룹에 대한 사용자 생성

다음 명령은 guestmgmtgroup 그룹과 함께 관리 사용자(mgmtuser1)를 추가합니다.

$ EAP_HOME/bin/add-user.sh -u 'mgmtuser1' -p 'password1!' -g 'guest,mgmtgroup'
Copy to Clipboard Toggle word wrap
대체 속성 파일 지정

기본적으로 add-user 스크립트를 사용하여 생성된 사용자 및 그룹 정보는 서버 구성 디렉터리에 있는 속성 파일에 저장됩니다.

사용자 정보는 다음 속성 파일에 저장됩니다.

  • EAP_HOME/standalone/configuration/mgmt-users.properties
  • EAP_HOME/domain/configuration/mgmt-users.properties

그룹 정보는 다음 속성 파일에 저장됩니다.

  • EAP_HOME/standalone/configuration/mgmt-groups.properties
  • EAP_HOME/domain/configuration/mgmt-groups.properties

이러한 기본 디렉터리 및 속성 파일 이름은 재정의할 수 있습니다. 다음 명령은 사용자 속성 파일에 다른 이름과 위치를 지정하는 새 사용자를 추가합니다.

$ EAP_HOME/bin/add-user.sh -u 'mgmtuser2' -p 'password1!' -sc '/path/to/standaloneconfig/' -dc '/path/to/domainconfig/' -up 'newname.properties'
Copy to Clipboard Toggle word wrap

새 사용자가 이제 /path/to/standaloneconfig/newname.properties/path/to/domainconfig/newname.properties 에 있는 사용자 속성 파일에 추가되었습니다. 이러한 파일이 이미 존재하거나 오류가 표시됩니다.

사용 가능한 모든 추가 사용자 인수의 전체 목록은 --help 인수를 사용하거나 Add-User 유틸리티 인수 섹션을 참조하십시오.

3.2.3. 사용자 유틸리티 암호 제한 설정

add-user 유틸리티 스크립트의 암호 제한 사항은 EAP_HOME/bin/add-user.properties 파일을 사용하여 구성할 수 있습니다.

기본적으로 JBoss EAP는 약한 암호를 허용하지만 경고를 발행합니다. 지정된 최소 요구 사항을 충족하지 않는 암호를 거부하려면 password.restriction 속성을 REJECT 로 설정합니다.

EAP_HOME/bin/add-user.properties 파일에서 구성할 수 있는 추가 암호 요구 사항:

  • 최소 길이
  • 최소 알파벳 문자
  • 최소 숫자
  • 최소 기호
  • 금지된 암호 목록(예: admin)
  • 사용자 이름과 일치하는 암호를 허용할지 여부

3.3. 관리 인터페이스

3.3.1. 관리 CLI

관리 CLI(명령줄 인터페이스)는 JBoss EAP용 명령줄 관리 툴입니다.

관리 CLI를 사용하여 서버를 시작 및 중지하고, 애플리케이션을 배포 및 배포 취소, 시스템 설정을 구성하고, 기타 관리 작업을 수행합니다. 배치 모드에서 작업을 수행하여 여러 작업을 그룹으로 실행할 수 있습니다.

ls,cdpwd 와 같은 많은 일반적인 터미널 명령을 사용할 수 있습니다. 관리 CLI는 탭 완료도 지원합니다.

명령 및 작업, 구문 및 일괄 처리 모드로 실행되는 관리 CLI 사용에 대한 자세한 내용은 JBoss EAP 관리 CLI 가이드를 참조하십시오.

관리 CLI 시작
$ EAP_HOME/bin/jboss-cli.sh
Copy to Clipboard Toggle word wrap
참고

Windows Server의 경우 EAP_HOME\bin\jboss-cli.extension 스크립트를 사용합니다.

실행 중인 서버에 연결
connect
Copy to Clipboard Toggle word wrap

또는 관리 CLI를 시작하고 EAP_HOME/bin/jboss-cli.sh --connect 명령을 사용하여 한 단계로 연결할 수 있습니다.

도움말 표시

일반적인 도움말에는 다음 명령을 사용합니다.

help
Copy to Clipboard Toggle word wrap

특정 명령에 대한 도움말을 보려면 다음 명령을 사용합니다.

deploy --help
Copy to Clipboard Toggle word wrap
관리 CLI 종료
quit
Copy to Clipboard Toggle word wrap
시스템 설정 보기

다음 명령은 read-attribute 작업을 사용하여 예제 데이터 소스가 활성화되었는지 여부를 표시합니다.

/subsystem=datasources/data-source=ExampleDS:read-attribute(name=enabled)
{
    "outcome" => "success",
    "result" => true
}
Copy to Clipboard Toggle word wrap

관리형 도메인에서 실행하는 경우 명령 앞에 /profile=PROFILE_NAME 을 추가하여 업데이트할 프로필을 지정해야 합니다.

/profile=default/subsystem=datasources/data-source=ExampleDS:read-attribute(name=enabled)
Copy to Clipboard Toggle word wrap
시스템 설정 업데이트

다음 명령은 write-attribute 작업을 사용하여 예제 데이터 소스를 비활성화합니다.

/subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled,value=false)
Copy to Clipboard Toggle word wrap
서버 시작

관리 CLI는 관리형 도메인에서 실행할 때 서버를 시작하고 중지하는 데 사용할 수도 있습니다.

/host=HOST_NAME/server-config=server-one:start
Copy to Clipboard Toggle word wrap

3.3.2. 관리 콘솔

관리 콘솔은 JBoss EAP를 위한 웹 기반 관리 툴입니다.

관리 콘솔을 사용하여 서버를 시작 및 중지하고, 애플리케이션을 배포 및 배포 취소하고, 시스템 설정을 조정하며, 서버 구성을 영구적으로 수정합니다. 또한 관리 콘솔에는 현재 사용자가 수행한 변경 사항을 사용하여 서버 인스턴스를 다시 시작하거나 다시 로드해야 하는 경우 실시간 알림을 사용하여 관리 작업을 수행할 수 있습니다.

관리형 도메인에서 동일한 도메인의 서버 인스턴스 및 서버 그룹을 도메인 컨트롤러의 관리 콘솔에서 중앙에서 관리할 수 있습니다.

기본 관리 포트를 사용하여 로컬 호스트에서 실행되는 JBoss EAP 인스턴스의 경우 http://localhost:9990/console/App.html 의 웹 브라우저를 통해 관리 콘솔에 액세스할 수 있습니다. 관리 콘솔에 액세스할 수 있는 권한이 있는 사용자로 인증해야 합니다.

관리 콘솔은 JBoss EAP 독립 실행형 서버 또는 관리형 도메인을 탐색하고 관리하기 위한 다음 탭을 제공합니다.

몇 가지 일반적인 구성 및 관리 작업을 수행하는 방법을 알아봅니다. JBoss EAP 관리 콘솔에 익숙해지려면 둘러보기를 확인하십시오.
배포
배포를 추가, 제거 및 활성화합니다. 관리형 도메인에서 서버 그룹에 배포를 할당합니다.
설정
웹 서비스, 메시징 또는 고가용성과 같은 기능을 제공하는 사용 가능한 하위 시스템을 구성합니다. 관리형 도메인에서 다른 하위 시스템 구성이 포함된 프로필을 관리합니다.
런타임
서버 상태, JVM 사용량 및 서버 로그와 같은 런타임 정보를 확인합니다. 관리형 도메인에서 호스트, 서버 그룹 및 서버를 관리합니다.
액세스 제어
역할 기반 액세스 제어를 사용할 때 사용자 및 그룹에 역할을 할당합니다.
패치
JBoss EAP 인스턴스에 패치를 적용합니다.
참고

업데이트된 관리 콘솔 둘러보기를 보려면 관리 콘솔 홈 페이지에서 Go a tour 링크를 클릭합니다.

양식 필드에 대한 세부 정보를 보려면 Need Help? 링크를 클릭합니다.

수행한 구성 작업의 메시지 기록을 보려면 관리 콘솔의 오른쪽 상단에 있는 Messages 링크를 클릭합니다.

3.3.2.1. 사용/사용 가능한 관리 콘솔

/core-service=management/management-interface=http-interface 리소스의 console-enabled 부울 속성을 설정하여 관리 콘솔을 활성화하거나 비활성화할 수 있습니다. 도메인 모드의 마스터 호스트의 경우 /host=master/core-service=management/management-interface=http-interface.

예를 들어 다음을 활성화하려면 다음을 수행합니다.

/core-service=management/management-interface=http-interface:write-attribute(name=console-enabled,value=true)
Copy to Clipboard Toggle word wrap

예를 들어 다음을 비활성화하려면 다음을 수행합니다.

/core-service=management/management-interface=http-interface:write-attribute(name=console-enabled,value=false)
Copy to Clipboard Toggle word wrap
3.3.2.2. 관리 콘솔의 언어 변경

기본적으로 관리 콘솔의 언어 설정은 영어입니다. 대신 다음 언어 중 하나를 사용하도록 선택할 수 있습니다.

  • 독일어(de)
  • 중국어 간체 (zh-Hans)
  • 브라질 포르투갈어 (pt-BR)
  • 프랑스어(fr)
  • 스페인어 (es)
  • 일본어 (ja)
관리 콘솔의 언어를 변경하려면 다음을 수행합니다.
  1. 관리 콘솔에 로그인합니다.
  2. 관리 콘솔의 오른쪽 아래에 있는 설정 링크를 클릭합니다.
  3. Locale 선택 상자에서 필요한 언어를 선택합니다.
  4. 저장을 선택합니다. 확인 상자에 애플리케이션을 다시 로드해야 함을 알려줍니다.
  5. 확인을 클릭합니다. 선택한 로케일을 사용하도록 웹 브라우저를 자동으로 새로 고칩니다.

3.4. 관리 API

3.4.1. HTTP API

HTTP API 끝점은 HTTP 프로토콜을 사용하여 JBoss EAP 관리 계층과 통합하는 관리 클라이언트의 진입점입니다.

HTTP API는 JBoss EAP 관리 콘솔에서 사용되지만 다른 클라이언트에도 통합 기능을 제공합니다. 기본적으로 HTTP API는 http://HOST_NAME:9990/management 에서 액세스할 수 있습니다. 이 URL에는 API에 노출된 원시 속성 및 값이 표시됩니다.

리소스 읽기

HTTP POST 메서드를 사용하여 다른 작업을 읽거나 쓰거나 수행할 수 있지만 GET 요청을 사용하여 일부 읽기 작업을 수행할 수 있습니다. HTTP GET 메서드는 다음 URL 형식을 사용합니다.

http://HOST_NAME:9990/management/PATH_TO_RESOURCE?operation=OPERATION&PARAMETER=VALUE
Copy to Clipboard Toggle word wrap

교체 가능한 모든 값을 요청에 적합한 값으로 교체해야 합니다. 다음 값은 OPERATION 대체 값에 사용할 수 있는 옵션입니다.

Expand
현재의설명

attribute

read-attribute 작업을 수행합니다.

operation-description

read-operation-description 작업을 수행합니다.

operation-names

read-operation-names 작업을 수행합니다.

resource

read-resource 작업을 수행합니다.

resource-description

read-resource-description 작업을 수행합니다.

snapshots

list-snapshots 작업을 수행합니다.

다음 예제 URL은 HTTP API를 사용하여 읽기 작업을 수행하는 방법을 보여줍니다.

예: 리소스에 대한 모든 속성 및 값 읽기

http://HOST_NAME:9990/management/subsystem/undertow/server/default-server/http-listener/default
Copy to Clipboard Toggle word wrap

기본 HTTP 리스너의 모든 속성 및 해당 값이 표시됩니다.

참고

기본 작업은 read-resource 입니다.

예: 리소스에 대한 속성 값 읽기

http://HOST_NAME:9990/management/subsystem/datasources/data-source/ExampleDS?operation=attribute&name=enabled
Copy to Clipboard Toggle word wrap

이렇게 하면 ExampleDS 데이터 소스에 대해 활성화된 속성 값이 표시됩니다.

리소스 업데이트

HTTP POST 메서드를 사용하여 구성 값을 업데이트하거나 HTTP API를 사용하여 다른 작업을 수행할 수 있습니다. 이러한 작업에 대한 인증을 제공해야 합니다.

다음 예제에서는 HTTP API를 사용하여 리소스를 업데이트하는 방법을 보여줍니다.

예: 리소스에 대한 속성 값 업데이트

$ curl --digest http://HOST_NAME:9990/management --header "Content-Type: application/json" -u USERNAME:PASSWORD -d '{"operation":"write-attribute", "address":["subsystem","datasources","data-source","ExampleDS"], "name":"enabled", "value":"false", "json.pretty":"1"}'
Copy to Clipboard Toggle word wrap

이렇게 하면 ExampleDS 데이터 소스에 대한 enabled 속성 값이 false 로 업데이트됩니다.

예: 서버에 작업 발행

$ curl --digest http://localhost:9990/management --header "Content-Type: application/json" -u USERNAME:PASSWORD -d '{"operation":"reload"}'
Copy to Clipboard Toggle word wrap

이렇게 하면 서버가 다시 로드됩니다.

HTTP API를 사용하여 JBoss EAP에 애플리케이션을 배포하는 방법에 대한 자세한 내용은 HTTP API를 사용하여 애플리케이션 배포를 참조하십시오.

3.4.2. 네이티브 API

네이티브 API 엔드포인트는 기본 프로토콜을 사용하여 JBoss EAP 관리 계층과 통합하는 관리 클라이언트의 진입점입니다. 기본 API는 JBoss EAP 관리 CLI에서 사용하지만 다른 클라이언트에도 통합 기능을 제공합니다.

다음 Java 코드는 네이티브 API를 사용하여 Java 코드에서 관리 작업을 실행하는 방법의 예를 보여줍니다.

참고

EAP_HOME/bin/client/jboss-cli-client.jar 파일에 있는 필수 JBoss EAP 라이브러리를 클래스 경로에 추가해야 합니다.

예: 네이티브 API를 사용하여 리소스 읽기

// Create the management client
ModelControllerClient client = ModelControllerClient.Factory.create("localhost", 9990);

// Create the operation request
ModelNode op = new ModelNode();

// Set the operation
op.get("operation").set("read-resource");

// Set the address
ModelNode address = op.get("address");
address.add("subsystem", "undertow");
address.add("server", "default-server");
address.add("http-listener", "default");

// Execute the operation and manipulate the result
ModelNode returnVal = client.execute(op);
System.out.println("Outcome: " + returnVal.get("outcome").toString());
System.out.println("Result: " + returnVal.get("result").toString());

// Close the client
client.close();
Copy to Clipboard Toggle word wrap

3.5. 구성 데이터

3.5.1. 독립 실행형 서버 구성 파일

독립 실행형 구성 파일은 EAP_HOME/standalone/configuration/ 디렉터리에 있습니다. 사전 정의된 4개의 프로필(기본값,ha,full -ha) 각각에 대해 별도의 파일이 있습니다.

Expand
표 3.1. 독립 실행형 구성 파일
구성 파일목적

standalone.xml

이 독립 실행형 구성 파일은 독립 실행형 서버를 시작할 때 사용되는 기본 구성입니다. 하위 시스템, 네트워킹, 배포, 소켓 바인딩 및 기타 구성 가능한 세부 정보를 포함하여 서버에 대한 모든 정보를 포함합니다. 메시징 또는 고가용성에 필요한 하위 시스템을 제공하지 않습니다.

standalone-ha.xml

이 독립 실행형 구성 파일에는 모든 기본 하위 시스템이 포함되어 있으며 고가용성을 위해 modclusterjgroups 하위 시스템을 추가합니다. 메시징에 필요한 하위 시스템을 제공하지 않습니다.

standalone-full.xml

이 독립 실행형 구성 파일에는 모든 기본 하위 시스템이 포함되어 있으며 messaging-activemqiiop-openjdk 하위 시스템을 추가합니다. 고가용성에 필요한 하위 시스템을 제공하지 않습니다.

standalone-full-ha.xml

이 독립 실행형 구성 파일에는 메시징 및 고가용성을 위한 항목을 포함하여 가능한 모든 하위 시스템에 대한 지원이 포함됩니다.

기본적으로 JBoss EAP를 독립 실행형 서버로 시작하면 standalone.xml 파일이 사용됩니다. 다른 구성으로 JBoss EAP를 시작하려면 --server-config 인수를 사용합니다. 예를 들면 다음과 같습니다.

$ EAP_HOME/bin/standalone.sh --server-config=standalone-full.xml
Copy to Clipboard Toggle word wrap

3.5.2. 관리형 도메인 구성 파일

관리형 도메인 구성 파일은 EAP_HOME/domain/configuration/ 디렉터리에 있습니다.

Expand
표 3.2. 관리형 도메인 구성 파일
구성 파일목적

domain.xml

관리형 도메인의 기본 구성 파일입니다. 도메인 마스터만 이 파일을 읽습니다. 이 파일에는 모든 프로필(기본값, ha, full ,full -ha )에 대한 구성이 포함되어 있습니다.

host.xml

이 파일에는 네트워크 인터페이스, 소켓 바인딩, 호스트 이름 및 기타 호스트별 세부 정보와 같이 관리형 도메인의 물리적 호스트와 관련된 구성 세부 정보가 포함됩니다. host.xml 파일에는 아래에 설명된 host-master.xmlhost-slave.xml 의 모든 기능이 포함되어 있습니다.

host-master.xml

이 파일에는 마스터 도메인 컨트롤러로 서버를 실행하는 데 필요한 구성 세부 정보만 포함됩니다.

host-slave.xml

이 파일에는 서버를 관리형 도메인 호스트 컨트롤러로 실행하는 데 필요한 구성 세부 정보만 포함됩니다.

기본적으로 관리형 도메인에서 JBoss EAP를 시작하면 host.xml 파일이 사용됩니다. 다른 구성으로 JBoss EAP를 시작하려면 --host-config 인수를 사용합니다. 예를 들면 다음과 같습니다.

$ EAP_HOME/bin/domain.sh --host-config=host-master.xml
Copy to Clipboard Toggle word wrap

3.5.3. 구성 데이터 백업

나중에 JBoss EAP 서버 구성을 복원하려면 다음 위치의 항목을 백업해야 합니다.

  • EAP_HOME/standalone/configuration/

    • 전체 디렉터리를 백업하여 독립 실행형 서버의 사용자 데이터, 서버 구성 및 로깅 설정을 저장합니다.
  • EAP_HOME/domain/configuration/

    • 사용자 및 프로필 데이터, 도메인 및 호스트 구성, 관리형 도메인의 로깅 설정을 저장하기 위해 전체 디렉터리를 백업합니다.
  • EAP_HOME/modules/

    • 사용자 지정 모듈을 백업합니다.
  • EAP_HOME/welcome-content/

    • 사용자 정의 시작 콘텐츠를 백업합니다.
  • EAP_HOME/bin/

    • 사용자 지정 스크립트 또는 시작 구성 파일을 백업합니다.

3.5.4. 구성 파일 스냅샷

서버의 유지 관리 및 관리를 지원하기 위해 JBoss EAP는 시작 시 원본 구성 파일의 타임스탬프가 지정된 버전을 생성합니다. 관리 작업에서 변경한 추가 구성 변경으로 인해 원래 파일이 자동으로 백업되고 참조 및 롤백을 위해 인스턴스의 작업 사본이 보존됩니다. 또한 현재 서버 구성의 지정 시간 복사본인 구성 스냅샷을 가져올 수 있습니다. 이러한 스냅샷은 관리자가 저장하고 로드할 수 있습니다.

다음 예제에서는 standalone.xml 파일을 사용하지만 domain.xmlhost.xml 파일에 동일한 프로세스가 적용됩니다.

스냅샷 가져오기

관리 CLI를 사용하여 현재 구성의 스냅샷을 만듭니다.

:take-snapshot
{
    "outcome" => "success",
    "result" => "EAP_HOME/standalone/configuration/standalone_xml_history/snapshot/20151022-133109702standalone.xml"
}
Copy to Clipboard Toggle word wrap
스냅샷 목록

관리 CLI를 사용하여 수행된 모든 스냅샷을 나열합니다.

:list-snapshots
{
    "outcome" => "success",
    "result" => {
        "directory" => "EAP_HOME/standalone/configuration/standalone_xml_history/snapshot",
        "names" => [
            "20151022-133109702standalone.xml",
            "20151022-132715958standalone.xml"
        ]
    }
}
Copy to Clipboard Toggle word wrap
스냅샷 삭제

관리 CLI를 사용하여 스냅샷을 삭제합니다.

:delete-snapshot(name=20151022-133109702standalone.xml)
Copy to Clipboard Toggle word wrap
스냅샷으로 서버 시작

서버는 스냅샷 또는 자동으로 저장된 구성 버전을 사용하여 시작할 수 있습니다.

  1. EAP_HOME/standalone/configuration/standalone_xml_history 디렉터리로 이동하여 로드할 스냅샷 또는 저장된 구성 파일을 식별합니다.
  2. 서버를 시작하고 선택한 구성 파일을 가리킵니다. 구성 디렉터리인 EAP_HOME/standalone/configuration/ 에 상대적인 파일 경로를 전달합니다.

    $ EAP_HOME/bin/standalone.sh --server-config=standalone_xml_history/snapshot/20151022-133109702standalone.xml
    Copy to Clipboard Toggle word wrap
참고

관리형 도메인에서 실행하는 경우 대신 --host-config 인수를 사용하여 구성 파일을 지정합니다.

3.5.5. 구성 변경 사항 보기

JBoss EAP 7은 실행 중인 시스템의 구성 변경 사항을 추적하는 기능을 제공합니다. 이를 통해 관리자는 다른 권한 있는 사용자가 변경한 구성 변경 내역을 볼 수 있습니다.

중요

변경 사항은 메모리에 저장되며 서버를 다시 시작하면 유지되지 않습니다. 이 기능은 관리 감사 로깅 을 대체하지 않습니다.

구성 변경 사항을 추적할 수 있도록 하려면 다음 관리 CLI 명령을 사용합니다. max-history 특성을 사용하여 저장할 항목 수를 지정할 수 있습니다.

/core-service=management/service=configuration-changes:add(max-history=10)
Copy to Clipboard Toggle word wrap

최신 구성 변경 목록을 보려면 다음 관리 CLI 명령을 사용합니다.

/core-service=management/service=configuration-changes:list-changes
Copy to Clipboard Toggle word wrap

날짜, 원본, 결과 및 작업 세부 정보와 함께 각 구성 변경 사항이 나열됩니다. 예를 들어 list-changes 명령의 아래 출력은 가장 최근 표시된 구성 변경 사항을 표시합니다.

{
    "outcome" => "success",
    "result" => [
        {
            "operation-date" => "2016-02-12T18:37:00.354Z",
            "access-mechanism" => "NATIVE",
            "remote-address" => "127.0.0.1/127.0.0.1",
            "outcome" => "success",
            "operations" => [{
                "address" => [],
                "operation" => "reload",
                "operation-headers" => {
                    "caller-type" => "user",
                    "access-mechanism" => "NATIVE"
                }
            }]
        },
        {
            "operation-date" => "2016-02-12T18:34:16.859Z",
            "access-mechanism" => "NATIVE",
            "remote-address" => "127.0.0.1/127.0.0.1",
            "outcome" => "success",
            "operations" => [{
                "address" => [
                    ("subsystem" => "datasources"),
                    ("data-source" => "ExampleDS")
                ],
                "operation" => "write-attribute",
                "name" => "enabled",
                "value" => false,
                "operation-headers" => {
                    "caller-type" => "user",
                    "access-mechanism" => "NATIVE"
                }
            }]
        },
        {
            "operation-date" => "2016-02-12T18:24:11.670Z",
            "access-mechanism" => "HTTP",
            "remote-address" => "127.0.0.1/127.0.0.1",
            "outcome" => "success",
            "operations" => [{
                "operation" => "remove",
                "address" => [
                    ("subsystem" => "messaging-activemq"),
                    ("server" => "default"),
                    ("jms-queue" => "ExpiryQueue")
                ],
                "operation-headers" => {"access-mechanism" => "HTTP"}
            }]
        }
    ]
}
Copy to Clipboard Toggle word wrap

이 예에서는 구성에 영향을 준 세 가지 작업의 세부 정보를 나열합니다.

  • 관리 CLI에서 서버를 다시 로드합니다.
  • 관리 CLI에서 ExampleDS 데이터 소스 비활성화.
  • 관리 콘솔에서 ExpiryQueue 대기열 제거.

3.5.6. 속성 교체

JBoss EAP를 사용하면 표현식을 사용하여 구성에서 리터럴 값 대신 대체 가능한 속성을 정의할 수 있습니다. 표현식은 ${PARAMETER:DEFAULT_VALUE} 형식을 사용합니다. 지정된 매개변수가 설정되면 매개 변수의 값이 사용됩니다. 그렇지 않으면 제공된 기본값이 사용됩니다.

표현식을 해결하기 위해 지원되는 소스는 시스템 속성, 환경 변수, 자격 증명 모음입니다. 배포 전용 배포의 경우 소스는 배포 아카이브의 META-INF/jboss.properties 파일에 나열된 속성일 수 있습니다. 하위 배포를 지원하는 배포 유형의 경우 속성 파일이 외부 배포에 있는 경우 모든 하위 배포에서 해상도의 범위가 지정됩니다(예: EAR). 속성 파일이 하위 배포에 있는 경우 해상도의 범위는 해당 하위 배포로만 지정됩니다.

standalone.xml 구성 파일의 아래 예제에서는 jboss.bind.address 매개변수를 설정하지 않으면 공용 인터페이스에 대한 inet-address127.0.0.1 로 설정합니다.

<interface name="public">
    <inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
Copy to Clipboard Toggle word wrap

다음 명령을 사용하여 EAP를 독립 실행형 서버로 시작할 때 jboss.bind.address 매개변수를 설정할 수 있습니다.

$ EAP_HOME/bin/standalone.sh -Djboss.bind.address=IP_ADDRESS
Copy to Clipboard Toggle word wrap
중첩된 표현식

식을 중첩하여 고정 값 대신 고급 식을 사용할 수 있습니다.Expressions can be nested, which allows for more advanced use of expressions in place of fixed values. 중첩 표현식의 형식은 일반 표현식과 유사하지만 하나의 표현식은 다른 표현식에 포함됩니다. 예를 들면 다음과 같습니다.

${SYSTEM_VALUE_1${SYSTEM_VALUE_2}}
Copy to Clipboard Toggle word wrap

중첩 표현식은 재귀적으로 평가되므로 내부 표현식이 먼저 평가되고 외부 표현식이 평가됩니다. 표현식은 재귀적일 수도 있습니다. 여기서 표현식은 다른 표현식으로 확인되고, 이 표현식은 확인됩니다. 관리 CLI 명령을 제외하고 표현식이 허용되는 모든 곳에 중첩 표현식이 허용됩니다.

중첩된 표현식을 사용할 수 있는 예는 데이터 소스 정의에 사용된 암호가 마스킹된 경우입니다. 데이터 소스에 대한 구성에는 다음 행이 있을 수 있습니다.

<password>${VAULT::ds_ExampleDS::password::1}</password>
Copy to Clipboard Toggle word wrap

ds_ExampleDS 의 값은 중첩된 표현식을 사용하여 시스템 속성(datasource_name)으로 대체될 수 있습니다. 데이터 소스에 대한 구성에는 다음 행이 있을 수 있습니다.

<password>${VAULT::${datasource_name}::password::1}</password>
Copy to Clipboard Toggle word wrap

JBoss EAP는 먼저 ${datasource_name} 표현식을 계산한 다음 이 표현식을 더 큰 표현식에 입력하고 결과 표현식을 평가합니다. 이 구성의 장점은 데이터 소스의 이름이 고정된 구성에서 추상화된다는 것입니다.

설명자 기반 속성 교체

데이터 소스 연결 매개 변수와 같은 애플리케이션 구성은 일반적으로 개발, 테스트 및 프로덕션 환경에 따라 다릅니다. Java EE 사양에 이러한 구성을 외부화하는 방법이 포함되어 있지 않으므로 이러한 분산은 빌드 시스템 스크립트에 의해 수용되는 경우가 있습니다. JBoss EAP를 사용하면 설명자 기반 속성 교체를 사용하여 외부에서 구성을 관리할 수 있습니다.

설명자 기반 속성 교체는 설명자를 기반으로 속성을 대체하여 애플리케이션 및 빌드 체인에서 환경에 대한 가정을 제거할 수 있습니다. 환경별 구성은 주석 또는 빌드 시스템 스크립트가 아닌 배포 설명자에 지정할 수 있습니다. 파일 또는 명령줄의 매개 변수로 구성을 제공할 수 있습니다.

ee 하위 시스템에는 속성 교체가 적용되는지 여부를 제어하는 여러 플래그가 있습니다.

JBoss별 설명자 교체는 jboss-descriptor-property-replacement 플래그로 제어 되며 기본적으로 활성화됩니다. 활성화하면 다음 배포 설명자에서 속성을 교체할 수 있습니다.

  • jboss-ejb3.xml
  • jboss-app.xml
  • jboss-web.xml
  • *-jms.xml
  • *-ds.xml

다음 관리 CLI 명령을 사용하여 JBoss 관련 설명자에서 속성 교체를 활성화하거나 비활성화할 수 있습니다.

/subsystem=ee:write-attribute(name="jboss-descriptor-property-replacement",value=VALUE)
Copy to Clipboard Toggle word wrap

spec-descriptor-property-replacement 플래그에서 제어하는 Java EE 설명자 교체는 기본적으로 비활성화되어 있습니다. 활성화하면 다음 배포 설명자에서 속성을 교체할 수 있습니다.

  • ejb-jar.xml
  • persistence.xml
  • application.xml
  • web.xml

다음 관리 CLI 명령을 사용하여 Java EE 설명자에서 속성 교체를 활성화하거나 비활성화할 수 있습니다.

/subsystem=ee:write-attribute(name="spec-descriptor-property-replacement",value=VALUE)
Copy to Clipboard Toggle word wrap

3.6. 파일 시스템 경로

JBoss EAP는 파일 시스템 경로에 논리 이름을 사용합니다. 그런 다음 구성의 다른 영역은 논리 이름을 사용하여 경로를 참조할 수 있으므로 각 인스턴스에 절대 경로를 사용할 필요가 없으며 특정 호스트 구성이 범용 논리 이름으로 확인되도록 할 수 있습니다.

예를 들어 기본 로깅 하위 시스템 구성은 jboss.server.log.dir 을 서버 로그 디렉터리의 논리 이름으로 선언합니다.

예: 서버 로그 디렉터리에 대한 상대 경로 예

<file relative-to="jboss.server.log.dir" path="server.log"/>
Copy to Clipboard Toggle word wrap

JBoss EAP는 사용자가 구성 파일에서 구성할 필요 없이 다양한 표준 경로를 자동으로 제공합니다.

Expand
표 3.3. 표준 경로
속성설명

java.ext.dirs

Java 개발 키트 확장 디렉터리 경로.

java.home

Java 설치 디렉터리

jboss.controller.temp.dir

독립 실행형 서버 및 관리형 도메인에 대한 공통 별칭입니다. 임시 파일 스토리지에 사용할 디렉터리입니다. 관리형 도메인의 jboss.domain.temp.dir 과 동일하고 독립 실행형 서버의 jboss.server.temp.dir 과 동일합니다.

jboss.domain.base.dir

도메인 콘텐츠의 기본 디렉터리입니다.

jboss.domain.config.dir

도메인 구성이 포함된 디렉터리입니다.

jboss.domain.data.dir

도메인이 영구 데이터 파일 스토리지에 사용할 디렉터리입니다.

jboss.domain.log.dir

도메인이 영구 로그 파일 스토리지에 사용할 디렉터리입니다.

jboss.domain.temp.dir

도메인이 임시 파일 스토리지에 사용할 디렉터리입니다.

jboss.domain.deployment.dir

도메인이 배포된 콘텐츠를 저장하는 데 사용할 디렉터리입니다.

jboss.domain.servers.dir

도메인에서 관리형 도메인 인스턴스의 출력을 저장하는 데 사용할 디렉터리입니다.

jboss.home.dir

JBoss EAP 배포의 루트 디렉터리입니다.

jboss.server.base.dir

독립 실행형 서버 콘텐츠의 기본 디렉터리입니다.

jboss.server.config.dir

독립 실행형 서버 구성이 포함된 디렉터리입니다.

jboss.server.data.dir

독립 실행형 서버가 영구 데이터 파일 스토리지에 사용할 디렉터리입니다.

jboss.server.log.dir

독립 실행형 서버가 로그 파일 스토리지에 사용할 디렉터리입니다.

jboss.server.temp.dir

독립 실행형 서버가 임시 파일 스토리지에 사용할 디렉터리입니다.

jboss.server.deploy.dir

독립 실행형 서버가 배포된 콘텐츠를 저장하는 데 사용할 디렉터리입니다.

user.dir

사용자의 현재 작업 디렉터리입니다.

user.home

사용자 홈 디렉터리입니다.

표준 경로를 재정의하거나 사용자 정의 경로를 추가할 수 있습니다.

3.6.1. 표준 경로 덮어쓰기

jboss.server.* 또는 jboss.domain.* 로 시작하는 표준 경로의 기본 위치를 덮어쓸 수 있습니다. 이 작업은 다음 두 가지 방법 중 하나로 수행할 수 있습니다.

  • 서버를 시작할 때 명령줄 인수를 전달합니다. 예를 들면 다음과 같습니다.

    $ EAP_HOME/bin/standalone.sh -Djboss.server.log.dir=/var/log
    Copy to Clipboard Toggle word wrap
  • 서버 구성 파일(standalone.conf 또는 domain.conf)에서 JAVA_OPTS 변수를 수정합니다. 예를 들면 다음과 같습니다.

    JAVA_OPTS="$JAVA_OPTS -Djboss.server.log.dir=/var/log"
    Copy to Clipboard Toggle word wrap
관리형 도메인의 표준 경로 덮어쓰기

이 예에서 목표는 도메인 파일을 /opt/jboss_eap/domain_data 디렉터리에 저장하고 각 최상위 디렉터리에 사용자 지정 이름을 지정하는 것입니다. 기본 디렉터리 그룹화인 by-server 가 사용됩니다.

  • 로그 파일은 all_logs 하위 디렉터리에 저장됩니다.
  • 데이터 파일은 all_data 하위 디렉터리에 저장됩니다.
  • 임시 파일은 all_temp 하위 디렉터리에 저장됩니다.
  • 서버의 파일은 all_servers 하위 디렉터리에 저장됩니다.

이 구성을 달성하기 위해 JBoss EAP를 시작할 때 여러 시스템 속성을 덮어씁니다.

$ EAP_HOME/bin/domain.sh -Djboss.domain.temp.dir=/opt/jboss_eap/domain_data/all_temp -Djboss.domain.log.dir=/opt/jboss_eap/domain_data/all_logs -Djboss.domain.data.dir=/opt/jboss_eap/domain_data/all_data -Djboss.domain.servers.dir=/opt/jboss_eap/domain_data/all_servers
Copy to Clipboard Toggle word wrap

결과 경로 구조는 다음과 같습니다.

/opt/jboss_eap/domain_data/
               ├── all_data
               ├── all_logs
               ├── all_servers
               │   ├── server-one
               │   │   ├── data
               │   │   ├── log
               │   │   └── tmp
               │   └── server-two
               │       ├── data
               │       ├── log
               │       └── tmp
               └── all_temp
Copy to Clipboard Toggle word wrap

3.6.2. 사용자 정의 경로 추가

관리 CLI 또는 관리 콘솔을 사용하여 사용자 정의 파일 시스템 경로를 추가할 수 있습니다.

  • 관리 CLI에서 다음 관리 CLI 명령을 사용하여 새 경로를 추가할 수 있습니다.

    /path=my.custom.path:add(path=/my/custom/path)
    Copy to Clipboard Toggle word wrap
  • 관리 콘솔에서 구성 탭으로 이동한 후 경로를 선택하여 파일 시스템 경로를 구성할 수 있습니다. 여기에서 경로를 추가, 수정 및 제거할 수 있습니다.

그런 다음 구성에서 이 사용자 지정 경로를 사용할 수 있습니다. 예를 들어 아래 로그 처리기는 상대 경로에 사용자 지정 경로를 사용합니다.

<subsystem xmlns="urn:jboss:domain:logging:3.0">
  ...
  <periodic-rotating-file-handler name="FILE" autoflush="true">
    <formatter>
      <named-formatter name="PATTERN"/>
    </formatter>
    <file relative-to="my.custom.path" path="server.log"/>
    <suffix value=".yyyy-MM-dd"/>
    <append value="true"/>
  </periodic-rotating-file-handler>
  ...
</subsystem>
Copy to Clipboard Toggle word wrap

3.6.3. 디렉터리 그룹화

관리형 도메인에서 각 서버의 파일은 EAP_HOME/domain 디렉터리에 저장됩니다. 호스트 컨트롤러의 directory-grouping 특성을 사용하여 서버의 하위 디렉터리를 구성하는 방법을 지정할 수 있습니다. 디렉터리는 서버 또는 유형 별로 그룹화할 수 있습니다. 기본적으로 디렉터리는 서버로 그룹화됩니다.

서버별 디렉터리 그룹화

기본적으로 디렉터리는 서버로 그룹화됩니다. 관리가 서버 중심적인 경우 이 구성을 사용하는 것이 좋습니다. 예를 들어 서버 인스턴스별로 백업 및 로그 파일 처리를 구성할 수 있습니다.

ZIP 설치 방법을 사용하여 JBoss EAP를 설치하는 경우 기본 디렉터리 구조(서버별로 그룹화)는 다음과 같습니다.

EAP_HOME/domain
         └─ servers
            ├── server-one
            │   ├── data
            │   ├── tmp
            │   └── log
            └── server-two
                ├── data
                ├── tmp
                └── log
Copy to Clipboard Toggle word wrap

서버별 도메인 디렉터리를 그룹화하려면 다음 관리 CLI 명령을 입력합니다.

/host=HOST_NAME:write-attribute(name=directory-grouping,value=by-server)
Copy to Clipboard Toggle word wrap

그러면 호스트 컨트롤러의 host.xml 구성 파일이 업데이트됩니다.

<servers directory-grouping="by-server">
  <server name="server-one" group="main-server-group"/>
  <server name="server-two" group="main-server-group" auto-start="true">
    <socket-bindings port-offset="150"/>
  </server>
</servers>
Copy to Clipboard Toggle word wrap
유형별 디렉터리 그룹화

디렉토리를 서버별로 그룹화하는 대신 파일 유형별로 그룹화할 수 있습니다. 관리가 파일 유형 중심적인 경우 이 구성을 사용하는 것이 좋습니다. 예를 들어 데이터 파일만 쉽게 백업할 수 있습니다.

ZIP 설치 방법을 사용하여 JBoss EAP를 설치하고 도메인의 파일이 유형별로 그룹화되는 경우 디렉토리 구조는 다음과 같습니다.

EAP_HOME/domain
         ├── data
         │   └── servers
         │       ├── server-one
         │       └── server-two
         ├── log
         │   └── servers
         │       ├── server-one
         │       └── server-two
         └── tmp
             └── servers
                 ├── server-one
                 └── server-two
Copy to Clipboard Toggle word wrap

도메인 디렉터리를 유형별로 그룹화하려면 다음 관리 CLI 명령을 입력합니다.

/host=HOST_NAME:write-attribute(name=directory-grouping,value=by-type)
Copy to Clipboard Toggle word wrap

그러면 호스트 컨트롤러의 host.xml 구성 파일이 업데이트됩니다.

<servers directory-grouping="by-type">
  <server name="server-one" group="main-server-group"/>
  <server name="server-two" group="main-server-group" auto-start="true">
    <socket-bindings port-offset="150"/>
  </server>
</servers>
Copy to Clipboard Toggle word wrap

3.7. 시스템 속성

Java 시스템 속성을 사용하여 많은 JBoss EAP 옵션을 구성하고 애플리케이션 서버 내에서 사용할 이름-값 쌍을 설정할 수 있습니다.

시스템 속성을 사용하여 JBoss EAP 구성의 기본값을 덮어쓸 수 있습니다. 예를 들어 공용 인터페이스 바인딩 주소에 대한 다음 XML 구성은 jboss.bind.address 시스템 속성으로 설정할 수 있지만 시스템 속성이 제공되지 않으면 기본적으로 127.0.0.1 로 설정됩니다.

<inet-address value="${jboss.bind.address:127.0.0.1}"/>
Copy to Clipboard Toggle word wrap

JBoss EAP에서 시스템 속성을 설정할 수 있는 방법은 다음과 같습니다.

JBoss EAP 관리형 도메인을 사용하는 경우 시스템 속성을 전체 도메인, 특정 서버 그룹, 특정 호스트 및 모든 서버 인스턴스 또는 하나의 특정 서버 인스턴스에 적용할 수 있습니다. 대부분의 다른 JBoss EAP 도메인 설정과 마찬가지로 보다 구체적인 수준에서 설정된 시스템 속성은 더 추상적인 수준을 재정의합니다. 자세한 내용은 도메인 관리 장을 참조하십시오.

시작 스크립트에 시스템 속성 전달

-D 인수를 사용하여 JBoss EAP 시작 스크립트에 시스템 속성을 전달할 수 있습니다. 예를 들면 다음과 같습니다.

$ EAP_HOME/bin/standalone.sh -Djboss.bind.address=192.168.1.2
Copy to Clipboard Toggle word wrap

시스템 속성을 설정하는 이 방법은 JBoss EAP를 시작하기 전에 설정해야 하는 JBoss EAP 옵션에 특히 유용합니다.

관리 CLI를 사용하여 시스템 속성 설정

관리 CLI를 사용하여 다음 구문을 사용하여 시스템 속성을 설정할 수 있습니다.

/system-property=PROPERTY_NAME:add(value=PROPERTY_VALUE)
Copy to Clipboard Toggle word wrap

예를 들면 다음과 같습니다.

/system-property=jboss.bind.address:add(value=192.168.1.2)
Copy to Clipboard Toggle word wrap

관리 CLI를 사용하여 시스템 속성을 설정할 때 위 예제를 포함한 일부 JBoss EAP 옵션은 다음 서버를 다시 시작한 후에만 적용됩니다.

관리형 도메인의 경우 위의 예제에서는 전체 도메인에 대한 시스템 속성을 구성하지만 도메인 구성의 보다 구체적인 수준에서 시스템 속성을 설정하거나 재정의할 수도 있습니다.

관리 콘솔을 사용하여 시스템 속성 설정
  • 독립 실행형 JBoss EAP 서버의 경우 구성 탭의 관리 콘솔에서 시스템 속성을 구성할 수 있습니다. 시스템 속성 을 선택하고 보기 버튼을 클릭합니다.
  • 관리형 도메인의 경우:

    • 도메인 수준 시스템 속성은 구성 탭에서 설정할 수 있습니다. 시스템 속성 을 선택하고 보기 버튼을 클릭합니다.
    • 서버 그룹 및 서버 수준 시스템 속성은 런타임 탭에서 설정할 수 있습니다. 구성할 서버 그룹 또는 서버를 선택하고 서버 그룹 또는 서버 이름 옆에 있는 보기 버튼을 클릭하고 시스템 속성 탭을 선택합니다.
    • 호스트 수준 시스템 속성은 런타임 탭에서 설정할 수 있습니다. 구성할 호스트를 선택한 다음 호스트 이름 옆에 있는 드롭다운 메뉴를 사용하여 속성을 선택합니다.
JAVA_OPTS를 사용하여 시스템 속성 설정

시스템 속성은 JAVA_OPTS 환경 변수를 사용하여 구성할 수도 있습니다. JAVA_OPTS 를 수정하는 방법은 여러 가지가 있지만 JBoss EAP 프로세스에서 사용하는 JAVA_OPTS 를 설정하기 위한 구성 파일을 JBoss EAP에서 제공합니다.

독립 실행형 서버의 경우 이 파일은 EAP_HOME/bin/standalone.conf 이거나 관리형 도메인의 경우 EAP_HOME/bin/domain.conf 입니다. Microsoft Windows 시스템의 경우 이러한 파일에는 .extension 확장자가 있습니다.

참고

RPM 설치의 경우 RPM 서비스 구성 파일은 JAVA_OPTS 를 수정하여 시스템 속성을 구성하는 기본 위치입니다. 자세한 내용은 RPM 서비스 속성 구성 을 참조하십시오.

관련 구성 파일에서 JAVA_OPTS 에 시스템 속성 정의를 추가합니다. 아래 예제에서는 Red Hat Enterprise Linux 시스템에서 바인딩 주소 설정을 보여줍니다.

  • standalone.conf 의 경우 파일 끝에 JAVA_OPTS 시스템 속성 정의를 추가합니다. 예를 들면 다음과 같습니다.

    ...
    # Set the bind address
    JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=192.168.1.2"
    Copy to Clipboard Toggle word wrap
  • domain.conf 의 경우 프로세스 컨트롤러JAVA_OPTS 설정 전에 JAVA_OPTS 를 설정해야 합니다. 예를 들면 다음과 같습니다.

    ...
    # Set the bind address
    JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=192.168.1.2"
    
    # The ProcessController process uses its own set of java options
    if [ "x$PROCESS_CONTROLLER_JAVA_OPTS" = "x" ]; then
    ...
    Copy to Clipboard Toggle word wrap

3.8. 관리 감사 로깅

관리 API를 사용하는 관리 콘솔, 관리 CLI 또는 사용자 지정 애플리케이션을 사용하여 수행한 모든 작업을 로깅하는 관리 인터페이스에 대한 감사 로깅을 활성화할 수 있습니다. 감사 로그 항목은 JSON 형식으로 저장됩니다. 기본적으로 감사 로깅은 비활성화되어 있습니다.

파일 또는 syslog 서버로 출력하도록 감사 로깅을 구성할 수 있습니다.

참고

JBoss EAP에 인증된 세션이 없으므로 로그인 및 로그아웃 이벤트를 감사할 수 없습니다. 대신 사용자에서 작업을 수신하면 감사 메시지가 기록됩니다.

독립 실행형 서버 감사 로깅

기본적으로 비활성화되지만 기본 감사 로깅 구성은 파일에 씁니다.

<audit-log>
    <formatters>
        <json-formatter name="json-formatter"/>
    </formatters>
    <handlers>
        <file-handler name="file" formatter="json-formatter" path="audit-log.log" relative-to="jboss.server.data.dir"/>
    </handlers>
    <logger log-boot="true" log-read-only="false" enabled="false">
        <handlers>
            <handler name="file"/>
        </handlers>
    </logger>
</audit-log>
Copy to Clipboard Toggle word wrap

이 구성은 다음 관리 CLI 명령을 사용하여 읽을 수 있습니다.

/core-service=management/access=audit:read-resource(recursive=true)
Copy to Clipboard Toggle word wrap

독립 실행형 서버의 감사 로깅 활성화를 참조하십시오. ???

관리형 도메인 감사 로깅

기본적으로 비활성화되지만 기본 감사 로깅 구성은 각 호스트와 각 서버에 대해 파일을 작성합니다.

<audit-log>
    <formatters>
        <json-formatter name="json-formatter"/>
    </formatters>
    <handlers>
        <file-handler name="host-file" formatter="json-formatter" relative-to="jboss.domain.data.dir" path="audit-log.log"/>
        <file-handler name="server-file" formatter="json-formatter" relative-to="jboss.server.data.dir" path="audit-log.log"/>
    </handlers>
    <logger log-boot="true" log-read-only="false" enabled="false">
        <handlers>
            <handler name="host-file"/>
        </handlers>
    </logger>
    <server-logger log-boot="true" log-read-only="false" enabled="false">
        <handlers>
            <handler name="server-file"/>
        </handlers>
    </server-logger>
</audit-log>
Copy to Clipboard Toggle word wrap

이 구성은 다음 관리 CLI 명령을 사용하여 읽을 수 있습니다.

/host=HOST_NAME/core-service=management/access=audit:read-resource(recursive=true)
Copy to Clipboard Toggle word wrap

관리형 도메인에 대한 감사 로깅 활성화를 참조하십시오. ???

3.8.1. 관리 감사 로깅 활성화

감사 로깅은 기본적으로 비활성화되어 있지만 JBoss EAP는 감사 로깅을 위해 파일 처리기로 사전 구성됩니다. 감사 로깅을 활성화하는 관리 CLI 명령은 독립 실행형 서버로 실행 중인지 아니면 관리형 도메인에서 실행 중인지에 따라 달라집니다. 파일 처리기 속성에 대한 관리 감사 로깅 특성을 참조하십시오.

syslog 감사 로깅을 설정하려면 관리 감사 로깅 설정을 Syslog 서버로 설정합니다.

독립 실행형 서버 감사 로깅 활성화

다음 명령을 사용하여 감사 로깅을 활성화할 수 있습니다.

/core-service=management/access=audit/logger=audit-log:write-attribute(name=enabled,value=true)
Copy to Clipboard Toggle word wrap

기본적으로 감사 로그는 EAP_HOME/standalone/data/audit-log.log 에 작성합니다.

관리형 도메인 감사 로깅 활성화

관리형 도메인의 기본 감사 로깅 구성은 각 호스트와 각 서버에 대한 감사 로그를 작성하도록 사전 구성됩니다.

다음 명령을 사용하여 각 호스트에 대한 감사 로깅을 활성화할 수 있습니다.

/host=HOST_NAME/core-service=management/access=audit/logger=audit-log:write-attribute(name=enabled,value=true)
Copy to Clipboard Toggle word wrap

기본적으로 감사 로그를 EAP_HOME/domain/data/audit-log.log 에 작성합니다.

다음 명령을 사용하여 각 서버의 감사 로깅을 활성화할 수 있습니다.

/host=HOST_NAME/core-service=management/access=audit/server-logger=audit-log:write-attribute(name=enabled,value=true)
Copy to Clipboard Toggle word wrap

기본적으로 감사 로그를 EAP_HOME/domain/servers/SERVER_NAME/data/audit-log.log에 작성합니다.

3.8.2. Syslog 서버로 관리 감사 로깅 전송

syslog 처리기는 감사 로그 항목이 syslog 서버로 전송되는 매개변수, 특히 syslog 서버의 호스트 이름과 syslog 서버가 수신 대기하는 포트를 지정합니다. 감사 로깅을 syslog 서버로 전송하면 로컬 파일 또는 로컬 syslog 서버에 로깅하는 것보다 더 많은 보안 옵션이 제공됩니다. 여러 syslog 처리기를 정의하고 동시에 활성화할 수 있습니다.

기본적으로 감사 로깅은 활성화된 경우 파일로 출력되도록 사전 구성됩니다. 다음 단계를 사용하여 syslog 서버에 대한 감사 로깅을 설정하고 활성화합니다. syslog 처리기 속성에 대한 관리 감사 로깅 특성을 참조하십시오.

  1. syslog 처리기를 추가합니다.

    syslog 서버의 호스트 및 포트를 지정하여 syslog 처리기를 생성합니다. 관리형 도메인에서 /core-service 명령 앞에 /host=HOST_NAME 이 있어야 합니다.

    batch
    /core-service=management/access=audit/syslog-handler=SYSLOG_HANDLER_NAME:add(formatter=json-formatter)
    /core-service=management/access=audit/syslog-handler=SYSLOG_HANDLER_NAME/protocol=udp:add(host=HOST_NAME,port=PORT)
    run-batch
    Copy to Clipboard Toggle word wrap
    참고

    전달할 매개변수는 지정된 프로토콜에 따라 다릅니다.

    TLS를 사용하여 syslog 서버와 안전하게 통신하도록 처리기를 구성하려면 다음과 같이 인증을 구성해야 합니다.

    /core-service=management/access=audit/syslog-handler=SYSLOG_HANDLER_NAME/protocol=tls/authentication=truststore:add(keystore-path=PATH_TO_TRUSTSTORE,keystore-password=TRUSTSTORE_PASSWORD)
    Copy to Clipboard Toggle word wrap
  2. syslog 처리기에 참조를 추가합니다.

    관리형 도메인에서 이 명령 앞에 /host=HOST_NAME 이어야 합니다.

    /core-service=management/access=audit/logger=audit-log/handler=SYSLOG_HANDLER_NAME:add
    Copy to Clipboard Toggle word wrap
  3. 감사 로깅을 활성화합니다.

    감사 로깅을 활성화하려면 관리 감사 로깅 활성화를 참조하십시오.

중요

운영 체제에서 로깅이 활성화되지 않는 한 JBoss EAP에서 syslog 서버에 대한 감사 로깅 활성화는 작동하지 않습니다.

Red Hat Enterprise Linux의 rsyslog 구성에 대한 자세한 내용은 https://access.redhat.com/documentation/en/red-hat-enterprise-linux/Red Hat Enterprise Linux 시스템 관리자 가이드 Rsyslog 기본 구성 섹션을 참조하십시오.

3.8.3. 감사 로그 항목 읽기

파일에 대한 감사 로그 항목은 텍스트 뷰어 에서 가장 잘 볼 수 있는 반면 syslog 서버로의 출력은 syslog 뷰어 애플리케이션을 사용하여 가장 잘 볼 수 있습니다.

참고

일부에서는 텍스트 편집기 를 사용하여 로그 파일을 보는 것이 권장되지 않습니다. 일부에서는 추가 로그 항목이 로그 파일에 기록되지 않을 수 있습니다.

감사 로그 항목은 JSON 형식으로 저장됩니다. 각 로그 항목은 선택적 타임스탬프로 시작한 다음 아래 표의 필드로 시작합니다.

Expand
표 3.4. 관리 감사 로그 필드
필드 이름설명

액세스

여기에는 다음 값 중 하나가 있을 수 있습니다.

  • NATIVE - 네이티브 관리 인터페이스를 통해 작업이 시작되었습니다.
  • HTTP - 도메인 HTTP 인터페이스를 통해 작업이 입력되었습니다.
  • Cryo stat - 작업이 jmx 하위 시스템을 통해 발생했습니다.

부팅

부팅 프로세스 중에 작업이 실행된 경우 값이 true 이거나 서버가 가동되어 실행된 경우 false 입니다.

domainUUID

도메인 컨트롤러에서 서버, 슬레이브 호스트 컨트롤러 및 슬레이브 호스트 컨트롤러 서버로 전파되므로 모든 작업을 함께 연결하는 ID입니다.

Ops

실행 중인 작업입니다. JSON으로 직렬화된 작업 목록입니다. 부팅 시 이 작업은 XML 구문 분석으로 인한 작업입니다. 부팅되면 목록에 일반적으로 단일 항목이 포함됩니다.

r/o

작업이 관리 모델을 변경하지 않는 경우 값이 true 이거나 그렇지 않은 경우 false 입니다.

remote-address

이 작업을 실행하는 클라이언트의 주소입니다.

success

작업이 성공한 경우 값이 true 이거나 롤백된 경우 false 입니다.

type

이 값은 core 값을 가질 수 있습니다. 즉, 이는 관리 작업이거나 jmx 하위 시스템에서 가져온다는 의미입니다.

user

인증된 사용자의 사용자 이름입니다. 실행 중인 서버와 동일한 시스템에서 관리 CLI를 사용하여 작업이 발생한 경우 특수 사용자 $local 이 사용됩니다.

version

JBoss EAP 인스턴스의 버전 번호입니다.

4장. 네트워크 및 포트 구성

4.1. 인터페이스

JBoss EAP는 구성에 걸쳐 이름이 지정된 인터페이스를 참조합니다. 이를 통해 구성은 각 용도에 인터페이스의 전체 세부 정보가 필요하지 않고 논리적 이름으로 개별 인터페이스 선언을 참조할 수 있습니다.

또한 관리형 도메인에서 더 쉽게 구성할 수 있습니다. 여기서 네트워크 인터페이스 세부 정보가 여러 시스템에 따라 다를 수 있습니다. 각 서버 인스턴스는 논리 이름 그룹에 대응할 수 있습니다.

standalone.xml,domain.xmlhost.xml 파일에는 모두 인터페이스 선언이 포함됩니다. 사용되는 기본 구성에 따라 몇 가지 사전 구성된 인터페이스 이름이 있습니다. 관리 인터페이스는 HTTP 관리 끝점을 포함하여 관리 계층이 필요한 모든 구성 요소 및 서비스에 사용할 수 있습니다. 공용 인터페이스는 모든 애플리케이션 관련 네트워크 통신에 사용할 수 있습니다. 비보안 인터페이스는 표준 구성의 IIOP 소켓에 사용됩니다. 개인 인터페이스는 표준 구성의 Cryostat 소켓에 사용됩니다.

4.1.1. 기본 인터페이스 구성

<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="private">
    <inet-address value="${jboss.bind.address.private:127.0.0.1}"/>
  </interface>
  <interface name="unsecure">
    <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
  </interface>
</interfaces>
Copy to Clipboard Toggle word wrap

기본적으로 JBoss EAP는 이러한 인터페이스를 127.0.0.1 에 바인딩하지만 적절한 속성을 설정하여 런타임 시 이러한 값을 재정의할 수 있습니다. 예를 들어 다음 명령을 사용하여 JBoss EAP를 독립 실행형 서버로 시작할 때 공용 인터페이스의 inet-address 를 설정할 수 있습니다.

$ EAP_HOME/bin/standalone.sh -Djboss.bind.address=IP_ADDRESS
Copy to Clipboard Toggle word wrap

또는 server start 명령행에서 -b 스위치를 사용할 수 있습니다. 서버 시작 옵션에 대한 자세한 내용은 Server Runtime Arguments 를 참조하십시오.

중요

JBoss EAP에서 사용하는 기본 네트워크 인터페이스 또는 포트를 수정하는 경우 수정된 인터페이스 또는 포트를 사용하는 스크립트도 변경해야 합니다. 여기에는 JBoss EAP 서비스 스크립트와 관리 콘솔 또는 관리 CLI에 액세스할 때 올바른 인터페이스 및 포트를 지정해야 합니다.

4.1.2. 인터페이스 구성

네트워크 인터페이스는 물리적 인터페이스에 대한 논리 이름 및 선택 기준을 지정하여 선언합니다. 선택 기준은 와일드카드 주소를 참조하거나 유효한 일치를 위해 인터페이스 또는 주소에 있어야 하는 하나 이상의 특성 세트를 지정할 수 있습니다. 사용 가능한 모든 인터페이스 선택 기준의 목록은 인터페이스 속성 섹션을 참조하십시오.

인터페이스는 관리 콘솔 또는 관리 CLI를 사용하여 구성할 수 있습니다. 다음은 인터페이스 추가 및 업데이트의 몇 가지 예입니다. 관리 CLI 명령 다음에 해당 구성 XML이 표시됩니다.

NIC 값을 사용하여 인터페이스 추가

NIC 값이 eth0 인 새 인터페이스를 추가합니다.

/interface=external:add(nic=eth0)
Copy to Clipboard Toggle word wrap
<interface name="external">
   <nic name="eth0"/>
</interface>
Copy to Clipboard Toggle word wrap
모든 조건 값을 사용하여 인터페이스 추가

작동 중인 경우 올바른 서브넷의 인터페이스/address와 일치하는 새 인터페이스를 추가하고, 멀티캐스트를 지원하며, 지점 간이 아닙니다.

/interface=default:add(subnet-match=192.168.0.0/16,up=true,multicast=true,not={point-to-point=true})
Copy to Clipboard Toggle word wrap
<interface name="default">
   <subnet-match value="192.168.0.0/16"/>
   <up/>
   <multicast/>
   <not>
      <point-to-point/>
   </not>
</interface>
Copy to Clipboard Toggle word wrap
인터페이스 속성 업데이트

이 값을 런타임 시 설정할 수 있도록 jboss.bind.address 속성을 유지하면서 공용 인터페이스의 기본 inet-address 값을 업데이트합니다.

/interface=public:write-attribute(name=inet-address,value="${jboss.bind.address:192.168.0.0}")
Copy to Clipboard Toggle word wrap
<interface name="public">
    <inet-address value="${jboss.bind.address:192.168.0.0}"/>
</interface>
Copy to Clipboard Toggle word wrap
관리형 도메인에서 서버에 인터페이스 추가
/host=master/server-config=SERVER_NAME/interface=INTERFACE_NAME:add(inet-address=127.0.0.1)
Copy to Clipboard Toggle word wrap
<servers>
   <server name="SERVER_NAME" group="main-server-group">
      <interfaces>
         <interface name="INTERFACE_NAME">
            <inet-address value="127.0.0.1"/>
         </interface>
      </interfaces>
   </server>
</servers>
Copy to Clipboard Toggle word wrap

4.2. 소켓 바인딩

소켓 바인딩 및 소켓 바인딩 그룹을 사용하면 JBoss EAP 구성에 필요한 네트워킹 인터페이스와 네트워크 포트 및 해당 관계를 정의할 수 있습니다. 소켓 바인딩은 소켓에 대해 이름이 지정된 구성입니다. 소켓 바인딩 그룹은 논리 이름으로 그룹화되는 소켓 바인딩 선언 컬렉션입니다.

이를 통해 구성의 다른 섹션은 각 용도에 소켓 구성의 전체 세부 정보가 필요하지 않고 논리 이름으로 소켓 바인딩을 참조할 수 있습니다.

이러한 이름의 구성에 대한 선언은 standalone.xmldomain.xml 구성 파일에서 확인할 수 있습니다. 독립 실행형 서버에는 하나의 소켓 바인딩 그룹만 포함되어 있지만 관리형 도메인에는 여러 그룹을 포함할 수 있습니다. 관리형 도메인의 각 서버 그룹에 대해 소켓 바인딩 그룹을 생성하거나 여러 서버 그룹 간에 소켓 바인딩 그룹을 공유할 수 있습니다.

기본적으로 JBoss EAP에서 사용하는 포트는 사용되는 소켓 바인딩 그룹과 개별 배포의 요구 사항에 따라 다릅니다.

4.2.1. 관리 포트

관리 포트는 JBoss EAP 7에 통합되었습니다. 기본적으로 JBoss EAP 7은 관리 CLI에서 사용하는 기본 관리와 웹 기반 관리 콘솔에서 사용하는 HTTP 관리에 모두 포트 9990 을 사용합니다. JBoss EAP 6에서 네이티브 관리 포트로 사용된 포트 9999 는 더 이상 사용되지 않지만 원하는 경우 활성화할 수 있습니다.

관리 콘솔에 HTTPS가 활성화된 경우 기본적으로 포트 9993 이 사용됩니다.

4.2.2. 기본 소켓 바인딩

JBoss EAP에는 사전 정의된 네 가지 프로필(기본값, ha,full,full-ha ) 각각에 대해 소켓 바인딩 그룹이 포함되어 있습니다.

기본 포트 및 설명과 같은 기본 소켓 바인딩에 대한 자세한 내용은 Default Socket Bindings 섹션을 참조하십시오.

중요

JBoss EAP에서 사용하는 기본 네트워크 인터페이스 또는 포트를 수정하는 경우 수정된 인터페이스 또는 포트를 사용하는 스크립트도 변경해야 합니다. 여기에는 JBoss EAP 서비스 스크립트와 관리 콘솔 또는 관리 CLI에 액세스할 때 올바른 인터페이스 및 포트를 지정해야 합니다.

독립 실행형 서버

독립 실행형 서버로 실행하는 경우 구성 파일별로 하나의 소켓 바인딩 그룹만 정의됩니다. 각 독립 실행형 구성 파일(standalone.xml,standalone-ha.xml,standalone-full.xml )은 해당 프로필에서 사용하는 기술에 대한 소켓 바인딩을 정의합니다.

예를 들어 기본 독립 실행형 구성 파일(standalone.xml)은 아래 소켓 바인딩을 지정합니다.

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>
Copy to Clipboard Toggle word wrap
관리형 도메인

관리형 도메인에서 실행하는 경우 모든 소켓 바인딩 그룹이 domain.xml 파일에 정의됩니다. 사전 정의된 소켓 바인딩 그룹은 다음과 같습니다.

  • standard-sockets
  • ha-sockets
  • full-sockets
  • full-ha-sockets

각 소켓 바인딩 그룹은 해당 프로필에서 사용하는 기술에 대한 소켓 바인딩을 지정합니다. 예를 들어 full-ha-sockets 소켓 바인딩 그룹은 고가용성을 위해 full-ha 프로필에서 사용하는 여러 jgroups 소켓 바인딩을 정의합니다.

<socket-binding-groups>
    <socket-binding-group name="standard-sockets" default-interface="public">
        <!-- Needed for server groups using the 'default' profile  -->
        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
        <socket-binding name="http" port="${jboss.http.port:8080}"/>
        <socket-binding name="https" port="${jboss.https.port:8443}"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"/>
        </outbound-socket-binding>
    </socket-binding-group>
    <socket-binding-group name="ha-sockets" default-interface="public">
        <!-- Needed for server groups using the 'ha' profile  -->
    ...
    </socket-binding-group>
    <socket-binding-group name="full-sockets" default-interface="public">
        <!-- Needed for server groups using the 'full' profile  -->
    ...
    </socket-binding-group>
    <socket-binding-group name="full-ha-sockets" default-interface="public">
        <!-- Needed for server groups using the 'full-ha' profile  -->
        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
        <socket-binding name="http" port="${jboss.http.port:8080}"/>
        <socket-binding name="https" port="${jboss.https.port:8443}"/>
        <socket-binding name="iiop" interface="unsecure" port="3528"/>
        <socket-binding name="iiop-ssl" interface="unsecure" port="3529"/>
        <socket-binding name="jgroups-mping" interface="private" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
        <socket-binding name="jgroups-tcp" interface="private" port="7600"/>
        <socket-binding name="jgroups-tcp-fd" interface="private" port="57600"/>
        <socket-binding name="jgroups-udp" interface="private" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
        <socket-binding name="jgroups-udp-fd" interface="private" port="54200"/>
        <socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"/>
        </outbound-socket-binding>
    </socket-binding-group>
</socket-binding-groups>
Copy to Clipboard Toggle word wrap
참고

관리 인터페이스에 대한 소켓 구성은 도메인 컨트롤러의 host.xml 파일에 정의되어 있습니다.

4.2.3. 소켓 바인딩 구성

소켓 바인딩을 정의할 때 포트인터페이스 특성과 멀티캐스트 주소 및 멀티 캐스트 포트 와 같은 멀티 캐스트 설정을 구성할 수 있습니다. 사용 가능한 모든 소켓 바인딩 속성에 대한 자세한 내용은 Socket Binding Attributes 섹션을 참조하십시오.

소켓 바인딩은 관리 콘솔 또는 관리 CLI를 사용하여 구성할 수 있습니다. 다음 단계는 소켓 바인딩 그룹을 추가하고, 소켓 바인딩을 추가하고, 관리 CLI를 사용하여 소켓 바인딩 설정을 구성하는 단계를 진행합니다.

  1. 새 소켓 바인딩 그룹을 추가합니다. 독립 실행형 서버로 실행할 때는 이 단계를 수행할 수 없습니다.

    /socket-binding-group=new-sockets:add(default-interface=public)
    Copy to Clipboard Toggle word wrap
  2. 소켓 바인딩을 추가합니다.

    /socket-binding-group=new-sockets/socket-binding=new-socket-binding:add(port=1234)
    Copy to Clipboard Toggle word wrap
  3. 소켓 바인딩 그룹에 의해 설정된 기본값 이외의 인터페이스를 사용하도록 소켓 바인딩을 변경합니다.

    /socket-binding-group=new-sockets/socket-binding=new-socket-binding:write-attribute(name=interface,value=unsecure)
    Copy to Clipboard Toggle word wrap

다음 예제에서는 위의 단계가 완료된 후 XML 구성이 표시되는 방법을 보여줍니다.

<socket-binding-groups>
    ...
    <socket-binding-group name="new-sockets" default-interface="public">
        <socket-binding name="new-socket-binding" interface="unsecure" port="1234"/>
    </socket-binding-group>
</socket-binding-groups>
Copy to Clipboard Toggle word wrap

4.2.4. 포트 오프로드

포트 오프셋은 해당 서버의 소켓 바인딩 그룹에 지정된 모든 포트 값에 추가된 숫자 오프셋 값입니다. 이를 통해 서버는 소켓 바인딩 그룹에 정의된 포트 값을 상속하여 동일한 호스트의 다른 서버와 충돌하지 않도록 오프셋을 사용할 수 있습니다. 예를 들어 소켓 바인딩 그룹의 HTTP 포트가 8080 이고 서버에서 100 의 포트 오프셋을 사용하는 경우 HTTP 포트는 8180 입니다.

다음은 관리 CLI를 사용하여 관리형 도메인의 서버에 대해 250 의 포트 오프셋을 설정하는 예입니다.

/host=master/server-config=server-two/:write-attribute(name=socket-binding-port-offset,value=250)
Copy to Clipboard Toggle word wrap

포트 오프셋은 관리형 도메인의 서버와 동일한 호스트에서 여러 독립 실행형 서버를 실행하는 데 사용할 수 있습니다.

jboss.socket.binding.port-offset 속성을 사용하여 독립 실행형 서버를 시작할 때 포트 오프셋을 전달할 수 있습니다.

$ EAP_HOME/bin/standalone.sh -Djboss.socket.binding.port-offset=100
Copy to Clipboard Toggle word wrap

4.3. IPv6 주소

기본적으로 JBoss EAP는 IPv4 주소를 사용하여 실행되도록 구성되어 있습니다. 아래 단계에서는 IPv6 주소를 사용하여 실행하도록 JBoss EAP를 구성하는 방법을 보여줍니다.

IPv6 주소에 대한 JVM 스택 구성

IPv6 주소를 선호하도록 시작 구성을 업데이트합니다.

  1. 시작 구성 파일을 엽니다.

    • 독립 실행형 서버로 실행하는 경우 EAP_HOME/bin/standalone.conf 파일(또는 Windows Server의 경우 standalone.conf. #159)을 편집합니다.
    • 관리형 도메인에서 실행하는 경우 EAP_HOME/bin/domain.conf 파일(또는 Windows Server의 경우 domain.conf. skip)을 편집합니다.
  2. java.net.preferIPv4Stack 속성을 false 로 설정합니다.

    -Djava.net.preferIPv4Stack=false
    Copy to Clipboard Toggle word wrap
  3. java.net.preferIPv6Addresses 속성을 추가하고 true 로 설정합니다.

    -Djava.net.preferIPv6Addresses=true
    Copy to Clipboard Toggle word wrap

다음 예제에서는 시작 구성 파일의 JVM 옵션이 위의 변경 후 어떻게 표시되는지 보여줍니다.

# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms1303m -Xmx1303m -Djava.net.preferIPv4Stack=false"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
   JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv6Addresses=true"
else
Copy to Clipboard Toggle word wrap
IPv6 주소의 인터페이스 선언 업데이트

구성의 기본 인터페이스 값은 IPv6 주소로 변경할 수 있습니다. 예를 들어 아래 관리 CLI 명령은 관리 인터페이스를 IPv6 루프백 주소(::1)로 설정합니다.

/interface=management:write-attribute(name=inet-address,value="${jboss.bind.address.management:[::1]}")
Copy to Clipboard Toggle word wrap

다음 예제에서는 위의 명령을 실행한 후 XML 구성이 어떻게 보일 수 있는지 보여줍니다.

<interfaces>
    <interface name="management">
        <inet-address value="${jboss.bind.address.management:[::1]}"/>
    </interface>
    ....
</interfaces>
Copy to Clipboard Toggle word wrap

5장. JBoss EAP 보안

JBoss EAP는 자체 인터페이스 및 서비스에 대한 보안을 구성하고 실행 중인 애플리케이션에 대한 보안을 제공하는 기능을 제공합니다.

6장. JBoss EAP 클래스 로드

JBoss EAP는 배포된 애플리케이션의 클래스 경로를 제어하기 위해 모듈식 클래스 로드 시스템을 사용합니다. 이 시스템은 계층적 클래스 로더의 기존 시스템보다 유연성과 제어 기능을 제공합니다. 개발자는 애플리케이션에서 사용할 수 있는 클래스를 세밀하게 제어할 수 있으며 애플리케이션 서버에서 제공하는 클래스를 무시하도록 배포를 구성할 수 있습니다.

모듈식 클래스 로더는 모든 Java 클래스를 모듈이라는 논리 그룹으로 구분합니다. 각 모듈은 해당 모듈의 클래스를 자체 클래스 경로에 추가하기 위해 다른 모듈에 대한 종속성을 정의할 수 있습니다. 배포된 각 JAR 및 WAR 파일은 모듈로 처리되므로 개발자는 애플리케이션에 모듈 구성을 추가하여 애플리케이션 클래스 경로의 콘텐츠를 제어할 수 있습니다.

6.1. 모듈

모듈은 클래스 로드 및 종속성 관리에 사용되는 클래스의 논리 그룹입니다. JBoss EAP는 정적동적 이라는 두 가지 유형의 모듈을 식별합니다. 이 둘의 가장 큰 차이점은 패키지화 방법입니다.

정적 모듈

정적 모듈은 애플리케이션 서버의 EAP_HOME/modules/ 디렉터리에 정의됩니다. 각 모듈은 하위 디렉터리로 존재합니다(예: EAP_HOME/modules/com/mysql/ ). 각 모듈 디렉터리에는 기본적으로 main 로, module.xml 구성 파일과 필요한 JAR 파일이 포함된 slot 하위 디렉터리가 포함되어 있습니다. 모든 애플리케이션 서버 제공 API는 Java EE API 및 기타 API를 포함하여 정적 모듈로 제공됩니다.

MySQL JDBC Driver module.xml 파일의 예

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
  <resources>
    <resource-root path="mysql-connector-java-5.1.36-bin.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap

모듈 이름(com.mysql)은 슬롯 이름(기본)을 제외하고 모듈의 디렉터리 구조와 일치해야 합니다.

동일한 타사 라이브러리를 사용하는 동일한 서버에 많은 애플리케이션이 배포되는 경우 사용자 지정 정적 모듈을 생성할 수 있습니다. 각 애플리케이션과 함께 이러한 라이브러리를 번들하는 대신 관리자가 이러한 라이브러리를 포함하는 모듈을 생성하고 설치할 수 있습니다. 그런 다음 애플리케이션은 사용자 지정 정적 모듈에 대한 명시적 종속성을 선언할 수 있습니다.

JBoss EAP 배포에 제공된 모듈은 EAP_HOME/modules 디렉터리 내의 시스템 디렉터리에 있습니다. 이렇게 하면 타사가 제공하는 모듈과 별도로 유지됩니다. JBoss EAP 상단에 계층이 있는 모든 Red Hat 제품도 시스템 디렉터리에 모듈을 설치했습니다.

사용자는 모듈당 하나의 디렉터리를 사용하여 사용자 지정 모듈이 EAP_HOME/modules 디렉터리에 설치되어 있는지 확인해야 합니다. 이렇게 하면 제공된 버전 대신 시스템 디렉터리에 이미 존재하는 모듈의 사용자 지정 버전이 로드됩니다. 이러한 방식으로 사용자 제공 모듈이 시스템 모듈보다 우선합니다.

JBOSS_MODULEPATH 환경 변수를 사용하여 JBoss EAP가 모듈을 검색하는 위치를 변경하는 경우 제품은 지정된 위치 중 하나의 시스템 하위 디렉터리 구조를 찾습니다. 시스템 구조는 JBOSS_MODULEPATH 로 지정된 위치에 있어야 합니다.

동적 모듈

동적 모듈은 애플리케이션 서버에서 각 JAR 또는 WAR 배포(또는 EAR의 하위 배포)에 의해 생성 및 로드됩니다. 동적 모듈의 이름은 배포된 아카이브의 이름에서 파생됩니다. 배포는 모듈로 로드되므로 종속성을 구성하고 다른 배포에서 종속성으로 사용할 수 있습니다.

모듈은 필요한 경우에만 로드됩니다. 이는 일반적으로 명시적 또는 암시적 종속 항목이 있는 애플리케이션이 배포되는 경우에만 발생합니다.

6.2. 모듈 종속 항목

모듈 종속성은 하나의 모듈에 함수를 위해 하나 이상의 다른 모듈의 클래스가 필요하다는 선언입니다. JBoss EAP가 모듈을 로드할 때 모듈식 클래스 로더는 해당 모듈의 종속성을 구문 분석하고 각 종속성의 클래스를 클래스 경로에 추가합니다. 지정된 종속성을 찾을 수 없는 경우 모듈을 로드하지 못합니다.

참고

모듈 및 모듈식 클래스 로드 시스템에 대한 자세한 내용은 Modules 섹션을 참조하십시오.

배포된 애플리케이션(예: JAR 또는 WAR)은 동적 모듈로 로드되고 종속성을 사용하여 JBoss EAP에서 제공하는 API에 액세스합니다.

종속 항목에는 명시적암시 적인 두 가지 유형의 종속 항목이 있습니다.

명시적 종속 항목
명시적 종속성은 개발자가 구성 파일에서 선언합니다. 정적 모듈은 module.xml 파일에 종속 항목을 선언할 수 있습니다. 동적 모듈은 배포의 MANIFEST.MF 또는 jboss-deployment-structure.xml 배포 설명자에 종속 항목을 선언할 수 있습니다.
암시적 종속 항목

암시적 종속성은 배포에 특정 조건 또는 메타 데이터가 있는 경우 JBoss EAP에 의해 자동으로 추가됩니다. JBoss EAP와 함께 제공되는 Java EE 7 API는 배포에서 암시적 종속성을 감지하여 추가되는 모듈의 예입니다.

jboss-deployment-structure.xml 배포 설명자 파일을 사용하여 특정 암시적 종속성을 제외하도록 배포를 구성할 수도 있습니다. 이는 애플리케이션이 JBoss EAP가 암시적 종속성으로 추가하려고 하는 특정 버전의 라이브러리를 번들하는 경우에 유용할 수 있습니다.

선택적 종속 항목

명시적 종속 항목은 선택 사항으로 지정할 수 있습니다. 선택적 종속성을 로드하지 않으면 모듈이 로드되지 않습니다. 그러나 나중에 종속성을 사용할 수 있게 되면 모듈의 클래스 경로에 추가되지 않습니다. 종속성은 모듈이 로드될 때 사용할 수 있어야 합니다.

종속성 내보내기

모듈의 클래스 경로에는 자체 클래스와 즉각적인 종속 항목만 포함됩니다. 모듈은 종속 항목 중 하나의 종속 항목의 클래스에 액세스할 수 없습니다. 그러나 모듈은 명시적 종속성을 내보내도록 지정할 수 있습니다. 내보낸 종속성은 내보내는 모듈에 따라 다릅니다.

예를 들어 모듈 A 는 모듈 B 에 따라 다르며 모듈 B 는 모듈 C 에 따라 다릅니다. 모듈 A 는 모듈 B 의 클래스에 액세스할 수 있으며, 모듈 B 는 모듈 C 의 클래스에 액세스할 수 있습니다. 모듈 A 는 다음과 같은 경우 모듈 C 의 클래스에 액세스할 수 없습니다.

  • 모듈 A 는 모듈 C 에 대한 명시적 종속성을 선언합니다.
  • 모듈 B 는 모듈 C 에 대한 종속성을 내보냅니다.
글로벌 모듈

글로벌 모듈은 JBoss EAP가 모든 애플리케이션에 대한 종속성으로 제공하는 모듈입니다. 모든 모듈은 JBoss EAP의 글로벌 모듈 목록에 추가하여 글로벌하게 만들 수 있습니다. 모듈을 변경할 필요가 없습니다.

자세한 내용은 글로벌 모듈 정의 섹션을 참조하십시오.

6.3. 사용자 지정 모듈 생성

사용자 지정 정적 모듈을 추가하여 JBoss EAP에서 실행되는 배포에 리소스를 사용할 수 있도록 할 수 있습니다. 모듈을 수동으로 생성하거나 관리 CLI를 사용하여 생성할 수 있습니다.

모듈을 생성한 후에는 애플리케이션에서 해당 리소스 를 사용할 수 있어야 하는 경우 모듈을 종속성으로 추가해야 합니다.

수동으로 사용자 지정 모듈 생성

다음 단계를 사용하여 사용자 지정 모듈을 수동으로 생성할 수 있습니다.

  1. EAP_HOME/modules/ 디렉터리에 적절한 디렉터리 구조를 생성합니다.

    예: MySQL JDBC 드라이버 디렉터리 structure 생성

    $ cd EAP_HOME/modules/
    $ mkdir -p com/mysql/main
    Copy to Clipboard Toggle word wrap

  2. JAR 파일 또는 기타 필요한 리소스를 main/ 하위 디렉터리에 복사합니다.

    예: MySQL JDBC 드라이버 JAR 복사

    $ cp /path/to/mysql-connector-java-5.1.36-bin.jar EAP_HOME/modules/com/mysql/main/
    Copy to Clipboard Toggle word wrap

  3. main/ 하위 디렉터리에 module.xml 파일을 생성하여 파일에 적절한 리소스 및 종속 항목을 지정합니다.

    예: MySQL JDBC Driver module.xml 파일

    <?xml version="1.0" ?>
    <module xmlns="urn:jboss:module:1.1" name="com.mysql">
      <resources>
        <resource-root path="mysql-connector-java-5.1.36-bin.jar"/>
      </resources>
      <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
      </dependencies>
    </module>
    Copy to Clipboard Toggle word wrap

관리 CLI를 사용하여 사용자 지정 모듈 생성

모듈 add management CLI 명령을 사용하여 사용자 지정 모듈을 생성할 수 있습니다.

중요

모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  1. JBoss EAP 서버를 시작합니다.
  2. 관리 CLI를 시작하지만 --connect 또는 -c 인수를 사용하여 실행 중인 인스턴스에 연결하지 마십시오.

    $ EAP_HOME/bin/jboss-cli.sh
    Copy to Clipboard Toggle word wrap
  3. 모듈 추가 관리 CLI 명령을 사용하여 새 코어 모듈을 추가합니다.

    module add --name=MODULE_NAME --resources=PATH_TO_RESOURCE --dependencies=DEPENDENCIES
    Copy to Clipboard Toggle word wrap

이 명령을 사용하여 모듈을 추가 및 제거하는 방법에 대한 자세한 내용은 module --help 를 실행합니다.

모듈을 종속성으로 추가

애플리케이션이 이 모듈의 리소스에 액세스하려면 모듈을 종속성으로 추가해야 합니다.

  • 모든 애플리케이션에 모듈을 종속 항목으로 추가하는 방법은 글로벌 모듈 정의 섹션을 참조하십시오.

예를 들어 다음 단계에서는 여러 속성 파일이 포함된 JAR 파일을 모듈로 추가하고 글로벌 모듈을 정의하여 애플리케이션이 이러한 속성을 로드할 수 있도록 합니다.

  1. JAR 파일을 코어 모듈로 추가합니다.

    module add --name=myprops --resources=/path/to/properties.jar
    Copy to Clipboard Toggle word wrap
  2. 모든 배포에서 사용할 수 있도록 이 모듈을 글로벌 모듈로 정의합니다.

    /subsystem=ee:list-add(name=global-modules,value={name=myprops})
    Copy to Clipboard Toggle word wrap
  3. 그런 다음 애플리케이션은 JAR에 포함된 속성 파일 중 하나에서 속성을 검색할 수 있습니다.

    Thread.currentThread().getContextClassLoader().getResource("my.properties");
    Copy to Clipboard Toggle word wrap

6.4. 사용자 지정 모듈 제거

사용자 정의 정적 모듈은 수동으로 또는 관리 CLI를 사용하여 제거할 수 있습니다.

수동으로 사용자 지정 모듈 제거

모듈을 수동으로 제거하기 전에 배포된 애플리케이션 또는 서버 구성의 다른 위치(예: 데이터 소스)에는 필요하지 않은지 확인합니다.

사용자 지정 모듈을 제거하려면 module.xml 파일 및 관련 JAR 파일 또는 기타 리소스를 포함하는 EAP_HOME/modules/ 에서 모듈의 디렉터리를 제거합니다. 예를 들어 EAP_HOME/modules/com/mysql/ main / 디렉터리를 제거하여 기본 슬롯에서 사용자 지정 MySQL JDBC 드라이버 모듈을 제거합니다.

관리 CLI를 사용하여 사용자 지정 모듈 제거

모듈 제거 관리 CLI 명령을 사용하여 사용자 지정 모듈을 제거할 수 있습니다.

중요

모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  1. JBoss EAP 서버를 시작합니다.
  2. 관리 CLI를 시작하지만 --connect 또는 -c 인수를 사용하여 실행 중인 인스턴스에 연결하지 마십시오.

    $ EAP_HOME/bin/jboss-cli.sh
    Copy to Clipboard Toggle word wrap
  3. module remove management CLI 명령을 사용하여 사용자 지정 모듈을 제거합니다.

    module remove --name=MODULE_NAME
    Copy to Clipboard Toggle word wrap
    • 제거할 모듈이 main 이외의 슬롯에 있는 경우 --slot 인수를 사용합니다.

    예: MySQL 모듈 제거

    module remove --name=com.mysql
    Copy to Clipboard Toggle word wrap

이 명령을 사용하여 모듈을 추가 및 제거하는 방법에 대한 자세한 내용은 module --help 를 실행합니다.

6.5. 글로벌 모듈 정의

모든 배포에 모듈을 종속 항목으로 추가하는 JBoss EAP에 글로벌 모듈 목록을 정의할 수 있습니다.

참고

글로벌 모듈로 구성할 모듈의 이름을 알아야 합니다. 포함된 모듈의 전체 목록과 지원 여부에 대한 자세한 내용은 Red Hat JBoss Enterprise Application Platform 7 Included Modules on the Red Hat Customer Portal을 참조하십시오. 배포의 모듈에 대한 이름 지정 규칙은 동적 모듈 이름 지정 섹션을 참조하십시오.

다음 관리 CLI 명령을 사용하여 글로벌 모듈 목록을 정의합니다.

/subsystem=ee:write-attribute(name=global-modules,value=[{name=MODULE_NAME_1},{name=MODULE_NAME_2}]
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령을 사용하여 기존 글로벌 모듈 목록을 단일 모듈을 추가합니다.

/subsystem=ee:list-add(name=global-modules,value={name=MODULE_NAME})
Copy to Clipboard Toggle word wrap

구성 탭에서 EE 하위 시스템으로 이동하고 글로벌 모듈 섹션을 선택하여 관리 콘솔을 사용하여 글로벌 모듈을 추가하고 제거할 수도 있습니다.

6.6. Subdeployment Isolation 구성

EAR(Enterprise Archive)의 각 하위 배포는 자체 클래스 로더가 있는 동적 모듈입니다. 하위 배포에는 항상 상위 모듈에 대한 암시적 종속성이 있으므로 EAR/lib 의 클래스에 액세스할 수 있습니다. 기본적으로 하위 배포는 해당 EAR 내의 다른 하위 배포의 리소스에 액세스할 수 있습니다.

하위 배포에서 다른 하위 배포에 속하는 클래스에 액세스할 수 없도록 하려면 JBoss EAP에서 엄격한 하위 배포 격리를 활성화할 수 있습니다. 이 설정은 모든 배포에 영향을 미칩니다.

모든 배포에 대한 하위 모듈 격리 활성화

하위 시스템에서 관리 콘솔 또는 관리 CLI를 사용하여 하위 배포 격리를 활성화하거나 비활성화할 수 있습니다. 기본적으로 하위 배포 격리는 false로 설정되어 하위 배포가 EAR 배포 내의 다른 하위 배포의 리소스에 액세스할 수 있습니다.

다음 관리 CLI를 사용하여 EAR 하위 배포 격리를 활성화합니다.

/subsystem=ee:write-attribute(name=ear-subdeployments-isolated,value=true)
Copy to Clipboard Toggle word wrap

EAR의 하위 배포는 더 이상 다른 하위 배포의 리소스에 액세스할 수 없습니다.

6.7. 외부 JBoss EAP 모듈 디렉터리 정의

JBoss EAP 모듈의 기본 디렉터리는 EAP_HOME/modules 입니다. JBOSS_MODULEPATH 변수를 사용하여 JBoss EAP 모듈에 다른 디렉터리를 지정할 수 있습니다. 다음 단계에 따라 JBoss EAP 시작 구성 파일에서 이 변수를 설정합니다.

참고

JBoss EAP 시작 구성 파일에서 이를 설정하는 대신 JBOSS_MODULEPATH 를 환경 변수로 설정할 수도 있습니다.

  1. 시작 구성 파일을 편집합니다.

    • 독립 실행형 서버로 실행하는 경우 EAP_HOME/bin/standalone.conf 파일(또는 Windows Server의 경우 standalone.conf. #159)을 편집합니다.
    • 관리형 도메인에서 실행하는 경우 EAP_HOME/bin/domain.conf 파일(또는 Windows Server의 경우 domain.conf. skip)을 편집합니다.
  2. JBOSS_MODULEPATH 변수를 설정합니다. 예를 들면 다음과 같습니다.

    JBOSS_MODULEPATH="/path/to/modules/directory/"
    Copy to Clipboard Toggle word wrap

    디렉터리 목록을 지정하려면 콜론(:)을 사용하여 디렉터리 목록을 제한합니다.

    참고

    Windows Server의 경우 다음 구문을 사용하여 JBOSS_MODULEPATH 변수를 설정합니다.

    set "JBOSS_MODULEPATH /path/to/modules/directory/"
    Copy to Clipboard Toggle word wrap

    디렉터리 목록을 지정하려면;(;)를 사용하여 디렉터리 목록을 제한합니다.

6.8. 동적 모듈 이름 지정

JBoss EAP는 모든 배포를 다음 규칙에 따라 이름이 지정된 모듈로 로드합니다.

  • WAR 및 JAR 파일의 배포 이름은 다음 형식을 사용하여 지정됩니다.

    deployment.DEPLOYMENT_NAME
    Copy to Clipboard Toggle word wrap

    예를 들어 inventory.warstore.jar 에는 각각 deployment.inventory.wardeployment.store.jar 의 모듈 이름이 있습니다.

  • EAR(Enterprise Archive) 내의 하위 배포의 이름은 다음 형식을 사용하여 이름이 지정됩니다.

    deployment.EAR_NAME.SUBDEPLOYMENT_NAME
    Copy to Clipboard Toggle word wrap

    예를 들어 엔터프라이즈 아카이브 accounts.ear 내의 reports.war 의 하위 배포에는 deployment.accounts.ear.reports.war 의 모듈 이름이 있습니다.

7장. 애플리케이션 배포

JBoss EAP에는 관리자와 개발자 모두를 지원하는 다양한 애플리케이션 배포 및 구성 옵션이 있습니다. 관리자의 경우 관리 콘솔관리 CLI 는 프로덕션 환경에서 애플리케이션 배포를 관리하는 이상적인 그래픽 및 명령줄 인터페이스를 제공합니다. 개발자의 경우 다양한 애플리케이션 배포 테스트 옵션에는 구성 가능한 파일 시스템 배포 스캐너, HTTP API, Red Hat JBoss Developer Studio와 같은 IDE, Maven 이 포함됩니다.

애플리케이션을 배포할 때 org.jboss.metadata.parser.validate 시스템 속성을 true 로 설정하여 배포 설명자에 대한 유효성 검사를 활성화할 수 있습니다. 이 작업은 다음 방법 중 하나로 수행할 수 있습니다.

  • 서버를 시작하는 동안

    $ EAP_HOME/bin/standalone.sh -Dorg.jboss.metadata.parser.validate=true
    Copy to Clipboard Toggle word wrap
  • 다음 관리 CLI 명령을 사용하여 서버 구성에 추가하여 다음을 수행합니다.

    /system-property=org.jboss.metadata.parser.validate:add(value=true)
    Copy to Clipboard Toggle word wrap

7.1. 관리 CLI를 사용하여 애플리케이션 배포

관리 CLI를 사용하여 애플리케이션을 배포하면 배포 스크립트를 생성하고 실행하는 기능과 함께 단일 명령줄 인터페이스를 활용할 수 있습니다. 이 스크립팅 기능을 사용하여 특정 애플리케이션 배포 및 관리 시나리오를 구성할 수 있습니다. 독립 실행형 서버로 실행할 때 단일 서버의 배포를 관리하거나 관리형 도메인에서 실행할 때 전체 서버 네트워크를 관리할 수 있습니다.

7.1.1. 관리 CLI를 사용하여 독립 실행형 서버에 애플리케이션 배포

애플리케이션 배포

관리 CLI에서 배포 명령을 사용하고 애플리케이션 배포 경로를 지정합니다.

deploy /path/to/test-application.war
Copy to Clipboard Toggle word wrap

배포에 성공하면 관리 CLI에 대한 출력이 생성되지 않지만 서버 로그에 배포 메시지가 표시됩니다.

WFLYSRV0027: Starting deployment of "test-application.war" (runtime-name: "test-application.war")
WFLYUT0021: Registered web context: /test-application
WFLYSRV0010: Deployed "test-application.war" (runtime-name : "test-application.war")
Copy to Clipboard Toggle word wrap

애플리케이션이 성공적으로 배포되었습니다.

애플리케이션 배포 취소

관리 CLI에서 undeploy 명령을 사용하고 배포 이름을 지정합니다.

  • 애플리케이션 배포를 취소하고 배포 콘텐츠를 삭제합니다.

    undeploy test-application.war
    Copy to Clipboard Toggle word wrap
  • 리포지토리에서 배포 콘텐츠를 제거하지 않고 애플리케이션 배포를 취소합니다.

    undeploy test-application.war --keep-content
    Copy to Clipboard Toggle word wrap

    이는 관리 콘솔에서 배포를 비활성화하는 것과 동일합니다.

배포 취소에 성공하면 관리 CLI에 대한 출력이 생성되지 않지만 서버 로그에 배포 취소 메시지가 표시됩니다.

WFLYUT0022: Unregistered web context: /test-application
WFLYSRV0028: Stopped deployment test-application.war (runtime-name: test-application.war) in 62ms
WFLYSRV0009: Undeployed "test-application.war" (runtime-name: "test-application.war")
Copy to Clipboard Toggle word wrap

애플리케이션이 성공적으로 배포 취소되었습니다.

배포 목록

관리 CLI에서 deployment-info 명령을 사용하여 배포 정보를 나열합니다.

deployment-info
Copy to Clipboard Toggle word wrap

출력에는 런타임 이름, 상태 및 활성화 여부와 같은 각 배포에 대한 세부 정보가 표시됩니다.

NAME                 RUNTIME-NAME         PERSISTENT ENABLED STATUS
jboss-helloworld.war jboss-helloworld.war true       true    OK
test-application.war test-application.war true       true    OK
Copy to Clipboard Toggle word wrap

--name 인수를 사용하여 이름별로 표시하도록 배포를 필터링할 수도 있습니다.

7.1.2. 관리 CLI를 사용하여 관리형 도메인에서 애플리케이션 배포

애플리케이션 배포

관리 CLI에서 배포 명령을 사용하고 애플리케이션 배포 경로를 지정합니다. 또한 애플리케이션을 배포해야 하는 서버 그룹을 지정해야 합니다.

  • 애플리케이션을 모든 서버 그룹에 배포하려면 다음을 수행합니다.

    deploy /path/to/test-application.war --all-server-groups
    Copy to Clipboard Toggle word wrap
  • 애플리케이션을 특정 서버 그룹에 배포하려면 다음을 수행합니다.

    deploy /path/to/test-application.war --server-groups=main-server-group,other-server-group
    Copy to Clipboard Toggle word wrap

성공적으로 배포해도 관리 CLI에 대한 출력이 생성되지 않지만 서버 로그에 영향을 받는 각 서버에 대한 배포 메시지가 표시됩니다.

[Server:server-one] WFLYSRV0027: Starting deployment of "test-application.war" (runtime-name: "test-application.war")
[Server:server-one] WFLYUT0021: Registered web context: /test-application
[Server:server-one] WFLYSRV0010: Deployed "test-application.war" (runtime-name : "test-application.war")
Copy to Clipboard Toggle word wrap

애플리케이션이 관리형 도메인의 적절한 서버 그룹에 성공적으로 배포되었습니다.

애플리케이션 배포 취소

관리 CLI에서 undeploy 명령을 사용하고 배포 이름을 지정합니다. 또한 애플리케이션을 배포 취소해야 하는 서버 그룹을 지정해야 합니다.

  • 해당 배포를 사용하여 모든 서버 그룹에서 애플리케이션 배포를 취소합니다.

    undeploy test-application.war --all-relevant-server-groups
    Copy to Clipboard Toggle word wrap
  • 특정 서버 그룹에서 애플리케이션 배포를 취소합니다. 콘텐츠가 해당 배포를 사용하는 다른 서버 그룹의 리포지토리에 남아 있어야 하므로 --keep-content 매개변수가 필요합니다.

    undeploy test-application.war --server-groups=other-server-group --keep-content
    Copy to Clipboard Toggle word wrap

    이는 관리 콘솔에서 배포를 비활성화하는 것과 동일합니다.

배포에 성공하면 관리 CLI에 대한 출력이 생성되지 않지만 영향을 받는 각 서버에 대한 배포 취소 메시지가 표시됩니다.

[Server:server-one] WFLYUT0022: Unregistered web context: /test-application
[Server:server-one] WFLYSRV0028: Stopped deployment test-application.war (runtime-name: test-application.war) in 74ms
[Server:server-one] WFLYSRV0009: Undeployed "test-application.war" (runtime-name: "test-application.war")
Copy to Clipboard Toggle word wrap

애플리케이션이 성공적으로 배포 취소되었습니다.

배포 목록

관리 CLI에서 deployment-info 명령을 사용하여 배포 정보를 나열합니다. 배포 이름 또는 서버 그룹별로 배포 정보를 나열할 수 있습니다.

이름별 배포 정보를 표시하려면 다음을 수행합니다.

deployment-info --name=jboss-helloworld.war
Copy to Clipboard Toggle word wrap

출력에는 각 서버 그룹에 배포 및 해당 상태가 나열됩니다.

NAME                 RUNTIME-NAME
jboss-helloworld.war jboss-helloworld.war

SERVER-GROUP       STATE
main-server-group  enabled
other-server-group added
Copy to Clipboard Toggle word wrap

서버 그룹별 배포 정보를 표시하려면 다음을 수행합니다.

deployment-info --server-group=other-server-group
Copy to Clipboard Toggle word wrap

출력에는 지정된 서버 그룹의 배포 및 해당 상태가 나열됩니다.

NAME                 RUNTIME-NAME         STATE
jboss-helloworld.war jboss-helloworld.war added
test-application.war test-application.war enabled
Copy to Clipboard Toggle word wrap

deploy -l 명령을 사용하여 도메인의 모든 배포를 나열할 수도 있습니다.

7.2. 관리 콘솔을 사용하여 애플리케이션 배포

관리 콘솔을 사용하여 애플리케이션을 배포하면 사용하기 쉬운 그래픽 인터페이스가 제공됩니다. 필요한 경우 서버 또는 서버 그룹에 배포되는 애플리케이션을 한눈에 확인할 수 있으며 필요에 따라 콘텐츠 리포지토리에서 애플리케이션을 활성화, 비활성화 또는 제거할 수 있습니다.

7.2.1. 관리 콘솔을 사용하여 독립 실행형 서버에 애플리케이션 배포

배포는 JBoss EAP 관리 콘솔의 Deployments 탭에서 보고 관리할 수 있습니다.

애플리케이션 배포

추가 버튼을 클릭하고 새 배포 마법사를 사용하여 애플리케이션을 배포합니다. 배포를 업로드하거나 관리되지 않는 배포를 생성하여 애플리케이션을 배포 하도록 선택할 수 있습니다. 배포는 기본적으로 활성화되어 있습니다.

  • 배포 업로드

    서버의 콘텐츠 리포지토리에 복사되고 JBoss EAP에서 관리할 애플리케이션을 업로드합니다.

  • 관리되지 않는 배포 만들기

    배포 위치를 지정합니다. 이 배포는 서버의 콘텐츠 리포지토리에 복사되지 않으며 JBoss EAP에서 관리되지 않습니다. 단조된 배포는 관리되지 않는 배포로만 지원됩니다.

애플리케이션 배포 취소

배포를 선택하고 Remove 옵션을 선택하여 애플리케이션 배포를 취소합니다. 이렇게 하면 배포가 취소되고 콘텐츠 리포지토리에서 제거됩니다.

애플리케이션 비활성화

배포를 선택하고 Disable 옵션을 선택하여 애플리케이션을 비활성화합니다. 이렇게 하면 배포 배포가 취소되지만 콘텐츠 리포지토리에서 제거되지는 않습니다.

애플리케이션 교체

배포를 선택하고 교체 옵션을 선택합니다. 원본과 동일한 이름이 있어야 하는 배포의 새 버전을 선택하고 마침 을 클릭합니다. 이 명령은 원래 버전의 배포를 취소 및 제거한 다음 새 버전을 배포합니다.

7.2.2. 관리 콘솔을 사용하여 관리형 도메인에 애플리케이션 배포

JBoss EAP 관리 콘솔의 Deployments 탭에서는 다음을 통해 배포를 보고 관리할 수 있습니다.

  • 콘텐츠 리포지토리

    모든 관리 및 관리되지 않는 배포는 Content Repository 섹션에 나열됩니다. 배포는 여기에서 서버 그룹에 추가 및 할당할 수 있습니다.

  • 할당되지 않은 콘텐츠

    서버 그룹에 할당되지 않은 배포는 할당되지 않은 콘텐츠 섹션에 나열됩니다. 배포는 서버 그룹에 할당되거나 여기에서 제거할 수 있습니다.

  • 서버 그룹

    하나 이상의 서버 그룹에 할당된 배포는 서버 그룹 섹션에 나열됩니다. 배포를 활성화하고 여기에서 서버 그룹에 직접 추가할 수 있습니다.

애플리케이션 배포
  1. Content Repository 에서 Add 버튼을 클릭합니다.
  2. 배포를 업로드하거나 관리되지 않는 배포를 생성하여 애플리케이션을 배포 하도록 선택합니다.
  3. 프롬프트에 따라 애플리케이션을 배포합니다.

    서버를 활성화하기 전에 서버 그룹에 배포를 할당해야 합니다.

서버 그룹에서 배포를 추가하여 한 단계로 배포도 추가, 할당할 수 있습니다.

서버 그룹에 애플리케이션 할당
  1. 할당되지 않은 콘텐츠 에서 배포를 선택하고 Assign 버튼을 클릭합니다.
  2. 이 배포를 할당해야 하는 하나 이상의 서버 그룹을 선택합니다.
  3. 선택적으로 옵션을 선택하여 선택한 서버 그룹에서 배포를 활성화합니다.
서버 그룹에서 애플리케이션 할당 취소
  1. 서버 그룹에서 적절한 서버 그룹을 선택합니다.
  2. 원하는 배포를 선택하고 할당 취소 버튼을 클릭합니다.

Content Repository 에서 배포에 대한 Unassign (할당 취소) 버튼을 선택하여 한 번에 여러 서버 그룹에서 배포를 할당할 수도 있습니다.

애플리케이션 배포 취소
  1. 배포가 여전히 서버 그룹에 할당되어 있는 경우 배포 할당을 취소해야 합니다.
  2. Content Repository 에서 배포를 선택하고 Remove 버튼을 클릭합니다.

이렇게 하면 배포가 취소되고 콘텐츠 리포지토리에서 제거됩니다.

애플리케이션 비활성화
  1. 서버 그룹에서 적절한 서버 그룹을 선택합니다.
  2. 원하는 배포를 선택하고 Disable 버튼을 클릭합니다.

이렇게 하면 배포 배포가 취소되지만 콘텐츠 리포지토리에서 제거되지는 않습니다.

애플리케이션 교체
  1. Content Repository 에서 배포를 선택하고 Replace 버튼을 클릭합니다.
  2. 원본과 동일한 이름이 있어야 하는 배포의 새 버전을 선택하고 마침 을 클릭합니다.

이 명령은 원래 버전의 배포를 취소 및 제거한 다음 새 버전을 배포합니다.

7.3. 배포 스캐너를 사용하여 애플리케이션 배포

배포 스캐너는 애플리케이션이 배포되도록 배포 디렉터리를 모니터링합니다. 기본적으로 배포 스캐너는 변경 사항에 대해 5초마다 EAP_HOME/standalone/deployments/ 디렉터리를 검사합니다. 마커 파일은 배포 상태를 표시하고 배포 취소 또는 재배포와 같은 배포에 대해 작업을 트리거하는 데 사용됩니다.

프로덕션 환경에서 애플리케이션 배포에 관리 콘솔 또는 관리 CLI를 사용하는 것이 좋지만 개발자의 편의를 위해 배포 스캐너를 사용하여 배포하는 것이 좋습니다. 이를 통해 사용자는 빠른 개발 사이클에 적합한 방식으로 애플리케이션을 빌드하고 테스트할 수 있습니다. 또한 배포 스캐너를 다른 배포 방법과 함께 사용해서는 안 됩니다.

배포 스캐너는 JBoss EAP를 독립 실행형 서버로 실행하는 경우에만 사용할 수 있습니다.

XML, zipped 및 내용의 자동 배포를 허용하거나 허용하지 않도록 배포 스캐너를 구성할 수 있습니다. 자동 배포를 비활성화한 경우 배포 작업을 트리거하려면 마커 파일을 수동으로 생성해야 합니다. 사용 가능한 마커 파일 유형 및 용도에 대한 자세한 내용은 Deployment Scanner Marker Files 섹션을 참조하십시오.

기본적으로 XML 및 zipped 콘텐츠에 대한 자동 배포가 활성화됩니다. 각 콘텐츠 유형에 대한 자동 배포 구성에 대한 자세한 내용은 배포 스캐너 구성을 참조하십시오.

주의

배포 스캐너를 사용하여 배포하는 것은 개발자 편의를 위해 제공되며 프로덕션 환경에서 사용하는 것은 권장되지 않습니다. 또한 다른 배포 방법과 함께 사용해서는 안 됩니다.

애플리케이션 배포

콘텐츠를 배포 폴더에 복사합니다.

$ cp /path/to/test-application.war EAP_HOME/standalone/deployments/
Copy to Clipboard Toggle word wrap

자동 배포가 활성화되면 이 파일이 자동으로 선택되고 배포되고 .deployed 마커 파일이 생성됩니다. 자동 배포가 활성화되지 않은 경우 배포를 트리거하려면 .dodeploy 마커 파일을 수동으로 추가해야 합니다.

$ touch EAP_HOME/standalone/deployments/test-application.war.dodeploy
Copy to Clipboard Toggle word wrap
애플리케이션 배포 취소

.deployed 마커 파일을 제거하여 배포 취소를 트리거합니다.

$ rm EAP_HOME/standalone/deployments/test-application.war.deployed
Copy to Clipboard Toggle word wrap

자동 배포가 활성화된 경우 test-application.war 파일을 제거하여 배포 취소를 트리거할 수도 있습니다. 이는 불합리한 배포에는 적용되지 않습니다.

애플리케이션 재배포

.dodeploy 마커 파일을 생성하여 재배포를 시작합니다.

$ touch EAP_HOME/standalone/deployments/test-application.war.dodeploy
Copy to Clipboard Toggle word wrap

7.3.2. 배포 스캐너 구성

배포 스캐너는 관리 콘솔 또는 관리 CLI를 사용하여 구성할 수 있습니다. 검사 간격, 배포 폴더 위치, 특정 애플리케이션 파일 유형의 자동 배포와 같은 배포 스캐너의 동작을 구성할 수 있습니다. 배포 스캐너를 완전히 비활성화할 수도 있습니다.

사용 가능한 모든 배포 스캐너 속성에 대한 자세한 내용은 Deployment Scanner Attributes 섹션을 참조하십시오.

아래 관리 CLI 명령을 사용하여 기본 배포 스캐너를 구성합니다.

배포 스캐너 비활성화
/subsystem=deployment-scanner/scanner=default:write-attribute(name=scan-enabled,value=false)
Copy to Clipboard Toggle word wrap

이렇게 하면 기본 배포 스캐너가 비활성화됩니다.

검사 간격 변경
/subsystem=deployment-scanner/scanner=default:write-attribute(name=scan-interval,value=10000)
Copy to Clipboard Toggle word wrap

이렇게 하면 검사 간격 시간이 5000 밀리초(five 초)에서 10000 밀리초(10초)로 업데이트됩니다.

배포 폴더 변경
/subsystem=deployment-scanner/scanner=default:write-attribute(name=path,value=/path/to/deployments)
Copy to Clipboard Toggle word wrap

이렇게 하면 배포 폴더의 위치가 EAP_HOME/standalone/deployments 의 기본 위치에서 /path/to/deployments 로 변경됩니다.

relative-to 특성이 지정되지 않는 한 경로 값은 절대 경로로 취급되며 이 경우 해당 경로를 기준으로 합니다.

Exploded 콘텐츠의 자동 배포 활성화
/subsystem=deployment-scanner/scanner=default:write-attribute(name=auto-deploy-exploded,value=true)
Copy to Clipboard Toggle word wrap

이를 통해 의심 스러운 콘텐츠를 자동으로 배포할 수 있으며 이는 기본적으로 비활성화되어 있습니다.

Zipped 콘텐츠의 자동 배포 비활성화
/subsystem=deployment-scanner/scanner=default:write-attribute(name=auto-deploy-zipped,value=false)
Copy to Clipboard Toggle word wrap

이렇게 하면 기본적으로 활성화되어 있는 zipped 콘텐츠의 자동 배포가 비활성화됩니다.

XML 콘텐츠의 자동 배포 비활성화
/subsystem=deployment-scanner/scanner=default:write-attribute(name=auto-deploy-xml,value=false)
Copy to Clipboard Toggle word wrap

이렇게 하면 기본적으로 활성화되어 있는 XML 콘텐츠의 자동 배포가 비활성화됩니다.

7.3.3. 사용자 정의 배포 스캐너 정의

관리 CLI를 사용하여 새 배포 스캐너를 추가하거나 관리 콘솔의 구성 탭에서 Deployment Scanners 하위 시스템으로 이동하여 추가할 수 있습니다. 그러면 배포를 스캔할 새 디렉터리가 정의됩니다. 기본 배포 스캐너는 EAP_HOME/standalone/deployments 를 모니터링합니다. 기존 배포 스캐너 구성에 대한 자세한 내용은 배포 스캐너 구성을 참조하십시오.

다음 관리 CLI 명령은 배포에 대해 5초마다 EAP_HOME/standalone/new_deployment_dir 을 확인하는 새 배포 스캐너를 추가합니다.

/subsystem=deployment-scanner/scanner=new-scanner:add(path=new_deployment_dir,relative-to=jboss.server.base.dir,scan-interval=5000)
Copy to Clipboard Toggle word wrap
참고

지정된 디렉터리가 이미 존재하거나 이 명령이 오류와 함께 실패합니다.

새 배포 스캐너가 정의되고 지정된 디렉터리가 배포에 대해 모니터링됩니다.

7.4. Maven을 사용하여 애플리케이션 배포

Apache Maven을 사용하여 애플리케이션을 배포하면 JBoss EAP에 대한 배포를 기존 개발 워크플로에 쉽게 통합할 수 있습니다.

Maven을 사용하여 애플리케이션 서버에 애플리케이션을 배포하고 배포 취소할 수 있는 간단한 작업을 제공하는 WildFly Maven 플러그인 을 사용하여 JBoss EAP에 애플리케이션을 배포할 수 있습니다.

7.4.1. Maven을 사용하여 독립 실행형 서버에 애플리케이션 배포

다음 지침은 Maven을 사용하여 JBoss EAP helloworld 빠른 시작을 독립 실행형 서버에 배포 및 해제하는 방법을 보여줍니다.

JBoss EAP 빠른 시작에 대한 자세한 내용은 JBoss EAP 시작하기 가이드 의 빠른 시작 예제 사용을 참조하십시오.

애플리케이션 배포

Maven pom.xml 파일에서 WildFly Maven 플러그인을 초기화합니다. 이는 이미 JBoss EAP 빠른 시작 pom.xml 파일에 구성되어 있어야 합니다.

<plugin>
  <groupId>org.wildfly.plugins</groupId>
  <artifactId>wildfly-maven-plugin</artifactId>
  <version>${version.wildfly.maven.plugin}</version>
</plugin>
Copy to Clipboard Toggle word wrap

helloworld 빠른 시작 디렉터리에서 다음 Maven 명령을 실행합니다.

$ mvn clean install wildfly:deploy
Copy to Clipboard Toggle word wrap

배포할 Maven 명령을 실행한 후 터미널 창에는 배포 성공을 나타내는 다음 출력이 표시됩니다.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.981 s
[INFO] Finished at: 2015-12-23T15:06:13-05:00
[INFO] Final Memory: 21M/231M
[INFO] ------------------------------------------------------------------------
Copy to Clipboard Toggle word wrap

활성 서버 인스턴스의 서버 로그를 확인하여 배포를 확인할 수도 있습니다.

WFLYSRV0027: Starting deployment of "jboss-helloworld.war" (runtime-name: "jboss-helloworld.war")
WFLYUT0021: Registered web context: /jboss-helloworld
WFLYSRV0010: Deployed "jboss-helloworld.war" (runtime-name : "jboss-helloworld.war")
Copy to Clipboard Toggle word wrap
애플리케이션 배포 취소

helloworld 빠른 시작 디렉터리에서 다음 Maven 명령을 실행합니다.

$ mvn wildfly:undeploy
Copy to Clipboard Toggle word wrap

Maven 명령을 배포 취소에 실행한 후 터미널 창에 배포 취소를 나타내는 다음 출력이 표시됩니다.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.237 s
[INFO] Finished at: 2015-12-23T15:09:10-05:00
[INFO] Final Memory: 10M/183M
[INFO] ------------------------------------------------------------------------
Copy to Clipboard Toggle word wrap

배포 취소는 활성 서버 인스턴스의 서버 로그를 확인하여 확인할 수도 있습니다.

WFLYUT0022: Unregistered web context: /jboss-helloworld
WFLYSRV0028: Stopped deployment jboss-helloworld.war (runtime-name: jboss-helloworld.war) in 27ms
WFLYSRV0009: Undeployed "jboss-helloworld.war" (runtime-name: "jboss-helloworld.war")
Copy to Clipboard Toggle word wrap

7.4.2. Maven을 사용하여 관리형 도메인에 애플리케이션 배포

다음 지침은 Maven을 사용하여 관리형 도메인에서 JBoss EAP helloworld 빠른 시작을 배포하고 배포하는 방법을 보여줍니다.

JBoss EAP 빠른 시작에 대한 자세한 내용은 JBoss EAP 시작하기 가이드 의 빠른 시작 예제 사용을 참조하십시오.

애플리케이션 배포

관리형 도메인에 애플리케이션을 배포할 때 애플리케이션을 배포해야 하는 서버 그룹을 지정해야 합니다. Maven pom.xml 파일에서 구성됩니다.

pom.xml 의 다음 구성은 WildFly Maven 플러그인을 초기화하고 main-server-group 을 애플리케이션을 배포해야 하는 서버 그룹으로 지정합니다.

<plugin>
  <groupId>org.wildfly.plugins</groupId>
  <artifactId>wildfly-maven-plugin</artifactId>
  <version>${version.wildfly.maven.plugin}</version>
  <configuration>
    <domain>
      <server-groups>
        <server-group>main-server-group</server-group>
      </server-groups>
    </domain>
  </configuration>
</plugin>
Copy to Clipboard Toggle word wrap

helloworld 빠른 시작 디렉터리에서 다음 Maven 명령을 실행합니다.

$ mvn clean install wildfly:deploy
Copy to Clipboard Toggle word wrap

배포할 Maven 명령을 실행한 후 터미널 창에는 배포 성공을 나타내는 다음 출력이 표시됩니다.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.005 s
[INFO] Finished at: 2016-09-02T14:36:17-04:00
[INFO] Final Memory: 21M/226M
[INFO] ------------------------------------------------------------------------
Copy to Clipboard Toggle word wrap

활성 서버 인스턴스의 서버 로그를 확인하여 배포를 확인할 수도 있습니다.

WFLYSRV0027: Starting deployment of "jboss-helloworld.war" (runtime-name: "jboss-helloworld.war")
WFLYUT0021: Registered web context: /jboss-helloworld
WFLYSRV0010: Deployed "jboss-helloworld.war" (runtime-name : "jboss-helloworld.war")
Copy to Clipboard Toggle word wrap
애플리케이션 배포 취소

helloworld 빠른 시작 디렉터리에서 다음 Maven 명령을 실행합니다.

$ mvn wildfly:undeploy
Copy to Clipboard Toggle word wrap

Maven 명령을 배포 취소에 실행한 후 터미널 창에 배포 취소를 나타내는 다음 출력이 표시됩니다.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.750 s
[INFO] Finished at: 2016-09-02T14:45:10-04:00
[INFO] Final Memory: 10M/184M
[INFO] ------------------------------------------------------------------------
Copy to Clipboard Toggle word wrap

배포 취소는 활성 서버 인스턴스의 서버 로그를 확인하여 확인할 수도 있습니다.

WFLYUT0022: Unregistered web context: /jboss-helloworld
WFLYSRV0028: Stopped deployment jboss-helloworld.war (runtime-name: jboss-helloworld.war) in 106ms
WFLYSRV0009: Undeployed "jboss-helloworld.war" (runtime-name: "jboss-helloworld.war")
Copy to Clipboard Toggle word wrap

7.5. HTTP API를 사용하여 애플리케이션 배포

애플리케이션은 curl 명령과 함께 HTTP API를 사용하여 JBoss EAP에 배포할 수 있습니다. HTTP API 사용에 대한 자세한 내용은 HTTP API 섹션을 참조하십시오.

7.5.1. HTTP API를 사용하여 독립 실행형 서버에 애플리케이션 배포

기본적으로 HTTP API는 http://HOST:PORT/management 에서 액세스할 수 있습니다(예: http://localhost:9990/management ).

애플리케이션 배포
$ curl --digest -L -D - http://HOST:PORT/management --header "Content-Type: application/json" -u USER:PASSWORD -d '{"operation" : "composite", "address" : [], "steps" : [{"operation" : "add", "address" : {"deployment" : "test-application.war"}, "content" : [{"url" : "file:/path/to/test-application.war"}]},{"operation" : "deploy", "address" : {"deployment" : "test-application.war"}}],"json.pretty":1}'
Copy to Clipboard Toggle word wrap
애플리케이션 배포 취소
$ curl --digest -L -D - http://HOST:PORT/management --header "Content-Type: application/json" -u USER:PASSWORD -d '{"operation" : "composite", "address" : [], "steps" : [{"operation" : "undeploy", "address" : {"deployment" : "test-application.war"}},{"operation" : "remove", "address" : {"deployment" : "test-application.war"}}],"json.pretty":1}'
Copy to Clipboard Toggle word wrap

JSON 요청을 프로그래밍 방식으로 생성하는 방법에 대한 자세한 내용은 Red Hat Knowledgebase 문서를 참조하십시오.

7.5.2. HTTP API를 사용하여 관리형 도메인에 애플리케이션 배포

기본적으로 HTTP API는 http://HOST:PORT/management 에서 액세스할 수 있습니다(예: http://localhost:9990/management ).

애플리케이션 배포
  1. 배포를 콘텐츠 리포지토리에 추가합니다.

    $ curl --digest -L -D - http://HOST:PORT/management --header "Content-Type: application/json" -u USER:PASSWORD -d '{"operation" : "add", "address" : {"deployment" : "test-application.war"}, "content" : [{"url" : "file:/path/to/test-application.war"}],"json.pretty":1}'
    Copy to Clipboard Toggle word wrap
  2. 원하는 서버 그룹에 배포를 추가합니다.

    $ curl --digest -L -D - http://HOST:PORT/management --header "Content-Type: application/json" -u USER:PASSWORD -d '{"operation" : "add", "address" : {"server-group" : "main-server-group","deployment":"test-application.war"},"json.pretty":1}'
    Copy to Clipboard Toggle word wrap
  3. 서버 그룹에 애플리케이션을 배포합니다.

    $ curl --digest -L -D - http://HOST:PORT/management --header "Content-Type: application/json" -u USER:PASSWORD -d '{"operation" : "deploy", "address" : {"server-group" : "main-server-group","deployment":"test-application.war"},"json.pretty":1}'
    Copy to Clipboard Toggle word wrap
애플리케이션 배포 취소
  1. 할당된 모든 서버 그룹에서 배포를 제거합니다.

    $ curl --digest -L -D - http://HOST:PORT/management --header "Content-Type: application/json" -u USER:PASSWORD -d '{"operation" : "remove", "address" : {"server-group" : "main-server-group","deployment":"test-application.war"},"json.pretty":1}'
    Copy to Clipboard Toggle word wrap
  2. 콘텐츠 리포지토리에서 배포를 제거합니다.

    $ curl --digest -L -D - http://HOST:PORT/management --header "Content-Type: application/json" -u USER:PASSWORD -d '{"operation" : "remove", "address" : {"deployment" : "test-application.war"}, "json.pretty":1}'
    Copy to Clipboard Toggle word wrap

7.6. 배포 동작 사용자 정의

7.6.1. 배포 콘텐츠에 대한 사용자 정의 디렉터리 정의

배포된 콘텐츠를 저장할 JBoss EAP의 사용자 지정 위치를 정의할 수 있습니다.

독립 실행형 서버에 대한 사용자 지정 디렉터리 정의

기본적으로 독립 실행형 서버에 배포된 콘텐츠는 EAP_HOME/standalone/data/content 디렉터리에 저장됩니다. 이 위치는 서버를 시작할 때 -Djboss.server.deploy.dir 인수를 전달하여 변경할 수 있습니다.

$ EAP_HOME/bin/standalone.sh -Djboss.server.deploy.dir=/path/to/new_deployed_content
Copy to Clipboard Toggle word wrap

선택한 위치는 JBoss EAP 인스턴스 간에 고유해야 합니다.

참고

jboss.server.deploy.dir 속성은 관리 콘솔 또는 관리 CLI를 사용하여 배포된 콘텐츠를 저장하는 데 사용할 디렉터리를 지정합니다. 배포 스캐너에서 모니터링할 사용자 정의 배포 디렉터리를 정의하려면 배포 스캐너 구성을 참조하십시오.

관리형 도메인에 대한 사용자 정의 디렉터리 정의

기본적으로 관리형 도메인에 배포된 콘텐츠는 EAP_HOME/domain/data/content 디렉터리에 저장됩니다. 이 위치는 도메인을 시작할 때 -Djboss.domain.deployment.dir 인수를 전달하여 변경할 수 있습니다.

$ EAP_HOME/bin/domain.sh -Djboss.domain.deployment.dir=/path/to/new_deployed_content
Copy to Clipboard Toggle word wrap

선택한 위치는 JBoss EAP 인스턴스 간에 고유해야 합니다.

7.6.2. 배포 순서 제어

JBoss EAP는 서버 시작 시 배포 순서에 대한 세분화된 제어를 제공합니다. 다시 시작한 후 주문의 지속성과 함께 여러 EAR 파일에 있는 애플리케이션 배포 엄격한 순서를 지정할 수 있습니다.

jboss-all.xml 배포 설명자를 사용하여 최상위 배포 간에 종속성을 선언할 수 있습니다.

예를 들어 먼저 배포되는 framework.ear 에 따라 app.ear 가 있는 경우 아래 표시된 대로 app.ear/META-INF/jboss-all.xml 파일을 생성할 수 있습니다.

<jboss umlns="urn:jboss:1.0">
  <jboss-deployment-dependencies xmlns="urn:jboss:deployment-dependencies:1.0">
    <dependency name="framework.ear" />
  </jboss-deployment-dependencies>
</jboss>
Copy to Clipboard Toggle word wrap
참고

jboss-all.xml 파일에서 배포의 런타임 이름을 종속성 이름으로 사용할 수 있습니다.

이렇게 하면 framework.earapp.ear 앞에 배포됩니다.

중요

jboss-all.xml 파일 및 기타 배포 설명자를 사용하면 서버가 감지하지 않는 종속성을 선언할 수 있지만 엄격한 순서 지정 기능은 아닙니다. JBoss EAP는 배포 설명자에 지정된 모든 종속 항목이 이미 배포되었거나 사용 가능한 것으로 가정합니다. 종속성이 누락된 경우 JBoss EAP가 자동으로 배포되지 않고 배포에 실패합니다.

7.6.3. 배포 콘텐츠 덮어쓰기

배포 오버레이 는 배포 아카이브의 콘텐츠를 물리적으로 수정하지 않고 기존 배포에 콘텐츠를 오버레이하는 데 사용할 수 있습니다. 아카이브를 다시 빌드하지 않고도 배포 설명자, JAR 파일, 클래스, JSP 페이지 및 런타임 시 기타 파일을 재정의할 수 있습니다.

이 기능은 다양한 구성 또는 설정이 필요한 다양한 환경에 맞게 배포를 조정해야 하는 경우에 유용할 수 있습니다. 예를 들어 애플리케이션 라이프사이클을 개발, 테스트, 스테이징, 프로덕션으로 이동하는 경우 배포 설명자를 교체하거나, 정적 웹 리소스를 수정하여 애플리케이션 브랜딩을 변경하거나, JAR 라이브러리를 대상 환경에 따라 다른 버전으로 교체할 수 있습니다. 또한 구성을 변경해야 하지만 정책 또는 보안 제한으로 인해 아카이브를 수정하거나 크래킹할 수 없는 설치에도 유용합니다.

배포 오버레이를 정의할 때 배포 아카이브의 파일을 대체할 파일 시스템에서 파일을 지정합니다. 배포 오버레이의 영향을 받는 배포도 지정해야 합니다. 변경 사항을 적용하려면 영향을 받는 배포를 재배포해야 합니다.

deployment-overlay add management CLI 명령을 사용하여 배포 오버레이를 추가합니다.

deployment-overlay add --name=new-deployment-overlay --content=WEB-INF/web.xml=/path/to/other/web.xml --deployments=test-application.war --redeploy-affected
Copy to Clipboard Toggle word wrap
참고

관리형 도메인에서 --server-groups 를 사용하여 적용 가능한 서버 그룹을 지정하거나 --all-server-groups 를 사용하여 모든 서버 그룹을 지정합니다.

생성된 후에는 기존 오버레이에 콘텐츠를 추가하거나 오버레이를 배포에 연결하거나 오버레이를 제거할 수 있습니다. 전체 사용량 세부 정보를 보려면 deployment-overlay --help 를 실행합니다.

매개 변수

name
배포 오버레이의 이름입니다.
콘텐츠
파일 시스템의 파일을 교체할 아카이브의 파일에 매핑하는 쉼표로 구분된 목록입니다. 각 항목의 형식은 ARCHIVE_PATH=FILESYSTEM_PATH 입니다.
배포
이 오버레이가 연결될 쉼표로 구분된 배포 목록입니다.
재배포됨
영향을 받는 모든 배포를 재배포합니다.

7.6.4. 롤아웃 계획 사용

롤아웃 계획 정보

관리형 도메인에서 도메인 또는 호스트 수준 리소스를 대상으로 하는 작업은 여러 서버에 영향을 미칠 수 있습니다. 이러한 작업에는 작업이 서버에 적용되는 시퀀스를 자세히 설명하는 롤아웃 계획과 일부 서버에서 성공적으로 실행되지 않으면 작업을 되돌릴 수 있는지 여부를 자세히 설명하는 정책이 포함될 수 있습니다. 롤아웃 계획을 지정하지 않으면 기본 롤아웃 계획이 사용됩니다.

다음은 5개의 서버 그룹을 포함하는 롤아웃 계획의 예입니다. 작업은 서버 그룹 직렬(시각형 ) 또는 동시에(동시 그룹)에적용할 수 있습니다. 구문은 롤아웃 계획 구문에 자세히 설명되어 있습니다.

{"my-rollout-plan" => {"rollout-plan" => {
    "in-series" => [
        {"concurrent-groups" => {
            "group-A" => {
                "max-failure-percentage" => "20",
                "rolling-to-servers" => "true"
            },
            "group-B" => undefined
        }},
        {"server-group" => {"group-C" => {
            "rolling-to-servers" => "false",
            "max-failed-servers" => "1"
        }}},
        {"concurrent-groups" => {
            "group-D" => {
                "max-failure-percentage" => "20",
                "rolling-to-servers" => "true"
            },
            "group-E" => undefined
        }}
    ],
    "rollback-across-groups" => "true"
}}}
Copy to Clipboard Toggle word wrap

위의 예제를 살펴보면 도메인의 서버에 작업을 적용하는 것은 세 단계로 수행됩니다. 서버 그룹에 대한 정책이 서버 그룹 전체에서 작업 롤백을 트리거하는 경우 다른 모든 서버 그룹도 롤백됩니다.

  1. 서버 그룹 group-Agroup-B 는 작업을 동시에 적용합니다. 이 작업은 group-A 의 서버에 직렬로 적용되지만 group-B 의 모든 서버는 동시에 작업을 처리합니다. 그룹 A 에 있는 서버의 20% 이상이 작업을 적용하지 못하면 해당 그룹 전체에서 롤백됩니다. group-B 의 서버가 작업을 적용하지 않으면 해당 그룹에서 롤백됩니다.
  2. group-Agroup-B 의 모든 서버가 완료되면 이 작업이 group-C 의 서버에 적용됩니다. 이러한 서버는 작업을 동시에 처리합니다. group-C 의 서버가 두 개 이상 적용되지 않으면 해당 그룹에서 작업을 롤백합니다.
  3. group-C 의 모든 서버가 완료되면 서버 그룹 group-Dgroup-E 가 작업을 동시에 적용합니다. 이 작업은 group-D 의 서버에 직렬로 적용되지만 group-E 의 모든 서버는 동시에 작업을 처리합니다. group-D 에 있는 서버의 20% 이상이 작업을 적용하지 못하면 해당 그룹 전체에서 롤백됩니다. group-E 의 서버가 작업을 적용하지 못하면 해당 그룹에서 롤백됩니다.
롤아웃 계획 구문

다음 방법 중 하나로 롤아웃 계획을 지정할 수 있습니다.

각 메서드에는 다른 초기 명령이 있지만 두 방법 모두 롤아웃 작업 헤더를 사용하여 롤아웃 계획을 정의합니다. 이 명령은 다음 구문을 사용합니다.

rollout (id=PLAN_NAME | SERVER_GROUP_LIST) [rollback-across-groups]
Copy to Clipboard Toggle word wrap
  • PLAN_NAMErollout-plan 명령을 사용하여 저장된 롤아웃 계획의 이름입니다.
  • SERVER_GROUP_LIST 는 서버 그룹 목록입니다. 쉼표(,)를 사용하여 여러 서버 그룹을 분리하여 각 서버 그룹에서 순차적으로 작업을 수행해야 함을 나타냅니다. 캐럿(^) 구분자를 사용하여 각 서버 그룹에서 동시에 작업을 수행해야 함을 나타냅니다.

    • 각 서버 그룹에 대해 다음 정책 중 하나를 설정합니다. 쉼표로 여러 정책을 구분합니다.

      • rolling-to-servers: true 로 설정하면 작업이 그룹의 각 서버에 적용됩니다. 값이 false 이거나 지정하지 않으면 작업이 그룹의 서버에 동시에 적용됩니다.
      • max-failed-servers: 그룹의 모든 서버에서 작업을 되돌리기 전에 작업을 적용하지 못할 수 있는 최대 서버 수를 사용하는 정수입니다. 지정하지 않는 경우 기본값은 0 입니다. 즉, 서버의 실패가 그룹 전체에서 롤백을 트리거합니다.
      • max-failure-percentage: 그룹의 모든 서버에서 되돌리기 전에 작업을 적용하지 못할 수 있는 그룹의 총 서버 수의 최대 백분율을 나타내는 0 에서 100 사이의 정수입니다. 지정하지 않는 경우 기본값은 0 입니다. 즉, 서버의 실패가 그룹 전체에서 롤백을 트리거합니다.

        참고

        max-failed-serversmax-failure-percentage 가 0이 아닌 값으로 설정된 경우 max-failure-percentage 가 우선합니다.

  • rollback-across-groups: 한 서버 그룹의 모든 서버에서 작업을 롤백해야 하는지 여부를 나타내는 부울입니다. 기본값은 false 입니다.
롤아웃 계획을 사용하여 배포

롤아웃 계획의 전체 세부 정보를 헤더 인수에 전달하여 배포 명령에 직접 제공할 수 있습니다. 형식에 대한 자세한 내용은 롤아웃 계획 구문 을 참조하십시오.

다음 관리 CLI 명령은 직렬 배포에 대해 rolling-to-servers=true 를 지정하는 배포 계획을 사용하여 애플리케이션을 main-server-group 서버 그룹에 배포합니다.

deploy /path/to/test-application.war --server-groups=main-server-group --headers={rollout main-server-group(rolling-to-servers=true)}
Copy to Clipboard Toggle word wrap
저장된 롤아웃 계획을 사용하여 배포

롤아웃 계획이 복잡할 수 있으므로 롤아웃 계획의 세부 정보를 저장할 수 있습니다. 이를 통해 매번 롤아웃 계획의 전체 세부 정보가 필요하지 않고 롤아웃 계획 이름을 사용할 때 참조할 수 있습니다.

  1. rollout-plan 관리 CLI 명령을 사용하여 롤아웃 계획을 저장합니다. 형식에 대한 자세한 내용은 롤아웃 계획 구문 을 참조하십시오.

    rollout-plan add --name=my-rollout-plan --content={rollout main-server-group(rolling-to-servers=false,max-failed-servers=1),other-server-group(rolling-to-servers=true,max-failure-percentage=20) rollback-across-groups=true}
    Copy to Clipboard Toggle word wrap

    이렇게 하면 다음 배포 계획이 생성됩니다.

    "rollout-plan" => {
        "in-series" => [
            {"server-group" => {"main-server-group" => {
                "rolling-to-servers" => false,
                "max-failed-servers" => 1
            }}},
            {"server-group" => {"other-server-group" => {
                "rolling-to-servers" => true,
                "max-failure-percentage" => 20
            }}}
        ],
        "rollback-across-groups" => true
    }
    Copy to Clipboard Toggle word wrap
  2. 애플리케이션을 배포할 때 저장된 롤아웃 계획 이름을 지정합니다.

    다음 관리 CLI 명령은 my-rollout-plan 저장된 롤아웃 계획을 사용하여 모든 서버 그룹에 애플리케이션을 배포합니다.

    deploy /path/to/test-application.war --all-server-groups --headers={rollout id=my-rollout-plan}
    Copy to Clipboard Toggle word wrap
저장된 롤아웃 계획 제거

제거할 롤아웃 계획의 이름을 지정하여 rollout-plan 관리 CLI 명령을 사용하여 저장된 롤아웃 계획을 제거할 수 있습니다.

rollout-plan remove --name=my-rollout-plan
Copy to Clipboard Toggle word wrap
기본 롤아웃 계획

여러 서버에 영향을 미치는 모든 작업은 롤아웃 계획을 사용하여 실행됩니다. 작업 요청에 롤아웃 계획을 지정하지 않으면 기본 롤아웃 계획이 생성됩니다. 계획에는 다음과 같은 특징이 있습니다.

  • 하나의 고급 단계만 있을 것입니다. 작업의 영향을 받는 모든 서버 그룹에는 작업이 동시에 적용됩니다.
  • 각 서버 그룹 내에서 작업은 모든 서버에 동시에 적용됩니다.
  • 서버 그룹의 모든 서버에서 실패하면 그룹 전체에서 롤백이 발생합니다.
  • 서버 그룹이 실패하면 다른 모든 서버 그룹이 롤백됩니다.

8장. 도메인 관리

이 섹션에서는 관리형 도메인 운영 모드와 관련된 개념 및 구성에 대해 설명합니다.

관리형 도메인 보안에 대한 자세한 내용은 JBoss EAP How to Configure Server Security 가이드의 관리형 도메인 보안 섹션을 참조하십시오.

8.1. 관리형 도메인 정보

관리형 도메인 운영 모드를 사용하면 단일 제어 지점에서 여러 JBoss EAP 인스턴스를 관리할 수 있습니다.

중앙 집중식으로 관리되는 JBoss EAP 서버 컬렉션은 도메인의 멤버라고 합니다. 도메인의 모든 JBoss EAP 인스턴스는 공통 관리 정책을 공유합니다.

도메인은 호스트당 하나의 도메인 컨트롤러, 하나 이상의 호스트 컨트롤러 및 0개 이상의 서버 그룹으로 구성됩니다.

관리형 도메인.

도메인 컨트롤러는 도메인이 제어되는 중앙 지점입니다. 이를 통해 각 서버가 도메인의 관리 정책에 따라 구성됩니다. 도메인 컨트롤러도 호스트 컨트롤러입니다.

호스트 컨트롤러는 호스트에서 실행 중인 애플리케이션 서버 인스턴스의 라이프사이클을 제어하고 도메인 컨트롤러가 이를 관리하는 데 도움이 되는 도메인 컨트롤러와 상호 작용하는 물리적 또는 가상 호스트입니다. 각 호스트에는 여러 서버 그룹이 포함될 수 있습니다.

서버 그룹은 JBoss EAP가 설치되어 있고 하나로 관리 및 구성된 서버 인스턴스 집합입니다. 도메인 컨트롤러는 서버 그룹에 배포된 및 애플리케이션의 구성을 관리합니다. 결과적으로 서버 그룹의 각 서버는 동일한 구성 및 배포를 공유합니다.

호스트 컨트롤러는 특정 물리적(또는 가상) 호스트와 연결됩니다. 다른 구성을 사용하는 경우 동일한 하드웨어에서 여러 호스트 컨트롤러를 실행하여 포트 및 기타 리소스가 충돌하지 않도록 할 수 있습니다. 동일한 물리적 시스템의 동일한 JBoss EAP 인스턴스 내에서 도메인 컨트롤러, 단일 호스트 컨트롤러 및 여러 서버를 실행할 수 있습니다.

8.1.1. 도메인 컨트롤러 정보

도메인 컨트롤러는 도메인의 중앙 관리 지점 역할을 하는 JBoss EAP 서버 인스턴스입니다. 하나의 호스트 컨트롤러 인스턴스가 도메인 컨트롤러로 작동하도록 구성되어 있습니다.

도메인 컨트롤러의 주요 책임은 다음과 같습니다.

  • 도메인의 중앙 관리 정책을 유지 관리합니다.
  • 모든 호스트 컨트롤러가 현재 콘텐츠를 알고 있는지 확인합니다.
  • 실행 중인 모든 JBoss EAP 서버 인스턴스가 이 정책에 따라 구성되었는지 확인하는 호스트 컨트롤러를 지원합니다.

기본적으로 중앙 관리 정책은 EAP_HOME/domain/configuration/domain.xml 파일에 저장됩니다. 이 파일은 도메인 컨트롤러로 실행되도록 설정된 호스트 컨트롤러의 이 디렉터리에 필요합니다.

domain.xml 파일에는 도메인의 서버에서 사용할 수 있는 프로필 구성이 포함되어 있습니다. 프로필에 는 해당 프로필에서 사용할 수 있는 다양한 하위 시스템의 세부 설정이 포함되어 있습니다. 도메인 구성에는 소켓 그룹 정의 및 서버 그룹 정의도 포함됩니다.

참고

호스트와 서버가 JBoss EAP 6.2 이상을 실행하는 경우 JBoss EAP 7 도메인 컨트롤러가 JBoss EAP 6 호스트 및 서버를 관리할 수 있습니다. 자세한 내용은 JBoss EAP 6 인스턴스 관리를 위해 JBoss EAP 7 도메인 컨트롤러 구성을 참조하십시오.

자세한 내용은 관리 도메인 시작 및 도메인 컨트롤러 구성 섹션을 참조하십시오.

8.1.2. 호스트 컨트롤러 정보

호스트 컨트롤러의 주요 책임은 서버 관리입니다. 도메인 관리 작업을 위임하고 호스트에서 실행되는 개별 애플리케이션 서버 프로세스를 시작하고 중지하는 역할을 합니다.

도메인 컨트롤러와 상호 작용하여 서버와 도메인 컨트롤러 간의 통신을 관리할 수 있습니다. 도메인의 여러 호스트 컨트롤러는 단일 도메인 컨트롤러와만 상호 작용할 수 있습니다. 따라서 단일 도메인 모드에서 실행되는 모든 호스트 컨트롤러 및 서버 인스턴스에는 단일 도메인 컨트롤러가 있으며 동일한 도메인에 속해야 합니다.

기본적으로 각 호스트 컨트롤러는 호스트의 파일 시스템의 압축을 푼 JBoss EAP 설치 파일에 있는 EAP_HOME/domain/configuration/host.xml 파일에서 해당 구성을 읽습니다. host.xml 파일에는 특정 호스트와 관련된 다음 구성 정보가 포함되어 있습니다.

  • 이 설치에서 실행할 서버 인스턴스의 이름입니다.
  • 로컬 물리적 설치와 관련된 구성입니다. 예를 들어 domain.xml 에 선언된 이름이 지정된 인터페이스 정의는 host.xml 의 실제 시스템별 IP 주소에 매핑될 수 있습니다. domain.xml의 추상 경로 이름은 host.xml 의 실제 파일 시스템 경로에 매핑할 수 있습니다.
  • 다음 구성 중 하나입니다.

    • 호스트 컨트롤러가 도메인 컨트롤러에 연결하여 자체적으로 등록하고 도메인 구성에 액세스하는 방법.
    • 원격 도메인 컨트롤러를 찾아서 연결하는 방법.
    • 호스트 컨트롤러가 도메인 컨트롤러 역할을 하는지 여부

자세한 내용은 관리 도메인 시작 및 호스트 컨트롤러 구성 섹션을 참조하십시오.

8.1.3. 프로세스 컨트롤러 정보

프로세스 컨트롤러는 호스트 컨트롤러 프로세스를 생성하고 라이프사이클을 모니터링하는 작은 경량 프로세스입니다. 호스트 컨트롤러가 충돌하면 프로세스 컨트롤러가 다시 시작됩니다. 또한 호스트 컨트롤러에서 대상으로 하는 서버 프로세스를 시작합니다. 그러나 충돌하는 서버 프로세스를 자동으로 재시작하지는 않습니다.

프로세스 컨트롤러는 EAP_HOME/domain/log/process-controller.log 파일에 기록합니다. PROCESS_CONTROLLER_JAVA_OPTS 변수를 사용하여 EAP_HOME/bin/domain.conf 파일에서 프로세스 컨트롤러에 대한 JVM 옵션을 설정할 수 있습니다.

8.1.4. 서버 그룹 정보

서버 그룹은 하나로 관리 및 구성된 서버 인스턴스의 컬렉션입니다. 관리형 도메인에서 모든 애플리케이션 서버 인스턴스는 유일한 멤버인 경우에도 서버 그룹에 속합니다. 그룹의 서버 인스턴스는 동일한 프로필 구성과 배포된 콘텐츠를 공유합니다.

도메인 컨트롤러와 호스트 컨트롤러는 도메인에 있는 모든 서버 그룹의 모든 서버 인스턴스에 표준 구성을 적용합니다.

도메인은 여러 서버 그룹으로 구성될 수 있습니다. 다른 서버 그룹은 다른 프로필 및 배포를 사용하여 구성할 수 있습니다. 예를 들어, 도메인은 다양한 서비스를 제공하는 다양한 서버 계층으로 구성할 수 있습니다.

다른 서버 그룹에도 동일한 프로필 및 배포가 있을 수 있습니다. 예를 들어 애플리케이션이 하나의 서버 그룹에서 업그레이드된 다음 두 번째 서버 그룹에서 업데이트되어 완전한 서비스 중단을 방지할 수 있습니다.

자세한 내용은 서버 그룹 구성 섹션을 참조하십시오.

8.1.5. 서버 정보

서버는 애플리케이션 서버 인스턴스를 나타냅니다. 관리형 도메인에서 모든 서버 인스턴스는 서버 그룹의 멤버입니다. 호스트 컨트롤러는 자체 JVM 프로세스에서 각 서버 인스턴스를 시작합니다.

자세한 내용은 서버 구성 섹션을 참조하십시오.

8.3. 관리형 도메인 시작

8.3.1. 관리형 도메인 시작

도메인 및 호스트 컨트롤러는 JBoss EAP와 함께 제공된 domain.sh 또는 domain.batch 스크립트 를 사용하여 시작할 수 있습니다. 사용 가능한 모든 시작 스크립트 인수의 전체 목록은 --help 인수를 사용하거나 서버 런타임 인수 섹션을 참조하십시오.

도메인 컨트롤러는 도메인의 모든 서버 그룹에 있는 슬레이브 서버보다 먼저 시작해야 합니다. 먼저 도메인 컨트롤러를 시작한 다음 도메인에서 연결된 다른 호스트 컨트롤러를 시작합니다.

도메인 컨트롤러 시작

전용 도메인 컨트롤러에 대해 사전 구성된 host-master.xml 구성 파일을 사용하여 도메인 컨트롤러를 시작합니다.

$ EAP_HOME/bin/domain.sh --host-config=host-master.xml
Copy to Clipboard Toggle word wrap

도메인 설정에 따라 호스트 컨트롤러가 연결할 수 있도록 추가 구성을 설정해야 합니다. 다음 예제 도메인 설정도 참조하십시오.

호스트 컨트롤러 시작

슬레이브 호스트 컨트롤러에 대해 사전 구성된 host-slave.xml 구성 파일을 사용하여 호스트 컨트롤러를 시작합니다.

$ EAP_HOME/bin/domain.sh  --host-config=host-slave.xml
Copy to Clipboard Toggle word wrap

도메인 설정에 따라 도메인 컨트롤러와 충돌하지 않고 추가 구성을 연결해야 합니다. 다음 예제 도메인 설정도 참조하십시오.

8.3.2. 도메인 컨트롤러 구성

중요

RPM 설치 방법을 사용하여 JBoss EAP를 설치할 때 동일한 시스템에서 여러 도메인 또는 호스트 컨트롤러를 구성할 수 없습니다.

도메인 컨트롤러로 호스트 작업 구성

호스트는 <domain -controller> 선언에 < local/ > 요소가 포함된 경우 도메인 컨트롤러로 지정됩니다.

<domain-controller>
  <local/>
</domain-controller>
Copy to Clipboard Toggle word wrap

도메인 컨트롤러 역할을 하는 호스트는 도메인의 다른 호스트에서 액세스할 수 있는 관리 인터페이스를 노출해야 합니다. HTTP(S) 관리 인터페이스를 노출할 필요는 없지만 관리 콘솔에 액세스할 수 있으므로 사용하는 것이 좋습니다.

<management-interfaces>
  <native-interface security-realm="ManagementRealm">
    <socket interface="management" port="${jboss.management.native.port:9999}"/>
  </native-interface>
  <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
    <socket interface="management" port="${jboss.management.http.port:9990}"/>
  </http-interface>
</management-interfaces>
Copy to Clipboard Toggle word wrap

EAP_HOME/domain/configuration/host-master.xml 파일은 도메인 컨트롤러로 작동하도록 이러한 설정으로 이미 사전 구성되어 있습니다.

8.3.3. 호스트 컨트롤러 구성

중요

RPM 설치 방법을 사용하여 JBoss EAP를 설치할 때 동일한 시스템에서 여러 도메인 또는 호스트 컨트롤러를 구성할 수 없습니다.

도메인 컨트롤러에 연결

도메인에 자신을 등록할 수 있도록 도메인 컨트롤러에 연결하려면 호스트 컨트롤러를 제공해야 합니다. 이는 구성의 &lt ;domain-controller& gt; 요소에서 구성됩니다.

<domain-controller>
  <remote security-realm="ManagementRealm">
    <discovery-options>
      <static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="${jboss.domain.master.address}" port="${jboss.domain.master.port:9999}"/>
    </discovery-options>
  </remote>
</domain-controller>
Copy to Clipboard Toggle word wrap

EAP_HOME/domain/configuration/host-slave.xml 파일은 도메인 컨트롤러에 연결하기 위해 이러한 설정으로 이미 사전 구성되어 있습니다. 호스트 컨트롤러를 시작할 때 jboss.domain.master.address 속성을 제공해야 합니다.

$ EAP_HOME/bin/domain.sh --host-config=host-slave.xml -Djboss.domain.master.address=IP_ADDRESS
Copy to Clipboard Toggle word wrap

도메인 컨트롤러 검색에 대한 자세한 내용은 Domain Controller Discovery 및 Cryostat 섹션을 참조하십시오.

도메인 설정에 따라 도메인 컨트롤러에서 인증할 수 있도록 호스트 컨트롤러에 대한 인증을 제공해야 할 수도 있습니다. 보안 값으로 관리 사용자를 생성하고 해당 값으로 호스트 컨트롤러 구성을 업데이트하는 방법에 대한 자세한 내용은 두 시스템에 관리형 도메인 설정을 참조하십시오.

8.3.3.1. 호스트 이름 구성

관리형 도메인에서 실행 중인 모든 호스트에는 고유한 호스트 이름이 있어야 합니다. 여러 호스트에서 동일한 호스트 구성 파일을 쉽게 관리하고 사용할 수 있도록 서버는 호스트 이름을 결정하기 위해 다음 우선 순위를 사용합니다.

  1. 설정된 경우 host.xml 구성 파일의 host 요소 name 속성입니다.
  2. jboss.host.name 시스템 속성의 값입니다.
  3. jboss.qualified.host.name 시스템 속성의 최종 마침표(. ) 문자를 따르는 값 또는 최종 기간(.) 문자가 없는 경우 전체 값입니다.
  4. POSIX 기반 운영 체제의 HOSTNAME 환경 변수, Microsoft Windows의 COMPUTERNAME 환경 변수 또는 최종 기간(.) 문자가 없는 경우 전체 값을 따르는 값(.) 문자입니다.

호스트 컨트롤러의 이름은 관련 host.xml 구성 파일의 상단에 있는 host 요소에 구성됩니다. 예를 들면 다음과 같습니다.

<host xmlns="urn:jboss:domain:4.0" name="host1">
Copy to Clipboard Toggle word wrap

관리 CLI를 사용하여 호스트 이름을 업데이트하려면 다음 절차를 사용하십시오.

  1. JBoss EAP 호스트 컨트롤러를 시작합니다.

    $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml
    Copy to Clipboard Toggle word wrap
  2. 관리 CLI를 시작하여 도메인 컨트롤러에 연결합니다.

    $ EAP_HOME/bin/jboss-cli.sh --connect --controller=DOMAIN_CONTROLLER_IP_ADDRESS
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 사용하여 새 호스트 이름을 설정합니다.

    /host=EXISTING_HOST_NAME:write-attribute(name=name,value=NEW_HOST_NAME)
    Copy to Clipboard Toggle word wrap

    이렇게 하면 host-slave.xml 파일의 host name 속성이 다음과 같이 수정됩니다.

    <host name="NEW_HOST_NAME" xmlns="urn:jboss:domain:4.0">
    Copy to Clipboard Toggle word wrap
  4. 변경 사항을 적용하려면 호스트 컨트롤러를 다시 로드합니다.

    reload --host=EXISTING_HOST_NAME
    Copy to Clipboard Toggle word wrap

호스트 컨트롤러에 구성 파일에 이름이 설정되지 않은 경우 런타임 시 호스트 이름을 전달할 수도 있습니다.

$ EAP_HOME/bin/domain.sh --host-config=host-slave.xml  -Djboss.host.name=HOST_NAME
Copy to Clipboard Toggle word wrap

8.3.4. Domain Controller Discovery 및 Cryostat

관리형 도메인을 설정할 때 도메인 컨트롤러에 연결하는 데 필요한 정보를 사용하여 각 호스트 컨트롤러를 구성해야 합니다. JBoss EAP에서 각 호스트 컨트롤러는 도메인 컨트롤러를 찾기 위한 여러 옵션으로 구성할 수 있습니다. 호스트 컨트롤러는 성공할 때까지 옵션 목록을 반복합니다.

이를 통해 백업 도메인 컨트롤러에 대한 연락처 정보로 호스트 컨트롤러를 사전 구성할 수 있습니다. 기본 도메인 컨트롤러에 문제가 있는 경우 백업 호스트 컨트롤러를 마스터로 승격하여 호스트 컨트롤러가 승격되면 새 마스터로 자동으로 페일오버할 수 있습니다.

다음은 도메인 컨트롤러를 찾기 위한 여러 옵션으로 호스트 컨트롤러를 구성하는 방법의 예입니다.

예: 다중 도메인 컨트롤러 옵션이 있는 호스트 컨트롤러

<domain-controller>
  <remote security-realm="ManagementRealm">
    <discovery-options>
      <static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="172.16.81.100" port="${jboss.domain.master.port:9999}"/>
      <static-discovery name="backup" protocol="${jboss.domain.master.protocol:remote}" host="172.16.81.101" port="${jboss.domain.master.port:9999}"/>
    </discovery-options>
  </remote>
</domain-controller>
Copy to Clipboard Toggle word wrap

정적 검색 옵션에는 다음과 같은 필수 속성이 포함됩니다.

name
이 도메인 컨트롤러 검색 옵션의 이름입니다.
host
원격 도메인 컨트롤러의 호스트 이름입니다.
port
원격 도메인 컨트롤러의 포트입니다.

위의 예에서 첫 번째 검색 옵션은 성공할 것으로 예상되는 옵션입니다. 두 번째는 장애 조치(failover) 상황에서 사용할 수 있습니다.

기본 도메인 컨트롤러에서 문제가 발생하면 --backup 옵션으로 시작한 호스트 컨트롤러를 도메인 컨트롤러로 작동할 수 있습니다.

참고

backup 옵션을 사용하여 호스트 컨트롤러를 시작하면 해당 컨트롤러에서 도메인 구성의 로컬 사본을 유지 관리합니다. 이 구성은 호스트 컨트롤러가 도메인 컨트롤러 역할을 수행하도록 재구성되는 경우 사용됩니다.

호스트 컨트롤러를 도메인 컨트롤러로 승격
  1. 원래 도메인 컨트롤러가 중지되었는지 확인합니다.
  2. 관리 CLI를 사용하여 새 도메인 컨트롤러가 되도록 호스트 컨트롤러에 연결합니다.
  3. 다음 명령을 실행하여 새 도메인 컨트롤러 역할을 할 호스트 컨트롤러를 구성합니다.

    /host=HOST_NAME:write-local-domain-controller
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 호스트 컨트롤러를 다시 로드합니다.

    reload --host=HOST_NAME
    Copy to Clipboard Toggle word wrap

이제 이 호스트 컨트롤러가 도메인 컨트롤러 역할을 합니다.

8.4. 서버 관리

8.4.1. 서버 그룹 구성

다음은 서버 그룹 정의의 예입니다.

<server-group name="main-server-group" profile="full">
  <jvm name="default">
    <heap size="64m" max-size="512m"/>
  </jvm>
  <socket-binding-group ref="full-sockets"/>
  <deployments>
    <deployment name="test-application.war" runtime-name="test-application.war"/>
    <deployment name="jboss-helloworld.war" runtime-name="jboss-helloworld.war" enabled="false"/>
  </deployments>
</server-group>
Copy to Clipboard Toggle word wrap

서버 그룹은 관리 CLI를 사용하거나 관리 콘솔 런타임 탭에서 구성할 수 있습니다.

서버 그룹 추가

다음 관리 CLI 명령을 사용하여 서버 그룹을 추가할 수 있습니다.

/server-group=SERVER_GROUP_NAME:add(profile=PROFILE_NAME,socket-binding-group=SOCKET_BINDING_GROUP_NAME)
Copy to Clipboard Toggle word wrap
서버 그룹 업데이트

다음 관리 CLI 명령을 사용하여 서버 그룹 속성을 업데이트할 수 있습니다.

/server-group=SERVER_GROUP_NAME:write-attribute(name=ATTRIBUTE_NAME,value=VALUE)
Copy to Clipboard Toggle word wrap
서버 그룹 제거

다음 관리 CLI 명령을 사용하여 서버 그룹을 제거할 수 있습니다.

/server-group=SERVER_GROUP_NAME:remove
Copy to Clipboard Toggle word wrap
서버 그룹 속성

서버 그룹에는 다음 속성이 필요합니다.

  • name: 서버 그룹 이름입니다.
  • profile: 서버 그룹 프로필 이름입니다.
  • socket-binding-group: 그룹의 서버에 사용되는 기본 소켓 바인딩 그룹입니다. 서버별로 재정의할 수 있습니다.

서버 그룹에는 다음과 같은 선택적 속성이 포함됩니다.

  • management-subsystem-endpoint: 서버 그룹에 속한 서버가 원격 하위 시스템에서 끝점을 사용하여 호스트 컨트롤러에 다시 연결되도록 true 로 설정합니다(이 작업이 작동하려면 remoting 하위 시스템이 있어야 함).
  • socket-binding-default-interface: 이 서버의 소켓 바인딩 그룹 기본 인터페이스입니다.
  • socket-binding-port-offset: 소켓 바인딩 그룹에서 제공하는 포트 값에 추가할 기본 오프셋입니다.
  • deployments: 그룹의 서버에 배포할 배포 콘텐츠입니다.
  • JVM: 그룹의 모든 서버에 대한 기본 JVM 설정입니다. 호스트 컨트롤러는 이러한 설정을 host.xml 에 제공된 다른 구성과 병합하여 서버의 JVM을 시작하는 데 사용되는 설정을 파생합니다.
  • deployment-overlays: 이 서버 그룹에서 정의된 배포 오버레이와 배포 사이의 연결입니다.
  • system-properties: 그룹의 서버에 설정할 시스템 속성입니다.

8.4.2. 서버 구성

기본 host.xml 구성 파일은 세 개의 서버를 정의합니다.

<servers>
  <server name="server-one" group="main-server-group">
  </server>
  <server name="server-two" group="main-server-group" auto-start="true">
    <socket-bindings port-offset="150"/>
  </server>
  <server name="server-three" group="other-server-group" auto-start="false">
    <socket-bindings port-offset="250"/>
  </server>
</servers>
Copy to Clipboard Toggle word wrap

server-one 이라는 서버 인스턴스는 main-server-group 과 연결되며 해당 서버 그룹에서 지정한 하위 시스템 구성 및 소켓 바인딩을 상속합니다. server-two 라는 서버 인스턴스는 main-server-group 과도 연결되지만 server-one 에서 사용하는 포트 값과 충돌하지 않도록 소켓 바인딩 port-offset 값도 정의합니다. server-three 라는 서버 인스턴스는 other-server-group 과 연결되며 해당 그룹의 구성을 사용합니다. 또한 port-offset 값을 정의하고 auto-startfalse 로 설정하여 호스트 컨트롤러가 시작될 때 시작되지 않도록 합니다.

서버는 관리 CLI 또는 관리 콘솔 런타임 탭에서 구성할 수 있습니다.

서버 추가

다음 관리 CLI 명령을 사용하여 서버를 추가할 수 있습니다.

/host=HOST_NAME/server-config=SERVER_NAME:add(group=SERVER_GROUP_NAME)
Copy to Clipboard Toggle word wrap
서버 업데이트

다음 관리 CLI 명령을 사용하여 서버 속성을 업데이트할 수 있습니다.

/host=HOST_NAME/server-config=SERVER_NAME:write-attribute(name=ATTRIBUTE_NAME,value=VALUE)
Copy to Clipboard Toggle word wrap
서버 제거

다음 관리 CLI 명령을 사용하여 서버를 제거할 수 있습니다.

/host=HOST_NAME/server-config=SERVER_NAME:remove
Copy to Clipboard Toggle word wrap
서버 속성

서버에는 다음 속성이 필요합니다.

  • name: 서버의 이름입니다.
  • Group: 도메인 모델의 서버 그룹 이름입니다.

서버에는 다음과 같은 선택적 속성이 포함됩니다.

  • 자동 시작: 호스트 컨트롤러를 시작할 때 이 서버를 시작해야 하는지 여부입니다.
  • socket-binding-group: 이 서버가 속한 소켓 바인딩 그룹입니다.
  • socket-binding-port-offset: 이 서버의 소켓 바인딩 그룹에서 제공하는 포트 값에 추가하는 오프셋입니다.
  • update-auto-start-with-server-status: auto-start 속성을 서버 상태로 업데이트합니다.
  • Interface: 서버에서 사용할 수 있도록 완전히 지정된 이름이 지정된 네트워크 인터페이스 목록입니다.
  • JVM: 이 서버의 JVM 설정입니다. 선언되지 않은 경우 설정이 상위 서버 그룹 또는 호스트에서 상속됩니다.
  • path: 이름이 지정된 파일 시스템 경로 목록입니다.
  • system-property: 이 서버에 설정할 시스템 속성 목록입니다.

8.4.3. 서버 시작 및 중지

런타임 탭으로 이동한 후 적절한 호스트 또는 서버 그룹을 선택하여 관리 콘솔에서 서버 시작, 중지 및 다시 로드와 같은 서버에서 작업을 수행할 수 있습니다.

관리 CLI를 사용하여 이러한 작업을 수행하는 아래 명령을 참조하십시오.

서버 시작

특정 호스트에서 단일 서버를 시작할 수 있습니다.

/host=HOST_NAME/server-config=SERVER_NAME:start
Copy to Clipboard Toggle word wrap

지정된 서버 그룹의 모든 서버를 시작할 수 있습니다.

/server-group=SERVER_GROUP_NAME:start-servers
Copy to Clipboard Toggle word wrap
서버 중지

특정 호스트에서 단일 서버를 중지할 수 있습니다.

/host=HOST_NAME/server-config=SERVER_NAME:stop
Copy to Clipboard Toggle word wrap

지정된 서버 그룹의 모든 서버를 중지할 수 있습니다.

/server-group=SERVER_GROUP_NAME:stop-servers
Copy to Clipboard Toggle word wrap
서버 다시 로드

특정 호스트에서 단일 서버를 다시 로드할 수 있습니다.

/host=HOST_NAME/server-config=SERVER_NAME:reload
Copy to Clipboard Toggle word wrap

지정된 서버 그룹의 모든 서버를 다시 로드할 수 있습니다.

/server-group=SERVER_GROUP_NAME:reload-servers
Copy to Clipboard Toggle word wrap

8.5. 관리형 도메인 설정

8.5.1. 단일 머신에서 관리형 도메인 설정

jboss.domain.base.dir 속성을 사용하여 단일 시스템에서 여러 호스트 컨트롤러를 실행할 수 있습니다.

중요

단일 시스템에서 두 개 이상의 JBoss EAP 호스트 컨트롤러를 시스템 서비스로 구성하는 것은 지원되지 않습니다.

  1. 도메인 컨트롤러의 EAP_HOME/domain 디렉터리를 복사합니다.

    $ cp -r EAP_HOME/domain /path/to/domain1
    Copy to Clipboard Toggle word wrap
  2. 호스트 컨트롤러의 EAP_HOME/domain 디렉터리를 복사합니다.

    $ cp -r EAP_HOME/domain /path/to/host1
    Copy to Clipboard Toggle word wrap
  3. /path/to/domain1 을 사용하여 도메인 컨트롤러를 시작합니다.

    $ EAP_HOME/bin/domain.sh --host-config=host-master.xml -Djboss.domain.base.dir=/path/to/domain1
    Copy to Clipboard Toggle word wrap
  4. /path/to/host1 을 사용하여 호스트 컨트롤러를 시작합니다.

    $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml -Djboss.domain.base.dir=/path/to/host1 -Djboss.domain.master.address=IP_ADDRESS -Djboss.management.native.port=PORT
    Copy to Clipboard Toggle word wrap
    참고

    호스트 컨트롤러를 시작할 때 jboss.domain.master.address 속성을 사용하여 도메인 컨트롤러의 주소를 지정해야 합니다.

    또한 이 호스트 컨트롤러는 도메인 컨트롤러와 동일한 시스템에서 실행되므로 도메인 컨트롤러의 관리 인터페이스와 충돌하지 않도록 관리 인터페이스를 변경해야 합니다. 이 명령은 jboss.management.native.port 속성을 설정합니다.

이러한 방식으로 시작된 각 인스턴스는 기본 설치 디렉터리의 나머지 리소스(예: EAP_HOME/modules/)를 공유하지만 jboss.domain.base.dir 에서 지정하는 디렉터리의 도메인 구성을 사용합니다.

8.5.2. 두 시스템에서 관리형 도메인 설정

참고

이 예제를 실행하도록 방화벽을 구성해야 할 수도 있습니다.

두 시스템에서 관리형 도메인을 생성할 수 있습니다. 여기서 한 시스템은 도메인 컨트롤러이고 다른 시스템은 호스트입니다. 자세한 내용은 도메인 컨트롤러 정보를 참조하십시오.

  • IP1 = 도메인 컨트롤러의 IP 주소 (머신 1)
  • IP2 = 호스트의 IP 주소 (머신 2)
두 시스템에서 관리형 도메인 생성
  1. 시스템 1에서

    1. 도메인 컨트롤러에서 호스트를 인증할 수 있도록 관리 사용자를 추가합니다.

      add-user.sh 스크립트를 사용하여 호스트 컨트롤러의 관리 사용자(HOST_NAME)를 추가합니다. 마지막 프롬프트에 yes 로 응답하고 제공된 시크릿 값(<secret value="SECRET_VALUE" /> )을 확인합니다. 이 시크릿 값은 호스트 컨트롤러 구성에 사용됩니다.

    2. 도메인 컨트롤러를 시작합니다.

      전용 도메인 컨트롤러에 사전 구성된 host-master.xml 구성 파일을 지정합니다. 또한 jboss.bind.address.management 속성을 설정하여 도메인 컨트롤러를 다른 시스템에 볼 수 있도록 합니다.

      $ EAP_HOME/bin/domain.sh --host-config=host-master.xml -Djboss.bind.address.management=IP1
      Copy to Clipboard Toggle word wrap
  2. 머신 2에서

    1. 사용자 자격 증명을 사용하여 호스트 구성을 업데이트합니다.

      EAP_HOME/domain/configuration/host-slave.xml 을 편집하고 호스트 이름(HOST_NAME) 및 시크릿 값(SECRET_VALUE)을 설정합니다.

      <host xmlns="urn:jboss:domain:1.6" name="HOST_NAME">
        <management>
          <security-realms>
            <security-realm name="ManagementRealm">
              <server-identities>
                <secret value="SECRET_VALUE" />
              </server-identities>
              ...
      Copy to Clipboard Toggle word wrap
    2. 호스트 컨트롤러를 시작합니다.

      슬레이브 호스트 컨트롤러에 사전 구성된 host-slave.xml 구성 파일을 지정합니다. 또한 jboss.domain.master.address 속성을 설정하여 도메인 컨트롤러에 연결하고 jboss.bind.address 속성을 설정하여 호스트 컨트롤러 바인딩 주소를 설정합니다.

      $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml  -Djboss.domain.master.address=IP1  -Djboss.bind.address=IP2
      Copy to Clipboard Toggle word wrap

이제 시작 시 --controller 매개변수로 도메인 컨트롤러 주소를 지정하여 관리 CLI에서 도메인을 관리할 수 있습니다.

$ EAP_HOME/bin/jboss-cli.sh --connect --controller=IP1
Copy to Clipboard Toggle word wrap

또는 http://IP1:9990.에서 관리 콘솔에서 도메인을 관리할 수 있습니다.

JBoss EAP 7 도메인 컨트롤러는 다음 조건이 충족되는 한 이전 버전의 JBoss EAP를 실행하는 호스트와 서버를 관리할 수 있습니다.

  • JBoss EAP 인스턴스는 JBoss EAP 6.2 이상이어야 합니다.
  • 도메인 컨트롤러의 JBoss EAP 버전은 관리하는 호스트 컨트롤러의 버전보다 크거나 같아야 합니다.

JBoss EAP 7 관리형 도메인에서 JBoss EAP 6 인스턴스를 성공적으로 관리하려면 다음 작업을 완료합니다.

이러한 작업이 완료되면 관리 CLI를 사용하여 JBoss EAP 7 도메인 컨트롤러에서 JBoss EAP 6 서버 및 구성을 관리할 수 있습니다. JBoss EAP 6 호스트는 배치 처리와 같은 새로운 JBoss EAP 7 기능을 활용할 수 없습니다.

주의

관리 콘솔은 최신 버전의 JBoss EAP에 최적화되어 있으므로 JBoss EAP 6 호스트, 서버 및 프로필을 업데이트하는 데 사용해서는 안 됩니다. JBoss EAP 7 관리형 도메인에서 JBoss EAP 6 구성을 관리할 때 대신 관리 CLI를 사용하십시오.

8.5.3.1. JBoss EAP 7 도메인 컨트롤러에 JBoss EAP 6 구성 추가

도메인 컨트롤러가 JBoss EAP 6 서버를 관리할 수 있도록 하려면 JBoss EAP 7 도메인 구성에 JBoss EAP 6 구성 세부 정보를 제공해야 합니다. JBoss EAP 6 프로필, 소켓 바인딩 그룹 및 서버 그룹을 JBoss EAP 7 domain.xml 구성 파일에 복사하여 이 작업을 수행할 수 있습니다.

JBoss EAP 7 구성의 기존 이름과 충돌하는 경우 리소스의 이름을 변경해야 합니다. 또한 적절한 동작을 보장하기 위해 추가 조정 도 있습니다.

다음 절차에서는 JBoss EAP 6 기본 프로필, standard-sockets 소켓 바인딩 그룹 및 main-server-group 서버 그룹을 사용합니다.

  1. JBoss EAP 7 domain.xml 구성 파일을 편집합니다.
  2. 해당 JBoss EAP 6 프로필을 JBoss EAP 7 domain.xml 파일에 복사합니다.

    이 절차에서는 JBoss EAP 6 기본 프로필이 복사되고 이름이 Cryostat 6-default로 변경되었다 고 가정합니다.

    JBoss EAP 7 domain.xml

    <profiles>
      ...
      <profile name="eap6-default">
        ...
      </profile>
    </profiles>
    Copy to Clipboard Toggle word wrap

  3. 이 프로필에서 사용하는 필요한 확장 기능을 추가합니다.

    JBoss EAP 6 프로필에서 JBoss EAP 7에 더 이상 존재하지 않는 하위 시스템을 사용하는 경우 JBoss EAP 도메인 구성에 적절한 확장 기능을 추가해야 합니다.

    JBoss EAP 7 domain.xml

    <extensions>
      ...
      <extension module="org.jboss.as.configadmin"/>
      <extension module="org.jboss.as.threads"/>
      <extension module="org.jboss.as.web"/>
    <extensions>
    Copy to Clipboard Toggle word wrap

  4. 해당 JBoss EAP 6 소켓 바인딩 그룹을 JBoss EAP 7 domain.xml 파일에 복사합니다.

    이 절차에서는 JBoss EAP 6 standard-sockets 소켓 바인딩 그룹이 복사되고 이름이 Cryostat 6-standard-sockets 로 변경되었다고 가정합니다.

    JBoss EAP 7 domain.xml

    <socket-binding-groups>
      ...
      <socket-binding-group name="eap6-standard-sockets" default-interface="public">
        ...
      </socket-binding-group>
    </socket-binding-groups>
    Copy to Clipboard Toggle word wrap

  5. 해당 JBoss EAP 6 서버 그룹을 JBoss EAP 7 domain.xml 파일에 복사합니다.

    이 절차에서는 JBoss EAP 6 main-server-group 서버 그룹이 복사되고 이름이 Cryostat 6-main-server-group 으로 변경되었다고 가정합니다. 또한 JBoss EAP 6 프로필, Cryostat 6-default 및 JBoss EAP 6 소켓 바인딩 그룹, Cryostat 6- standard-sockets 를 사용하도록 이 서버 그룹을 업데이트해야 합니다.

    JBoss EAP 7 domain.xml

    <server-groups>
      ...
      <server-group name="eap6-main-server-group" profile="eap6-default">
        ...
        <socket-binding-group ref="eap6-standard-sockets"/>
      </server-group>
    </server-groups>
    Copy to Clipboard Toggle word wrap

8.5.3.2. JBoss EAP 6 프로필의 동작 업데이트

JBoss EAP 버전과 원하는 동작에 따라 JBoss EAP 6 인스턴스에서 사용하는 프로필에 대한 추가 업데이트가 필요합니다. 기존 JBoss EAP 6 인스턴스에서 사용하는 하위 시스템 및 구성에 따라 추가 변경이 필요할 수 있습니다.

JBoss EAP 7 도메인 컨트롤러를 시작하고 관리 CLI를 시작하여 다음 업데이트를 수행합니다. 이 예에서는 JBoss EAP 6 프로필이 Cryostat 6-default인 것으로 가정합니다.

  • 8080 -validation 하위 시스템을 제거합니다.

    JBoss EAP 7은 ee 하위 시스템에서 8080 검증 기능을 자체 하위 시스템인ans -validation 로 이동했습니다. JBoss EAP 7 도메인 컨트롤러에서 레거시 ee 하위 시스템을 확인하는 경우 새ans -validation 하위 시스템을 추가합니다. 그러나 JBoss EAP 6 호스트는 이 하위 시스템을 인식하지 않으므로 제거해야 합니다.

    JBoss EAP 7 도메인 컨트롤러 CLI

    /profile=eap6-default/subsystem=bean-validation:remove
    Copy to Clipboard Toggle word wrap

  • CDI 1.0 동작을 설정합니다.

    이는 JBoss EAP 7에서 사용된 이후 CDI 버전의 동작과 달리 JBoss EAP 6 서버에 대한 CDI 1.0 동작을 원하는 경우에만 필요합니다. CDI 1.0 동작을 원하는 경우 weld 하위 시스템을 다음과 같이 업데이트합니다.

    JBoss EAP 7 도메인 컨트롤러 CLI

    /profile=eap6-default/subsystem=weld:write-attribute(name=require-bean-descriptor,value=true)
    
    /profile=eap6-default/subsystem=weld:write-attribute(name=non-portable-mode,value=true)
    Copy to Clipboard Toggle word wrap

  • JBoss EAP 6.2에 대한 데이터 소스 통계를 활성화합니다.

    이는 JBoss EAP 6.2 서버에서 프로필을 사용하는 경우에만 필요합니다. JBoss EAP 6.3에서는 통계를 수집하지 않는 통계 사용 속성을 도입했지만 기본값은 false 로 표시되지만 JBoss EAP 6.2 동작은 통계를 수집하는 것이었습니다. JBoss EAP 6.2 호스트와 최신 JBoss EAP 버전을 실행하는 호스트에서 이 프로필을 사용하는 경우 허용되지 않는 호스트 간에 해당 동작이 일관되지 않습니다. 따라서 JBoss EAP 6.2 호스트에서 사용하기 위한 프로필은 데이터 소스를 다음과 같이 변경해야 합니다.

    JBoss EAP 7 도메인 컨트롤러 CLI

    /profile=eap6-default/subsystem=datasources/data-source=ExampleDS:write-attribute(name=statistics-enabled,value=true)
    Copy to Clipboard Toggle word wrap

8.5.3.3. JBoss EAP 6 서버의 서버 그룹 설정

서버 그룹의 이름을 변경한 경우 JBoss EAP 7 구성에 지정된 새 서버 그룹을 사용하도록 JBoss EAP 6 호스트 구성을 업데이트해야 합니다. 이 예에서는 JBoss EAP 7 domain.xml 에 지정된 Cryostat 6-main-server-group 서버 그룹을 사용합니다.

JBoss EAP 6 host-slave.xml

<servers>
    <server name="server-one" group="eap6-main-server-group"/>
    <server name="server-two" group="eap6-main-server-group">
        <socket-bindings port-offset="150"/>
    </server>
</servers>
Copy to Clipboard Toggle word wrap

참고

호스트는 호스트가 실행 중인 것보다 최신 버전의 JBoss EAP에 도입된 기능 또는 구성 설정을 사용할 수 없습니다.

관리형 도메인의 도메인 컨트롤러는 구성 업데이트를 호스트 컨트롤러에 전달합니다. host-exclude 구성을 사용하여 특정 버전에서 숨겨야 하는 리소스를 지정해야 합니다. JBoss EAP 6 버전에 대해 적절한 사전 구성된 host-exclude 옵션을 선택합니다( EAP62,EAP63,EAP64 또는 EAP64z ).

host-exclude 구성의 active-server-groups 속성은 특정 버전에서 사용하는 서버 그룹 목록을 지정합니다. 이러한 서버 그룹과 관련 프로필, 소켓 바인딩 그룹 및 배포 리소스는 이 버전의 호스트에서 사용할 수 있지만 다른 모든 파일은 이러한 호스트에서 숨겨집니다.

이 예에서는 버전이 JBoss EAP 6.4.z이고 JBoss EAP 6 서버 그룹인 Cryostat 6-main-server-group 을 활성 서버 그룹으로 추가한다고 가정합니다.

JBoss EAP 7 도메인 컨트롤러 CLI

/host-exclude=EAP64z:write-attribute(name=active-server-groups,value=[eap6-main-server-group])
Copy to Clipboard Toggle word wrap

필요한 경우 active-socket-binding-groups 특성을 사용하여 서버에서 사용하는 추가 소켓 바인딩 그룹을 지정할 수 있습니다. 이는 active-server-groups 에 지정된 서버 그룹과 연결되지 않은 소켓 바인딩 그룹에만 필요합니다.

8.6. JBoss EAP 프로필 관리

8.6.1. 프로필 정보

JBoss EAP는 서버에서 사용할 수 있는 하위 시스템을 구성하는 방법으로 프로필 을 사용합니다. 프로필은 각 하위 시스템의 특정 구성과 함께 사용 가능한 하위 시스템의 컬렉션으로 구성됩니다. 하위 시스템 수가 많은 프로필로 인해 많은 기능이 있는 서버가 생성됩니다. 집중된 하위 시스템 세트가 있는 프로필은 기능이 줄어들지만 풋프린트가 작아집니다.

JBoss EAP에는 대부분의 사용 사례를 충족해야 하는 사전 정의된 네 가지 프로필이 포함되어 있습니다.

default
로깅,보안,데이터 소스,infinispan,webservices,ee, Cryostat3트랜잭션 등과 같이 일반적으로 사용되는 하위 시스템을 포함합니다.
ha
고가용성을 위해 jgroupsmodcluster 하위 시스템을 추가하여 기본 프로필에 제공된 하위 시스템을 포함합니다.
full
messaging-activemqiiop-openjdk 하위 시스템을 추가하여 default 프로필에 제공된 하위 시스템을 포함합니다.
full-ha
고가용성을 위해 jgroupsmodcluster 하위 시스템을 추가하여 full 프로필에 제공된 하위 시스템을 포함합니다.
참고

JBoss EAP는 기존 프로필 구성에서 하위 시스템을 제거하여 확장 기능을 비활성화하거나 드라이버 및 기타 서비스를 수동으로 언로드하는 기능을 제공합니다. 그러나 대부분의 경우 이는 불필요합니다. JBoss EAP는 필요에 따라 하위 시스템을 동적으로 로드하므로 서버 또는 애플리케이션에서 하위 시스템을 사용하지 않는 경우 로드되지 않습니다.

기존 프로필이 필요한 기능을 제공하지 않는 경우 JBoss EAP는 사용자 지정 프로필도 정의하는 기능을 제공합니다.

8.6.2. 프로필 복제

JBoss EAP를 사용하면 기존 프로필을 복제하여 관리형 도메인에 새 프로필을 생성할 수 있습니다. 그러면 원래 프로필의 구성 및 하위 시스템의 사본이 생성됩니다.

복제에 원하는 프로필에서 clone 작업을 사용하여 관리 CLI를 사용하여 프로필을 복제할 수 있습니다.

/profile=full-ha:clone(to-profile=cloned-profile)
Copy to Clipboard Toggle word wrap

원하는 프로필을 복제하고 복제를 클릭하여 관리 콘솔에서 프로필을 복제할 수도 있습니다.

8.6.3. 계층적 프로필 생성

관리형 도메인에서 프로필 계층 구조를 생성할 수 있습니다. 이를 통해 다른 프로필이 상속할 수 있는 공통 확장이 포함된 기본 프로필을 만들 수 있습니다.

관리형 도메인은 domain.xml 에서 여러 프로필을 정의합니다. 여러 프로필이 특정 하위 시스템에 대해 동일한 구성을 사용하는 경우 다른 프로필 대신 한 곳에서 구성할 수 있습니다. 상위 프로필의 값은 재정의할 수 없습니다.

프로필은 list-add 작업을 사용하고 포함할 프로필을 제공하여 관리 CLI를 사용하여 계층 구조에 다른 프로필을 포함할 수 있습니다.

/profile=new-profile:list-add(name=includes, value=PROFILE_NAME)
Copy to Clipboard Toggle word wrap

9장. JVM 설정 구성

JVM(Java Virtual Machine) 설정 구성은 독립 실행형 JBoss EAP 서버 또는 관리형 도메인의 JBoss EAP 서버에 대해 다릅니다.

독립 실행형 JBoss EAP 서버 인스턴스의 경우 서버 시작 프로세스는 시작 시 JVM 설정을 JBoss EAP 서버에 전달합니다. JBoss EAP를 시작하거나 관리 콘솔에서 시스템 속성 화면을 사용하기 전에 명령줄에서 선언할 수 있습니다.

관리형 도메인에서 JVM 설정은 host.xmldomain.xml 구성 파일에 선언되며 호스트, 서버 그룹 또는 서버 수준에서 구성할 수 있습니다.

참고

시작 중에 JBoss EAP 모듈(예: 로깅 관리자)에서 사용하려면 JAVA_OPTS 에서 시스템 속성을 구성해야 합니다.

9.1. 독립 실행형 서버에 대한 JVM 설정 구성

독립 실행형 JBoss EAP 서버 인스턴스에 대한 JVM 설정은 서버를 시작하기 전에 JAVA_OPTS 환경 변수를 설정하여 런타임에 선언할 수 있습니다.

Linux에서 JAVA_OPTS 환경 변수를 설정하는 예는 다음과 같습니다.

$ export JAVA_OPTS="-Xmx1024M"
Copy to Clipboard Toggle word wrap

Microsoft Windows 환경에서 동일한 설정을 사용할 수 있습니다.

set JAVA_OPTS="Xmx1024M"
Copy to Clipboard Toggle word wrap

또는 JVM에 전달할 옵션 예제가 포함된 EAP_HOME/bin 폴더의 standalone.conf 파일에 JVM 설정을 추가할 수 있습니다.

주의

JAVA_OPTS 환경 변수를 설정하면 standalone.conf 의 기본값이 재정의되어 JBoss EAP 시작 문제가 발생할 수 있습니다.

9.2. 관리형 도메인에 대한 JVM 설정 구성

JBoss EAP 관리형 도메인에서 여러 수준에서 JVM 설정을 정의할 수 있습니다. 특정 호스트에서 사용자 지정 JVM 설정을 정의한 다음 해당 설정을 서버 그룹 또는 개별 서버 인스턴스에 적용할 수 있습니다.

기본적으로 서버 그룹과 개별 서버는 상위에서 JVM 설정을 상속하지만 각 수준에서 JVM 설정을 재정의하도록 선택할 수 있습니다.

참고

domain.conf 의 JVM 설정은 해당 호스트 컨트롤러에서 제어하는 개별 JBoss EAP 서버 인스턴스가 아닌 JBoss EAP 호스트 컨트롤러의 Java 프로세스에 적용됩니다.

9.2.1. 호스트 컨트롤러에서 JVM 설정 정의

호스트 컨트롤러에서 JVM 설정을 정의하고 서버 그룹 또는 개별 서버에 해당 설정을 적용할 수 있습니다. JBoss EAP에는 기본 JVM 설정이 제공되지만 다음 관리 CLI 명령은 일부 사용자 지정 JVM 설정 및 옵션을 사용하여 production_jvm 이라는 새 JVM 설정을 생성하는 방법을 보여줍니다.

/host=HOST_NAME/jvm=production_jvm:add(
    heap-size=2048m,
    max-heap-size=2048m,
    max-permgen-size=512m,
    stack-size=1024k,
    jvm-options=["-XX:-UseParallelGC"]
)
Copy to Clipboard Toggle word wrap

런타임 탭을 선택하고 호스트 를 선택한 다음 편집하려는 호스트에서 JVM을 클릭하여 JBoss EAP 관리 콘솔에서 JVM 설정을 생성 및 편집할 수도 있습니다.

이러한 설정은 host.xml 의 &lt ;jvm& gt; 태그 내에 저장됩니다.

9.2.2. 서버 그룹에 JVM 설정 적용

서버 그룹을 생성할 때 그룹의 모든 서버에서 사용할 JVM 구성을 지정할 수 있습니다. 다음 관리 CLI 명령은 이전 예에 표시된 production_jvm JVM 설정을 사용하는 서버 그룹 이름 groupA 생성을 보여줍니다.

/server-group=groupA:add(profile=default, socket-binding-group=standard-sockets)
/server-group=groupA/jvm=production_jvm:add()
Copy to Clipboard Toggle word wrap

서버 그룹의 모든 서버는 production_jvm 의 JVM 설정을 상속합니다.

서버 그룹 수준에서 특정 JVM 설정을 덮어쓸 수도 있습니다. 예를 들어 다른 힙 크기를 설정하려면 다음 명령을 사용합니다.

/server-group=groupA/jvm=production_jvm:write-attribute(name=heap-size,value="1024m")
Copy to Clipboard Toggle word wrap

위의 명령을 적용하면 서버 그룹 groupA 는 재정의된 값이 1024m 인 힙 크기를 제외하고 production_jvm 의 JVM 설정을 상속합니다.

런타임 탭을 선택하고 서버 그룹 을 선택한 다음 편집할 서버 그룹에 대한 보기를 클릭하여 JBoss EAP 관리 콘솔에서 서버 그룹 JVM 설정을 편집할 수도 있습니다.

서버 그룹에 대한 이러한 설정은 domain.xml 에 저장됩니다.

9.2.3. 개별 서버에 JVM 설정 적용

기본적으로 개별 JBoss EAP 서버 인스턴스는 해당 서버 그룹의 JVM 설정을 상속합니다. 그러나 호스트 컨트롤러의 다른 전체 JVM 설정 정의로 상속된 설정을 재정의하거나 특정 JVM 설정을 재정의하도록 선택할 수 있습니다.

예를 들어 다음 명령은 이전 예제에서 서버 그룹의 JVM 정의를 재정의하고 server -one 의 JVM 설정을 기본 JVM 정의로 설정합니다.

/host=HOST_NAME/server-config=server-one/jvm=default:add()
Copy to Clipboard Toggle word wrap

또한 서버 그룹과 유사하게 서버 수준에서 특정 JVM 설정을 재정의할 수 있습니다. 예를 들어 다른 힙 크기를 설정하려면 다음 명령을 사용합니다.

/host=HOST_NAME/server-config=server-one/jvm=default:write-attribute(name=heap-size,value="1024m")
Copy to Clipboard Toggle word wrap

런타임 탭을 선택하고 관련 호스트를 선택하여 JBoss EAP 관리 콘솔에서 서버 JVM 설정을 편집할 수도 있습니다. 그런 다음 관련 서버를 선택하고 편집할 서버에 대한 보기를 클릭합니다.

개별 서버에 대한 이러한 설정은 host.xml 에 저장됩니다.

9.3. JVM 상태 표시

관리 콘솔에서 독립 실행형 또는 관리형 도메인 서버의 힙 및 스레드 사용과 같은 JVM 리소스의 상태를 볼 수 있습니다. 통계가 실시간으로 표시되지 않지만 새로 고침 결과를 클릭하여 JVM 리소스에 대한 최신 개요를 제공할 수 있습니다.

독립 실행형 JBoss EAP 서버의 JVM 상태를 표시하려면 다음을 수행합니다.

  • 런타임 탭을 선택한 다음 독립 실행형 서버 를 선택합니다. Monitor 열에서 JVM 을 선택하고 View 를 클릭합니다.

관리형 도메인에 JBoss EAP 서버의 JVM 상태를 표시하려면 다음을 수행합니다.

  • 런타임 탭을 선택한 다음 볼 서버 그룹 및 서버를 선택합니다. Monitor 열에서 JVM 을 선택하고 View 를 클릭합니다.

다음 힙 사용 정보를 보여줍니다.

Max
메모리 관리에 사용할 수 있는 최대 메모리 양입니다.
사용됨
사용된 메모리 양입니다.
커밋됨
Java Virtual Machine에서 사용할 메모리 양입니다.

JVM 가동 시간 및 스레드 사용과 같은 기타 정보도 사용할 수 있습니다.

9.4. 32비트 또는 64비트 JVM 아키텍처 지정

Hewlett-Packard HP- Cryostat 및 Solaris와 같은 일부 환경에서는 -d32 또는 -d64 스위치를 사용하여 32비트 또는 64비트 JVM에서 실행할지 여부를 지정하는 데 사용됩니다. 옵션이 표시되지 않는 경우 기본값은 32비트입니다.

독립 실행형 서버에 대한 64진수 아키텍처 지정
  1. EAP_HOME/bin/standalone.conf 를 엽니다.
  2. 다음 행을 추가하여 JAVA_OPTS-d64 옵션을 추가합니다.
JAVA_OPTS="$JAVA_OPTS -d64"
Copy to Clipboard Toggle word wrap
관리형 도메인의 64진수 아키텍처 지정

관리형 도메인을 실행할 때 호스트용 64비트 환경을 지정하고 서버 인스턴스 외에도 컨트롤러를 처리할 수 있습니다.

  1. 64비트 JVM에서 실행되도록 호스트 및 프로세스 컨트롤러를 설정합니다.

    1. EAP_HOME/bin/domain.conf 를 엽니다.
    2. 다음 행을 추가하여 JAVA_OPTS-d64 옵션을 추가합니다. PROCESS_CONTROLLER_JAVA_OPTSHOST_CONTROLLER_JAVA_OPTS 가 설정되기 전에 삽입되었는지 확인합니다.

      JAVA_OPTS="$JAVA_OPTS -d64"
      Copy to Clipboard Toggle word wrap

      domain.conf의 JVM 옵션 예

      #
      # Specify options to pass to the Java VM.
      #
      if [ "x$JAVA_OPTS" = "x" ]; then
        JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true"
        JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
        JAVA_OPTS="$JAVA_OPTS -Djboss.modules.policy-permissions=true"
        JAVA_OPTS="$JAVA_OPTS -d64"
      else
        echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"
      fi
      Copy to Clipboard Toggle word wrap

  2. 64비트 JVM에서 실행할 서버 인스턴스를 설정합니다.

    적절한 JVM 구성에서 JVM 옵션으로 -d64 를 추가합니다. 아래 명령은 기본 JVM 구성에 추가되고 있음을 보여줍니다.

    /host=HOST_NAME/jvm=default:add-jvm-option(jvm-option="-d64")
    Copy to Clipboard Toggle word wrap

10장. mail Cryostat

10.1. 메일 구성

메일 하위 시스템을 사용하면 JBoss EAP에서 메일 세션을 구성한 다음 JNDI를 사용하여 해당 세션을 애플리케이션에 삽입할 수 있습니다. 또한 Java EE 7 @ECDHESessionDefinition 및 @#159SessionDefinition s 주석을 사용한 구성도 지원합니다.

애플리케이션에서 사용할 SMTP 서버 구성
  1. 다음 CLI 명령을 사용하여 SMTP 서버 및 아웃바운드 소켓 바인딩을 구성합니다. 예를 들면 다음과 같습니다.

    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=my-smtp:add(host=localhost, port=25)
    Copy to Clipboard Toggle word wrap
    /subsystem=mail/mail-session=mySession:add(jndi-name=java:jboss/mail/MySession)
    Copy to Clipboard Toggle word wrap
    /subsystem=mail/mail-session=mySession/server=smtp:add(outbound-socket-binding-ref=my-smtp, username=user, password=pass, tls=true)
    Copy to Clipboard Toggle word wrap
  2. 애플리케이션 내에서 구성된 메일 세션 호출

    @Resource(lookup="java:jboss/mail/MySession")
    private Session session;
    Copy to Clipboard Toggle word wrap

메일 세션 및 서버를 구성하는 데 사용할 수 있는 속성의 전체 목록은 mail Cryo stat 특성을 참조하십시오.

10.2. 사용자 정의 전송 구성

POP3 또는 Cryostat와 같은 표준 메일 서버를 사용하는 경우 메일 서버에는 정의할 수 있는 속성 세트가 있습니다. 이러한 속성 중 일부는 필수입니다. 이 중 가장 중요한 것은 아웃바운드 메일 소켓 바인딩에 대한 참조이며 호스트 주소 및 포트 번호로 정의된 outbound-socket-binding-ref 입니다.

outbound-socket-binding-ref 를 정의하면 부하 분산을 위해 여러 호스트를 사용하여 호스트 구성을 사용하는 사용자에게 가장 효과적인 솔루션이 아닐 수 있습니다. 표준 Java Cryostat는 로드 밸런싱을 위해 여러 호스트를 사용하는 호스트 구성을 지원하지 않습니다. 따라서 여러 호스트를 사용하여 이 구성이 있는 사용자는 사용자 정의 메일 전송을 구현해야 합니다. 이러한 사용자 정의 메일 전송에는 outbound-socket-binding-ref 가 필요하지 않으며 사용자 정의 호스트 속성 형식을 허용합니다.

관리 CLI에서 사용자 정의 메일 전송을 구성할 수 있습니다.

  1. 새 메일 세션을 추가하고 JNDI 이름을 지정합니다.

    /subsystem=mail/mail-session=mySession:add(jndi-name=java:jboss/mail/MySession)
    Copy to Clipboard Toggle word wrap
  2. 아웃바운드 소켓 바인딩을 추가하고 호스트 및 포트를 지정합니다.

    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=my-smtp-binding:add(host=localhost, port=25)
    Copy to Clipboard Toggle word wrap
  3. SMTP 서버를 추가하고 아웃바운드 소켓 바인딩, 사용자 이름 및 암호를 지정합니다.

    /subsystem=mail/mail-session=mySession/server=smtp:add(outbound-socket-binding-ref=my-smtp-binding, username=user, password=pass, tls=true)
    Copy to Clipboard Toggle word wrap
참고

유사한 단계를 사용하여 POP3 또는 Cryostat 서버를 구성할 수 있습니다.

POP3 서버

/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=my-pop3-binding:add(host=localhost, port=110)
/subsystem=mail/mail-session=mySession/server=pop3:add(outbound-socket-binding-ref=my-pop3-binding, username=user, password=pass)
Copy to Clipboard Toggle word wrap

Cryostat 서버

/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=my-imap-binding:add(host=localhost, port=143)
/subsystem=mail/mail-session=mySession/server=imap:add(outbound-socket-binding-ref=my-imap-binding, username=user, password=pass)
Copy to Clipboard Toggle word wrap

사용자 지정 서버를 사용하려면 아웃바운드 소켓 바인딩 없이 사용자 지정 메일 서버를 만듭니다. 사용자 정의 메일 서버의 속성 정의에 호스트 정보를 지정할 수 있습니다. 예를 들면 다음과 같습니다.

/subsystem=mail/mail-session=mySession/custom=myCustomServer:add(username=user,password=pass, properties={"host" => "myhost", "my-property" =>"value"})
Copy to Clipboard Toggle word wrap

사용자 지정 프로토콜을 정의하는 경우 마침표(.)를 포함하는 모든 속성 이름은 정규화된 이름으로 간주되며 직접 전달됩니다. my-property 와 같은 다른 형식은 mail.server-name.my-property 형식으로 변환됩니다.

다음 XML은 사용자 지정 서버를 포함하는 메일 구성의 예입니다.

<subsystem xmlns="urn:jboss:domain:mail:2.0">
   <mail-session name="default" jndi-name="java:jboss/mail/Default">
        <smtp-server outbound-socket-binding-ref="mail-smtp"/>
   </mail-session>
    <mail-session name="myMail" from="user.name@domain.org" jndi-name="java:/Mail">
        <smtp-server password="password" username="user" tls="true" outbound-socket-binding-ref="mail-smtp"/>
        <pop3-server outbound-socket-binding-ref="mail-pop3"/>
        <imap-server password="password" username="nobody" outbound-socket-binding-ref="mail-imap"/>
    </mail-session>
    <mail-session name="custom" jndi-name="java:jboss/mail/Custom" debug="true">
        <custom-server name="smtp" password="password" username="username">
            <property name="host" value="mail.example.com"/>
        </custom-server>
    </mail-session>
    <mail-session name="custom2" jndi-name="java:jboss/mail/Custom2" debug="true">
        <custom-server name="pop3" outbound-socket-binding-ref="mail-pop3">
            <property name="custom-prop" value="some-custom-prop-value"/>
        </custom-server>
    </mail-session>
</subsystem>
Copy to Clipboard Toggle word wrap

11장. 웹 서비스 구성

JBoss EAP는 관리 콘솔 또는 관리 CLI를 사용하여 웹 서비스 하위 시스템을 통해 배포된 웹 서비스 의 동작을 구성하는 기능을 제공합니다. 게시된 엔드포인트 주소 및 처리기 체인을 구성할 수 있습니다. 웹 서비스에 대한 런타임 통계 컬렉션을 활성화할 수도 있습니다.

자세한 내용은 Configuring the Web Services Applications in Developing Web Services Applications for JBoss EAP를 참조하십시오.

12장. JBoss EAP로 로깅

JBoss EAP는 내부 사용과 배포된 애플리케이션에서 사용하기 위해 고도로 구성 가능한 로깅 기능을 제공합니다. 로깅 하위 시스템은 JBoss LogManager를 기반으로 하며 JBoss Logging 외에도 여러 타사 애플리케이션 로깅 프레임워크를 지원합니다.

12.1. 서버 로깅 정보

12.1.1. 서버 로깅

기본적으로 모든 JBoss EAP 로그 항목은 server.log 파일에 작성됩니다. 이 파일의 위치는 작동 모드에 따라 다릅니다.

  • 독립 실행형 서버: EAP_HOME/standalone/log/server.log
  • 관리형 도메인: EAP_HOME/domain/servers/SERVER_NAME/log/server.log

이 파일은 종종 서버 로그라고 합니다. 자세한 내용은 Root Logger 섹션을 참조하십시오.

12.1.2. 부팅 로깅

부팅 중에 JBoss EAP는 Java 환경과 각 서비스의 시작에 대한 정보를 기록합니다. 이 로그는 문제 해결 시 유용할 수 있습니다. 기본적으로 모든 로그 항목은 서버 로그에 기록됩니다.

부트업 로깅 구성은 JBoss EAP 로깅 하위 시스템이 시작되고 대체될 때까지 활성화되는 logging.properties 구성 파일에 지정됩니다. 이 파일의 위치는 작동 모드에 따라 다릅니다.

  • 독립 실행형 서버: EAP_HOME/standalone/configuration/logging.properties
  • 관리형 도메인:

    도메인 컨트롤러와 각 서버에 대한 logging.properties 파일이 있습니다.

    • 도메인 컨트롤러: EAP_HOME/domain/configuration/logging.properties
    • 서버: EAP_HOME/domain/servers/SERVER_NAME/data/logging.properties
주의

필요한 특정 사용 사례를 알고 있지 않으면 logging.properties 파일을 직접 편집하지 않는 것이 좋습니다. 이 작업을 수행하기 전에 Red Hat 고객 포털에서 지원 케이스를 작성하는 것이 좋습니다.

logging.properties 파일에 수동으로 변경한 내용은 시작 시 덮어씁니다.

12.1.2.1. 부팅 오류 보기

JBoss EAP를 해결할 때 부팅 중에 발생한 오류를 확인하는 것이 첫 번째 단계 중 하나여야 합니다. 그런 다음 제공된 정보를 사용하여 원인을 진단하고 해결할 수 있습니다. 부팅 오류 문제 해결에 도움이 되도록 지원 케이스를 작성하십시오.

부팅 오류를 보는 방법에는 각각 장점이 있는 두 가지 방법이 있습니다. read-boot -errors 관리 CLI 명령을 사용하여 server.log 파일을 검사하거나 부팅 오류를 읽을 수 있습니다.

서버 로그 파일 검사

server.log 파일을 열어 부팅 중에 발생한 오류를 볼 수 있습니다.

이 방법을 사용하면 각 오류 메시지를 관련 메시지와 함께 볼 수 있으므로 오류가 발생한 이유에 대한 자세한 정보를 얻을 수 있습니다. 또한 일반 텍스트 형식으로 오류 메시지를 볼 수 있습니다.

  1. 파일 뷰어에서 파일 server.log 를 엽니다.
  2. 파일의 끝으로 이동합니다.
  3. 최신 부팅 순서의 시작을 표시하는 WFLYSRV0049 메시지 식별자가 뒤로 검색됩니다.
  4. 해당 시점부터 ERROR 인스턴스의 로그를 검색합니다. 각 인스턴스에는 오류에 대한 설명이 포함되어 있으며 관련 모듈을 나열합니다.

다음은 server.log 로그 파일의 오류 설명 예입니다.

2016-03-16 14:32:01,627 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed to start service jboss.undertow.listener.default: org.jboss.msc.service.StartException in service jboss.undertow.listener.default: Could not start http listener
        at org.wildfly.extension.undertow.ListenerService.start(ListenerService.java:142)
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.BindException: Address already in use
        ...
Copy to Clipboard Toggle word wrap
관리 CLI에서 부팅 오류 읽기

read-boot-errors 관리 CLI 명령을 사용하여 서버가 시작되었지만 부팅 중에 오류를 보고하면 오류를 볼 수 있습니다.

이 방법은 서버의 파일 시스템에 액세스할 필요가 없으며 파일 시스템 액세스 권한이 없는 오류를 모니터링하는 모든 사용자에게 유용합니다. 관리 CLI 명령이므로 스크립트에서 사용할 수 있습니다. 예를 들어 여러 JBoss EAP 인스턴스를 시작하는 스크립트를 작성한 다음 부팅 시 발생한 오류를 확인할 수 있습니다.

다음 관리 CLI 명령을 실행합니다.

/core-service=management:read-boot-errors
Copy to Clipboard Toggle word wrap

부팅 중에 발생한 모든 오류가 나열됩니다.

{
    "outcome" => "success",
    "result" => [
        {
            "failed-operation" => {
                "operation" => "add",
                "address" => [
                    ("subsystem" => "undertow"),
                    ("server" => "default-server"),
                    ("http-listener" => "default")
                ]
            },
            "failure-description" => "{\"WFLYCTL0080: Failed services\" => {\"jboss.undertow.listener.default\" => \"org.jboss.msc.service.StartException in service jboss.undertow.listener.default: Could not start http listener
    Caused by: java.net.BindException: Address already in use\"}}",
            "failed-services" => {"jboss.undertow.listener.default" => "org.jboss.msc.service.StartException in service jboss.undertow.listener.default: Could not start http listener
    Caused by: java.net.BindException: Address already in use"}
        }
        ...
    ]
}
Copy to Clipboard Toggle word wrap

12.1.3. 가비지 컬렉션 로깅

가비지 컬렉션 로깅은 모든 가비지 컬렉션 활동을 일반 텍스트 로그 파일에 기록합니다. 이러한 로그 파일은 진단 목적으로 유용할 수 있습니다. IBM Java 개발 키트를 제외한 지원되는 모든 구성에서 JBoss EAP 독립 실행형 서버에 대해 가비지 컬렉션 로깅이 기본적으로 활성화됩니다.

가비지 컬렉션 로그의 위치는 EAP_HOME/standalone/log/gc.log.DIGIT.current 입니다. 가비지 컬렉션 로그는 각각 3MB로 제한되며 최대 5개의 파일이 순환됩니다.

12.1.4. 기본 로그 파일 위치

다음 로그 파일은 기본 로깅 구성에 대해 생성됩니다. 기본 구성은 정기 로그 처리기를 사용하여 서버 로그 파일을 작성합니다.

Expand
표 12.1. 독립 실행형 서버의 기본 로그 파일
로그 파일설명

EAP_HOME/standalone/log/server.log

서버 시작 메시지를 포함하여 서버 로그 메시지를 포함합니다.

EAP_HOME/standalone/log/gc.log.DIGIT.current

가비지 컬렉션 세부 정보를 포함합니다.

Expand
표 12.2. 관리형 도메인의 기본 로그 파일
로그 파일설명

EAP_HOME/domain/log/host-controller.log

호스트 컨트롤러 시작과 관련된 로그 메시지를 포함합니다.

EAP_HOME/domain/log/process-controller.log

프로세스 컨트롤러 시작과 관련된 로그 메시지를 포함합니다.

EAP_HOME/domain/servers/SERVER_NAME/log/server.log

서버 시작 메시지를 포함하여 이름이 지정된 서버에 대한 로그 메시지를 포함합니다.

12.1.5. 서버의 기본 로케일을 설정합니다.

적절한 시작 구성 파일에서 JVM 속성을 설정하여 JBoss EAP의 기본 로케일을 구성할 수 있습니다. 시작 구성 파일은 독립 실행형 서버의 경우 EAP_HOME/bin/standalone.conf 이거나 관리형 도메인의 EAP_HOME/bin/domain.conf 입니다.

참고

Windows Server의 경우 JBoss EAP 시작 구성 파일은 standalone.conf.extension 및 domain.conf.extension 입니다.

국제화 및 지역화된 로그 메시지는 이 기본 로케일을 사용합니다. 국제화된 로그 메시지 생성에 대한 자세한 내용은 JBoss EAP 개발 가이드를 참조하십시오.

언어 설정

JAVA_OPTS 변수를 사용하여 user. language 를 설정하여 지정합니다. 예를 들어 시작 구성 파일에 다음 행을 추가하여 프랑스어 로케일을 설정합니다.

JAVA_OPTS="$JAVA_OPTS -Duser.language=fr"
Copy to Clipboard Toggle word wrap

국제화 및 지역화된 로그 메시지는 이제 프랑스어로 출력됩니다.

언어 설정

언어 외에도 user.country 속성을 설정하여 국가를 지정해야 할 수도 있습니다. 예를 들어 시작 구성 파일에 다음 행을 추가하여 브라질의 포르투갈어 로케일을 설정합니다.

JAVA_OPTS="$JAVA_OPTS -Duser.language=pt -Duser.country=BR"
Copy to Clipboard Toggle word wrap

국제화 및 현지화된 로그 메시지는 이제 브라질 포르투갈어로 출력됩니다.

org.jboss.logging.locale 속성을 사용하여 Server Locale 설정

JBoss EAP의 모든 메시지 및 해당 종속 항목을 포함하여 JBoss Logging을 사용하여 기록된 메시지의 로케일을 재정의하도록 org.jboss.logging.locale 속성을 구성할 수 있습니다. Cryostat와 같은 기타 종속 항목은 재정의된 로케일을 가져올 수 없습니다.

시스템 기본값과 다른 로케일로 JBoss EAP 서버를 시작하려면 운영 모드에 따라 EAP_HOME/bin/standalone.conf 또는 EAP_HOME/bin/domain.conf 파일을 편집하고 다음 명령을 추가하여 필요한 로케일에 대한 JVM 매개 변수를 설정할 수 있습니다. 속성 값은 BCP 47 형식으로 지정해야 합니다. 예를 들어, 브라질 포르투갈어를 설정하려면 pt-BR을 사용합니다.

JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.logging.locale=pt-BR"
Copy to Clipboard Toggle word wrap

12.2. 로그 파일 보기

서버 및 애플리케이션 로그를 보는 것은 오류, 성능 문제 및 기타 문제를 진단하는 데 도움이 되도록 중요합니다. 일부 사용자는 서버 파일 시스템에서 직접 로그를 보는 것을 선호할 수 있습니다. 파일 시스템에 직접 액세스할 수 없거나 그래픽 인터페이스를 선호하는 사용자의 경우 JBoss EAP를 사용하면 관리 콘솔에서 로그를 볼 수 있습니다. 관리 CLI를 사용하여 로그를 볼 수도 있습니다.

관리 인터페이스 중 하나에서 로그에 액세스하려면 서버의 jboss.server.log.dir 속성에서 지정한 디렉터리에 있어야 하며 파일, 주기적 회전, 크기 회전 또는 주기적인 크기 회전 로그 처리기로 정의되어야 합니다. RBAC 역할 할당도 지원되므로 관리 콘솔 또는 CLI에 로그인한 사용자는 액세스할 수 있는 로그만 볼 수 있습니다.

관리 콘솔에서 로그 보기

관리 콘솔에서 직접 로그를 볼 수 있습니다.

  • 런타임 탭을 선택합니다.
  • 독립 실행형 서버 를 선택합니다. 관리형 도메인에서 실행 중인 경우 적절한 서버를 선택합니다.
  • 로그 파일을 선택하고 보기를 클릭합니다.

목록에서 로그 파일을 선택하면 관리 콘솔에서 직접 로그 콘텐츠를 보고 검색할 수 있습니다. 로그 파일을 로컬 파일 시스템으로 다운로드할 수도 있습니다.

주의

관리 콘솔 로그 뷰어는 매우 큰 로그 파일(예: 100MB)을 보기 위한 텍스트 편집기 대체가 아닙니다. 15MB보다 큰 로그 파일을 열려고 하면 확인 메시지가 표시됩니다. 관리 콘솔에서 매우 큰 파일을 열면 브라우저가 충돌할 수 있으므로 항상 대용량 로그 파일을 로컬로 다운로드하여 텍스트 편집기에서 열어야 합니다.

관리 CLI에서 로그 보기

read-log-file 명령을 사용하여 관리 CLI에서 로그 파일의 내용을 읽을 수 있습니다. 기본적으로 지정된 로그 파일의 마지막 10 행이 표시됩니다.

/subsystem=logging/log-file=LOG_FILE_NAME:read-log-file
Copy to Clipboard Toggle word wrap
참고

관리형 도메인에서 이 명령 앞에 /host=HOST_NAME/server=SERVER_NAME.

다음 매개변수를 사용하여 로그 출력을 사용자 지정할 수 있습니다.

인코딩
파일을 읽는 데 사용되는 문자 인코딩입니다.
라인
파일에서 읽을 행 수입니다. 값 -1 은 모든 로그 행을 읽습니다. 기본값은 10입니다.
skip
읽기 전에 건너뛸 행 수입니다. 기본값은 0입니다.
tail
파일의 끝에서 읽을 지 여부입니다. 기본값은 true 입니다.

예를 들어 다음 관리 CLI 명령은 server.log 로그 파일의 상단에서 처음 5 행을 읽습니다.

/subsystem=logging/log-file=server.log:read-log-file(lines=5,tail=false)
Copy to Clipboard Toggle word wrap

이렇게 하면 다음 출력이 생성됩니다.

{
    "outcome" => "success",
    "result" => [
        "2016-03-24 08:49:26,612 INFO  [org.jboss.modules] (main) JBoss Modules version 1.5.1.Final-redhat-1",
        "2016-03-24 08:49:26,788 INFO  [org.jboss.msc] (main) JBoss MSC version 1.2.6.Final-redhat-1",
        "2016-03-24 08:49:26,863 INFO  [org.jboss.as] (MSC service thread 1-7) WFLYSRV0049: JBoss EAP 7.0.0.GA (WildFly Core 2.0.13.Final-redhat-1) starting",
        "2016-03-24 08:49:27,973 INFO  [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0039: Creating http management service using socket-binding (management-http)",
        "2016-03-24 08:49:27,994 INFO  [org.xnio] (MSC service thread 1-1) XNIO version 3.3.4.Final-redhat-1"
    ]
}
Copy to Clipboard Toggle word wrap

12.3. 로깅 정보

JBoss EAP 로깅 하위 시스템은 로그 카테고리 및 로그 처리기 시스템을 사용하여 구성됩니다. 로그 카테고리는 캡처할 메시지를 정의합니다. 로그 처리기는 해당 메시지를 처리하는 방법을 정의합니다(예: 디스크에 쓰거나 콘솔에 전송하는 방법).

로깅 프로필을 사용하면 고유하게 이름이 지정된 로깅 구성 세트를 다른 로깅 구성과 무관하게 애플리케이션에 할당하고 할당할 수 있습니다. 로깅 프로필 구성은 기본 로깅 하위 시스템과 거의 동일합니다.

12.3.1. Root Logger

JBoss EAP 루트 로거는 로그 카테고리에서 캡처하지 않는 서버로 전송된 지정된 로그 수준 이상의 모든 로그 메시지를 캡처합니다.

기본적으로 루트 로거는 콘솔과 주기적인 로그 처리기를 사용하도록 구성됩니다. 정기 로그 처리기는 server.log 파일에 기록하도록 구성됩니다. 이 파일은 종종 서버 로그라고 합니다.

자세한 내용은 루트 로거 구성을 참조하십시오.

12.3.2. 로그 카테고리

로그 카테고리는 캡처할 로그 메시지 세트와 메시지를 처리할 하나 이상의 로그 처리기를 정의합니다.

캡처할 로그 메시지는 origin 및 log 수준의 지정된 Java 패키지로 정의됩니다. 해당 패키지 및 해당 로그 수준 이상의 클래스의 메시지는 로그 카테고리에 의해 캡처되고 지정된 로그 처리기로 전송됩니다.

참고

로그 카테고리는 일반적으로 Java 패키지 및 클래스 이름이지만 Logger.getLogger(LOGGER_NAME) 메서드에서 지정하는 모든 이름일 수 있습니다.

로그 카테고리는 선택적으로 자체 처리기 대신 루트 로거의 로그 처리기를 사용할 수 있습니다.

자세한 내용은 로그 카테고리 구성 을 참조하십시오.

12.3.3. 로그 처리기

로그 처리기는 캡처된 로그 메시지가 기록되는 방식을 정의합니다. 사용 가능한 로그 처리기 유형은 console,file, periodic , size ,periodic size,periodic size,syslog,custom, async 입니다.

참고

활성화하려면 로그 처리기를 하나 이상의 로거에 추가해야 합니다.

로그 처리기 유형
콘솔
콘솔 로그 처리기는 호스트 운영 체제의 표준 아웃(stdout) 또는 표준 오류(stderr) 스트림에 로그 메시지를 씁니다. 이러한 메시지는 JBoss EAP가 명령줄 프롬프트에서 실행되면 표시됩니다. 콘솔 로그 처리기의 메시지는 표준 출력 또는 표준 오류 스트림을 캡처하도록 운영 체제를 구성하지 않는 한 저장되지 않습니다.
파일
파일 로그 처리기는 지정된 파일에 로그 메시지를 씁니다.
주기
주기적인 로그 처리기는 지정된 기간이 경과될 때까지 이름이 지정된 파일에 로그 메시지를 씁니다. 시간 기간이 전달되면 지정된 타임스탬프를 추가하여 파일의 이름을 바꾸고 처리기는 원래 이름을 사용하여 새로 생성된 로그 파일에 계속 씁니다.
크기
크기 로그 처리기는 파일이 지정된 크기에 도달할 때까지 이름이 지정된 파일에 로그 메시지를 씁니다. 파일이 지정된 크기에 도달하면 숫자 접미사로 이름이 변경되고 처리기는 원래 이름을 사용하여 새로 생성된 로그 파일에 계속 씁니다. 각 크기 로그 처리기는 이 방식으로 보관할 최대 파일 수를 지정해야 합니다.
주기 크기

주기적인 크기 로그 처리기는 파일이 지정된 크기에 도달 하거나 지정된 기간이 경과할 때까지 이름이 지정된 파일에 로그 메시지를 씁니다. 그런 다음 파일의 이름이 변경되고 처리기는 원래 이름으로 새로 생성된 로그 파일에 계속 씁니다.

이는 주기적 및 크기 로그 처리기의 조합이며 결합된 속성을 지원합니다.

Syslog
syslog 처리기는 메시지를 원격 로깅 서버로 보내는 데 사용할 수 있습니다. 이를 통해 여러 애플리케이션이 동일한 서버로 로그 메시지를 보낼 수 있으며, 여기에서 모두 함께 구문 분석할 수 있습니다.
사용자 지정
사용자 지정 로그 처리기를 사용하면 구현된 새 유형의 로그 처리기를 구성할 수 있습니다. 사용자 지정 처리기는 java.util.logging.Handler 를 확장하고 모듈에 포함된 Java 클래스로 구현해야 합니다. Log4J appender를 사용자 지정 로그 처리기로 사용할 수도 있습니다.
Async
비동기 로그 처리기는 하나 이상의 다른 로그 처리기에 대한 비동기 동작을 제공하는 래퍼 로그 처리기입니다. 이 기능은 대기 시간이 길거나 네트워크 파일 시스템에 로그 파일 쓰기와 같은 기타 성능 문제가 있을 수 있는 로그 처리기에 유용합니다.

이러한 각 로그 처리기 구성에 대한 자세한 내용은 로그 처리기 구성 섹션을 참조하십시오.

12.3.4. 로그 수준

로그 수준은 로그 메시지의 특성 및 심각도를 나타내는 열거된 값입니다. 개발자는 메시지를 보내는 데 선택한 로깅 프레임워크의 적절한 방법을 사용하여 지정된 로그 메시지의 수준을 지정할 수 있습니다.

JBoss EAP는 지원되는 애플리케이션 로깅 프레임워크에서 사용하는 모든 로그 수준을 지원합니다. 가장 일반적으로 사용되는 로그 수준은 TRACE,DEBUG,INFO,WARN,ERRORFATAL 입니다.

로그 수준은 로그 카테고리 및 핸들러에서 담당하는 메시지를 제한하는 데 사용됩니다. 각 로그 수준에는 다른 로그 수준에 대한 상대적 순서를 나타내는 숫자 값이 할당됩니다. 로그 카테고리 및 핸들러에는 로그 수준이 할당되며 해당 수준 이상의 로그 메시지만 처리합니다. 예를 들어 WARN 수준이 있는 로그 처리기는 수준 WARN ,ERRORFATAL 의 메시지만 기록합니다.

지원되는 로그 수준
Expand
로그 수준현재의설명

ALL

Integer.MIN_VALUE

모든 로그 메시지를 제공합니다.

BESTST

300

-

FINER

400

-

TRACE

400

TRACE 수준 로그 메시지는 애플리케이션 실행 상태에 대한 자세한 정보를 제공하며 일반적으로 디버깅 중에만 캡처됩니다.

DEBUG

500

DEBUG 수준 로그 메시지는 개별 요청 또는 애플리케이션 작업의 진행 상황을 나타내며 일반적으로 디버깅 중에만 캡처됩니다.

OK

500

-

CONFIG

700

-

INFO

800

INFO 수준 로그 메시지는 애플리케이션의 전체 진행 상황을 나타냅니다. 애플리케이션 시작, 종료 및 기타 주요 라이프사이클 이벤트에 자주 사용됩니다.

WARN

900

WARN 수준 로그 메시지는 오류가 아니지만 이상적이지 않은 상황을 나타냅니다. WARN 로그 메시지는 향후 오류가 발생할 수 있는 상황을 나타낼 수 있습니다.

경고

900

-

ERROR

1000

ERROR 수준 로그 메시지는 현재 활동이나 요청이 완료되지 못하지만 애플리케이션이 실행되지 않도록 하는 오류가 있음을 나타냅니다.

심각

1000

-

FATAL

1100

FATAL 수준 로그 메시지는 중요한 서비스 오류 및 애플리케이션 종료를 유발하고 JBoss EAP를 종료할 수 있는 이벤트를 나타냅니다.

OFF

Integer.MAX_VALUE

로그 메시지를 표시하지 않습니다.

참고

ALL 은 가장 낮은 로그 수준이며 모든 로그 수준의 메시지를 포함합니다. 이는 가장 많은 로깅을 제공합니다.

FATAL 은 가장 높은 로그 수준이며 해당 수준의 메시지만 포함합니다. 이는 최소 로깅 양을 제공합니다.

12.3.5. 로그 포맷

로그 포맷터는 해당 처리기의 로그 메시지 모양을 정의합니다. java.util.logging.Formatter 클래스를 기반으로 구문을 사용하는 문자열입니다.

예를 들어 기본 구성에서는 다음과 같은 로그 포맷터 문자열을 사용하여 서버 로그에 메시지를 로깅합니다. %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%t) %s%e%e%n. 그러면 아래에 표시된 것과 같은 로그 메시지가 생성됩니다.

2016-03-18 15:49:32,075 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
Copy to Clipboard Toggle word wrap

로그 포맷을 구성하는 방법에 대한 자세한 내용은 이름이 지정된 패턴 형식 구성 또는 사용자 지정 로그 포맷 구성 을 참조하십시오.

로그 포맷터 문자열에 사용되는 구문은 아래 표를 참조하십시오.

로그 형식 구문
Expand
기호설명

%c

로깅 이벤트의 범주입니다.

%p

로그 항목의 수준(INFO, DEBUG 등).

%P

로그 항목의 지역화된 수준입니다.

%d

현재 날짜/시간(yyy-MM-dd HH:mm:ss,SSS 형식)

%r

로그가 초기화된 이후의 상대 시간(밀리초)입니다.

%z

날짜(%d)보다 먼저 지정해야 하는 시간대입니다. 예를 들어 %z{GMT}%d{HH:mm:ss,SSS}.

%k

로그 메시지의 현지화에 사용되는 로그 리소스 키입니다.

%m

로그 메시지(예외 추적 포함).

%s

간단한 로그 메시지(예외 추적 없음).

%e

예외 스택 추적(확장된 모듈 정보 없음)

%E

예외 스택 추적(확장 모듈 정보 포함).

%t

현재 스레드의 이름입니다.

%n

줄 바꿈 문자입니다.

%C

로그 메서드를 호출하는 코드의 클래스입니다(낮음).

%F

로그 메서드를 호출하는 클래스의 파일 이름입니다(낮음).

%l

로그 메서드(아래)를 호출하는 코드의 소스 위치입니다.

%L

로그 메서드를 호출하는 코드의 행 번호입니다(낮음).

%M

로그 메서드를 호출하는 코드의 메서드입니다.

%x

중첩 진단 컨텍스트입니다.

%X

메시지 진단 컨텍스트입니다.

%%

리터럴 백분율(%) 문자(예: 이스케이프)입니다.

12.3.6. 필터 표현식

filter-spec 특성을 사용하여 구성된 필터 표현식은 다양한 기준에 따라 로그 메시지를 기록하는 데 사용됩니다. 필터 검사는 항상 포맷되지 않은 원시 메시지에서 수행됩니다. 로거 또는 처리기에 대한 필터를 포함할 수 있지만 로거 필터는 처리기에 배치된 필터보다 우선합니다.

참고

루트 로거에 대해 지정된 필터 사양 은 다른 로거에 상속되지 않습니다. 대신 처리기당 필터 사양 을 지정해야 합니다.

Expand
표 12.3. 로깅을 위한 필터 표현식
필터 표현식설명

accept

모든 로그 메시지를 수락합니다.

deny

모든 로그 메시지를 거부합니다.

not[filter 표현식]

단일 필터 표현식의 반전된 값을 반환합니다. 예를 들면 다음과 같습니다.

not(match("WFLY"))

all[filter expression]

쉼표로 구분된 필터 표현식 목록에서 연결 값을 반환합니다. 예를 들면 다음과 같습니다.

all(match("WFLY"),match("WELD"))

any[filter expression]

쉼표로 구분된 필터 표현식 목록에서 하나의 값을 반환합니다. 예를 들면 다음과 같습니다.

any(match("WFLY"),match("WELD"))

levelChange[level]

지정된 수준으로 로그 레코드를 업데이트합니다. 예를 들면 다음과 같습니다.

levelChange(WARN)

levels[levels]

쉼표로 구분된 수준 목록에 나열된 수준으로 로그 메시지를 필터링합니다. 예를 들면 다음과 같습니다.

levels(DEBUG,INFO,WARN,ERROR)

levelRange[minLevel,maxLevel]

지정된 수준 범위 내에서 로그 메시지를 필터링합니다. [] 문자는 포함 수준을 나타내는 데 사용됩니다. () 문자는 배타적 수준을 나타내는 데 사용됩니다. 예를 들면 다음과 같습니다.

  • levelRange[INFO,ERROR]

    • 최소 수준은 INFO 보다 크거나 같아야 하며 최대 수준은 ERROR 보다 작거나 같아야 합니다.
  • levelRange[DEBUG,ERROR)

    • 최소 수준은 DEBUG 보다 크거나 같아야 하며 최대 수준은 ERROR 보다 작아야 합니다.

match["pattern"]

제공된 정규식을 사용하여 로그 메시지를 필터링합니다. 예를 들면 다음과 같습니다.

match("WFLY\d+")

substitute["pattern","replacement value"]

패턴(first argument)에 첫 번째 일치 항목을 대체 텍스트(두 번째 인수)로 대체하는 필터입니다. 예를 들면 다음과 같습니다.

substitute("WFLY","EAP")

substituteAll["pattern","replacement value"]

패턴(first argument)의 모든 일치 항목을 대체 텍스트(두 번째 인수)로 대체하는 필터입니다. 예를 들면 다음과 같습니다.

substituteAll("WFLY","EAP")

참고

관리 CLI를 사용하여 필터 표현식을 구성할 때 값이 문자열로 올바르게 처리되도록 필터 텍스트에서 쉼표와 따옴표를 이스케이프해야 합니다. 쉼표와 따옴표 앞에 백슬래시(\)를 사용하고 전체 표현식을 따옴표로 래핑해야 합니다. 다음은 적절하게 이스케이프하는 예제입니다 All("WFLY","YLFW").

/subsystem=logging/console-handler=CONSOLE:write-attribute(name=filter-spec, value="substituteAll(\"WFLY\"\,\"YLFW\")")
Copy to Clipboard Toggle word wrap

12.3.7. 암시적 로깅 종속 항목

기본적으로 JBoss EAP 로깅 하위 시스템은 암시적 로깅 API 종속 항목을 배포에 추가합니다. add-logging-api-dependencies 특성을 사용하여 이러한 암시적 종속성이 배포에 추가되는지 여부를 기본적으로 제어할 수 있습니다.

관리 CLI를 사용하여 암시적 로깅 API 종속 항목이 배포에 추가되지 않도록 add-logging-api-dependencies 속성을 false 로 설정할 수 있습니다.

/subsystem=logging:write-attribute(name=add-logging-api-dependencies, value=false)
Copy to Clipboard Toggle word wrap

로깅 하위 시스템의 암시적 종속 항목에 대한 자세한 내용은 JBoss EAP 개발 가이드의 Implicit 모듈 종속 항목 섹션을 참조하십시오.

12.4. 로그 카테고리 구성

이 섹션에서는 관리 CLI를 사용하여 로그 카테고리를 구성하는 방법을 보여줍니다. 구성 탭에서 로깅 하위 시스템으로 이동하고 로그 범주 탭을 선택하여 관리 콘솔을 사용하여 로그 범주를 구성할 수도 있습니다.

로그 카테고리를 구성하기 위해 수행할 주요 작업은 다음과 같습니다.

중요

로깅 프로필에 대해 이 로그 카테고리를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

로그 카테고리 추가

로그 카테고리 이름은 origin의 Java 패키지로 정의됩니다. 해당 패키지에 있는 클래스의 메시지는 다른 설정을 준수하는 한 캡처됩니다(예: 로그 수준).

/subsystem=logging/logger=LOG_CATEGORY:add
Copy to Clipboard Toggle word wrap
로그 카테고리 설정 구성

필요에 따라 다음 로그 카테고리 속성 중 하나 이상을 설정해야 할 수 있습니다. 사용 가능한 로그 범주 속성 및 해당 설명의 전체 목록은 로그 범주 특성을 참조하십시오.

  • 로그 수준을 설정합니다.

    로그 카테고리에 적절한 로그 수준을 설정합니다. 기본값은 ALL 입니다. 사용 가능한 모든 옵션은 로그 수준을 참조하십시오.

    /subsystem=logging/logger=LOG_CATEGORY:write-attribute(name=level,value=LEVEL)
    Copy to Clipboard Toggle word wrap
  • 이 카테고리에서 루트 로거의 로그 처리기를 사용해야 하는지 여부를 설정합니다.

    기본적으로 로그 카테고리는 자체 외에도 루트 로거의 처리기를 사용합니다. 로그 카테고리에서 할당된 핸들러만 사용해야 하는 경우 use-parent-handlers 속성을 false 로 설정합니다.

    /subsystem=logging/logger=LOG_CATEGORY:write-attribute(name=use-parent-handlers,value=USE_PARENT_HANDLERS)
    Copy to Clipboard Toggle word wrap
  • 필터 표현식을 설정합니다.

    로그 카테고리의 로그 메시지를 필터링하기 위한 표현식을 설정합니다. 쉼표와 따옴표로 이스케이프하고 따옴표로 묶어야 합니다. 예를 들어 아래 FILTER_EXPRESSION 대체 가능한 변수는 not(match("WFLY")의 필터 표현식에 대해 " not(match(\ "WFLY\")" 로 교체해야 합니다.

    /subsystem=logging/logger=LOG_CATEGORY:write-attribute(name=filter-spec, value=FILTER_EXPRESSION)
    Copy to Clipboard Toggle word wrap

    사용 가능한 필터 식에 대한 자세한 내용은 식 필터링 섹션을 참조하십시오.

처리기 할당

로그 카테고리에 로그 처리기를 할당합니다.

/subsystem=logging/logger=LOG_CATEGORY:add-handler(name=LOG_HANDLER_NAME)
Copy to Clipboard Toggle word wrap
로그 카테고리 제거

제거 작업을 통해 로그 카테고리를 제거할 수 있습니다.

/subsystem=logging/logger=LOG_CATEGORY:remove
Copy to Clipboard Toggle word wrap

12.5. 로그 처리기 구성

로그 처리기는 캡처된 로그 메시지가 기록되는 방식을 정의합니다. 필요한 로그 처리기 유형을 구성하려면 적절한 섹션을 참조하십시오.

12.5.1. 콘솔 로그 처리기 구성

이 섹션에서는 관리 CLI를 사용하여 콘솔 로그 처리기를 구성하는 방법을 보여줍니다. 구성 탭에서 로깅 하위 시스템으로 이동하여 Handler 탭을 선택하고 왼쪽 메뉴에서 Console 을 선택하여 관리 콘솔을 사용하여 콘솔 로그 처리기를 구성할 수도 있습니다.

콘솔 로그 처리기를 구성하기 위해 수행할 주요 작업은 다음과 같습니다.

중요

로깅 프로필에 대해 이 로그 처리기를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

콘솔 로그 처리기 추가
/subsystem=logging/console-handler=CONSOLE_HANDLER_NAME:add
Copy to Clipboard Toggle word wrap
콘솔 로그 처리기 설정 구성

필요에 따라 다음 콘솔 로그 처리기 특성 중 하나 이상을 설정해야 할 수 있습니다. 사용 가능한 콘솔 로그 처리기 속성 및 해당 설명의 전체 목록은 콘솔 로그 처리기 특성을 참조하십시오.

  • 로그 수준을 설정합니다.

    처리기에 적절한 로그 수준을 설정합니다. 기본값은 ALL 입니다. 사용 가능한 모든 옵션은 로그 수준을 참조하십시오.

    /subsystem=logging/console-handler=CONSOLE_HANDLER_NAME:write-attribute(name=level,value=LEVEL)
    Copy to Clipboard Toggle word wrap
  • 대상을 설정합니다.

    System.out,System.err 또는 콘솔 중 하나일 수 있는 처리기의 대상을 설정합니다. 기본값은 System.out 입니다.

    /subsystem=logging/console-handler=CONSOLE_HANDLER_NAME:write-attribute(name=target,value=TARGET)
    Copy to Clipboard Toggle word wrap
  • 인코딩을 설정합니다.

    처리기의 인코딩을 설정합니다(예: utf-8 ).

    /subsystem=logging/console-handler=CONSOLE_HANDLER_NAME:write-attribute(name=encoding,value=ENCODING)
    Copy to Clipboard Toggle word wrap
  • 로그 포맷터를 설정합니다.

    처리기의 포맷터 문자열을 설정합니다. 예를 들어 기본 형식 문자열은 %d{HH:mm:ss,SSS} %-5p [%t] (%t) %s%e%n 입니다. FORMAT 값을 따옴표로 묶어야 합니다.

    /subsystem=logging/console-handler=CONSOLE_HANDLER_NAME:write-attribute(name=formatter,value=FORMAT)
    Copy to Clipboard Toggle word wrap
    참고
  • 자동 플러시를 설정합니다.

    각 쓰기 후 자동으로 플러시할지 여부를 설정합니다. 기본값은 true입니다.

    /subsystem=logging/console-handler=CONSOLE_HANDLER_NAME:write-attribute(name=autoflush,value=AUTO_FLUSH)
    Copy to Clipboard Toggle word wrap
  • 필터 표현식을 설정합니다.

    처리기의 로그 메시지를 필터링하기 위한 표현식을 설정합니다. 쉼표와 따옴표로 이스케이프하고 따옴표로 묶어야 합니다. 예를 들어 아래 FILTER_EXPRESSION 대체 가능한 변수는 not(match("WFLY")의 필터 표현식에 대해 " not(match(\ "WFLY\")" 로 교체해야 합니다.

    /subsystem=logging/console-handler=CONSOLE_HANDLER_NAME:write-attribute(name=filter-spec, value=FILTER_EXPRESSION)
    Copy to Clipboard Toggle word wrap

    사용 가능한 필터 식에 대한 자세한 내용은 식 필터링 섹션을 참조하십시오.

Log Handler를 Log Handler에 할당

로그 처리기를 활성화하려면 로거에 할당해야 합니다.

다음 관리 CLI 명령은 콘솔 로그 처리기를 루트 로거에 할당합니다.

/subsystem=logging/root-logger=ROOT:add-handler(name=CONSOLE_HANDLER_NAME)
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령은 CATEGORY 에서 지정하는 이름을 가진 로거에 콘솔 로그 처리기를 할당합니다.

/subsystem=logging/logger=CATEGORY:add-handler(name=CONSOLE_HANDLER_NAME)
Copy to Clipboard Toggle word wrap
콘솔 로그 처리기 제거

제거 작업을 사용하여 로그 처리기를 제거할 수 있습니다. 현재 로거 또는 async 로그 처리기에 할당된 경우 로그 처리기를 제거할 수 없습니다.

/subsystem=logging/console-handler=CONSOLE_HANDLER_NAME:remove
Copy to Clipboard Toggle word wrap

12.5.2. 파일 로그 처리기 구성

이 섹션에서는 관리 CLI를 사용하여 파일 로그 처리기를 구성하는 방법을 보여줍니다. 구성 탭에서 로깅 하위 시스템으로 이동하여 Handler 탭을 선택하고 왼쪽 메뉴에서 File 을 선택하여 관리 콘솔을 사용하여 파일 로그 처리기를 구성할 수도 있습니다.

파일 로그 처리기를 구성하기 위해 수행할 주요 작업은 다음과 같습니다.

중요

로깅 프로필에 대해 이 로그 처리기를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

파일 로그 처리기 추가

파일 로그 처리기를 추가할 때 경로 및 relative-to 속성으로 구성된 file 속성을 사용하여 파일 경로를 지정해야 합니다. 경로 속성을 사용하여 이름을 포함하여 로그의 파일 경로를 설정합니다(예: my-log.log ). 선택적으로 relative-to 특성을 사용하여 경로가 이름이 지정된 경로 (예: jboss.server.log.dir )에 상대적으로 설정되도록 설정합니다.

/subsystem=logging/file-handler=FILE_HANDLER_NAME:add(file={path=FILE_PATH,relative-to=RELATIVE_TO_PATH})
Copy to Clipboard Toggle word wrap
파일 로그 처리기 설정 구성

필요에 따라 다음 파일 로그 처리기 특성 중 하나 이상을 설정해야 할 수 있습니다. 사용 가능한 파일 로그 처리기 속성 및 해당 설명의 전체 목록은 파일 로그 처리기 특성을 참조하십시오.

  • 로그 수준을 설정합니다.

    처리기에 적절한 로그 수준을 설정합니다. 기본값은 ALL 입니다. 사용 가능한 모든 옵션은 로그 수준을 참조하십시오.

    /subsystem=logging/file-handler=FILE_HANDLER_NAME:write-attribute(name=level,value=LEVEL)
    Copy to Clipboard Toggle word wrap
  • 추가 동작을 설정합니다.

    기본적으로 JBoss EAP는 서버를 다시 시작할 때 동일한 파일에 로그 메시지를 추가합니다. 서버를 다시 시작할 때 파일을 덮어쓰도록 하려면 append 속성을 false 로 설정할 수 있습니다.

    /subsystem=logging/file-handler=FILE_HANDLER_NAME:write-attribute(name=append,value=APPEND)
    Copy to Clipboard Toggle word wrap
  • 인코딩을 설정합니다.

    처리기의 인코딩을 설정합니다(예: utf-8 ).

    /subsystem=logging/file-handler=FILE_HANDLER_NAME:write-attribute(name=encoding,value=ENCODING)
    Copy to Clipboard Toggle word wrap
  • 로그 포맷터를 설정합니다.

    처리기의 포맷터 문자열을 설정합니다. 예를 들어 기본 형식 문자열은 %d{HH:mm:ss,SSS} %-5p [%t] (%t) %s%e%n 입니다. FORMAT 값을 따옴표로 묶어야 합니다.

    /subsystem=logging/file-handler=FILE_HANDLER_NAME:write-attribute(name=formatter,value=FORMAT)
    Copy to Clipboard Toggle word wrap
    참고
  • 자동 플러시를 설정합니다.

    각 쓰기 후 자동으로 플러시할지 여부를 설정합니다. 기본값은 true입니다.

    /subsystem=logging/file-handler=FILE_HANDLER_NAME:write-attribute(name=autoflush,value=AUTO_FLUSH)
    Copy to Clipboard Toggle word wrap
  • 필터 표현식을 설정합니다.

    처리기의 로그 메시지를 필터링하기 위한 표현식을 설정합니다. 쉼표와 따옴표로 이스케이프하고 따옴표로 묶어야 합니다. 예를 들어 아래 FILTER_EXPRESSION 대체 가능한 변수는 not(match("WFLY")의 필터 표현식에 대해 " not(match(\ "WFLY\")" 로 교체해야 합니다.

    /subsystem=logging/file-handler=FILE_HANDLER_NAME:write-attribute(name=filter-spec, value=FILTER_EXPRESSION)
    Copy to Clipboard Toggle word wrap

    사용 가능한 필터 식에 대한 자세한 내용은 식 필터링 섹션을 참조하십시오.

Logger에 파일 로그 처리기 할당

로그 처리기를 활성화하려면 로거에 할당해야 합니다.

다음 관리 CLI 명령은 파일 로그 처리기를 루트 로거에 할당합니다.

/subsystem=logging/root-logger=ROOT:add-handler(name=FILE_HANDLER_NAME)
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령은 CATEGORY 에서 지정하는 이름을 가진 로거에 파일 로그 처리기를 할당합니다.

/subsystem=logging/logger=CATEGORY:add-handler(name=FILE_HANDLER_NAME)
Copy to Clipboard Toggle word wrap
파일 로그 처리기 제거

제거 작업을 사용하여 로그 처리기를 제거할 수 있습니다. 현재 로거 또는 async 로그 처리기에 할당된 경우 로그 처리기를 제거할 수 없습니다.

/subsystem=logging/file-handler=FILE_HANDLER_NAME:remove
Copy to Clipboard Toggle word wrap

12.5.3. Periodic Rotating Log Handler 구성

이 섹션에서는 관리 CLI를 사용하여 주기적인 회전 로그 처리기를 구성하는 방법을 보여줍니다. 구성 탭에서 로깅 하위 시스템으로 이동하여 Handler 탭을 선택하고 왼쪽 메뉴에서 Periodic 을 선택하여 관리 콘솔을 사용하여 주기적인 로그 처리기를 구성할 수도 있습니다.

주기적인 로그 처리기를 구성하기 위해 수행할 주요 작업은 다음과 같습니다.

중요

로깅 프로필에 대해 이 로그 처리기를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

Periodic Log Handler 추가

주기적인 로그 처리기를 추가할 때 경로 및 relative-to 속성으로 구성된 file 속성을 사용하여 파일 경로를 지정해야 합니다. 경로 속성을 사용하여 이름을 포함하여 로그의 파일 경로를 설정합니다(예: my-log.log ). 선택적으로 relative-to 특성을 사용하여 경로가 이름이 지정된 경로 (예: jboss.server.log.dir )에 상대적으로 설정되도록 설정합니다.

접미사 특성을 사용하여 순환된 로그의 접미사 도 설정해야 합니다. 이는 java.text.SimpleDateFormat 에서 이해할 수 있는 형식이어야 합니다(예: .yyyy-MM-dd-HH ). 순환 기간은 이 접미사에 따라 자동으로 계산됩니다.

/subsystem=logging/periodic-rotating-file-handler=PERIODIC_HANDLER_NAME:add(file={path=FILE_PATH,relative-to=RELATIVE_TO_PATH},suffix=SUFFIX)
Copy to Clipboard Toggle word wrap
Periodic Log Handler 설정 구성

필요에 따라 다음 주기 로그 처리기 특성 중 하나 이상을 설정해야 할 수 있습니다. 사용 가능한 주기적인 로그 처리기 속성 및 해당 설명의 전체 목록은 Periodic Log Handler 특성을 참조하십시오.

  • 로그 수준을 설정합니다.

    처리기에 적절한 로그 수준을 설정합니다. 기본값은 ALL 입니다. 사용 가능한 모든 옵션은 로그 수준을 참조하십시오.

    /subsystem=logging/periodic-rotating-file-handler=PERIODIC_HANDLER_NAME:write-attribute(name=level,value=LEVEL)
    Copy to Clipboard Toggle word wrap
  • 추가 동작을 설정합니다.

    기본적으로 JBoss EAP는 서버를 다시 시작할 때 동일한 파일에 로그 메시지를 추가합니다. 서버를 다시 시작할 때 파일을 덮어쓰도록 하려면 append 속성을 false 로 설정할 수 있습니다.

    /subsystem=logging/periodic-rotating-file-handler=PERIODIC_HANDLER_NAME:write-attribute(name=append,value=APPEND)
    Copy to Clipboard Toggle word wrap
  • 인코딩을 설정합니다.

    처리기의 인코딩을 설정합니다(예: utf-8 ).

    /subsystem=logging/periodic-rotating-file-handler=PERIODIC_HANDLER_NAME:write-attribute(name=encoding,value=ENCODING)
    Copy to Clipboard Toggle word wrap
  • 로그 포맷터를 설정합니다.

    처리기의 포맷터 문자열을 설정합니다. 예를 들어 기본 형식 문자열은 %d{HH:mm:ss,SSS} %-5p [%t] (%t) %s%e%n 입니다. FORMAT 값을 따옴표로 묶어야 합니다.

    /subsystem=logging/periodic-rotating-file-handler=PERIODIC_HANDLER_NAME:write-attribute(name=formatter,value=FORMAT)
    Copy to Clipboard Toggle word wrap
    참고
  • 자동 플러시를 설정합니다.

    각 쓰기 후 자동으로 플러시할지 여부를 설정합니다. 기본값은 true입니다.

    /subsystem=logging/periodic-rotating-file-handler=PERIODIC_HANDLER_NAME:write-attribute(name=autoflush,value=AUTO_FLUSH)
    Copy to Clipboard Toggle word wrap
  • 필터 표현식을 설정합니다.

    처리기의 로그 메시지를 필터링하기 위한 표현식을 설정합니다. 쉼표와 따옴표로 이스케이프하고 따옴표로 묶어야 합니다. 예를 들어 아래 FILTER_EXPRESSION 대체 가능한 변수는 not(match("WFLY")의 필터 표현식에 대해 " not(match(\ "WFLY\")" 로 교체해야 합니다.

    /subsystem=logging/periodic-rotating-file-handler=PERIODIC_HANDLER_NAME:write-attribute(name=filter-spec, value=FILTER_EXPRESSION)
    Copy to Clipboard Toggle word wrap

    사용 가능한 필터 식에 대한 자세한 내용은 식 필터링 섹션을 참조하십시오.

Log Handler를 Logger에 할당합니다.

로그 처리기를 활성화하려면 로거에 할당해야 합니다.

다음 관리 CLI 명령은 주기적인 로그 처리기를 루트 로거에 할당합니다.

/subsystem=logging/root-logger=ROOT:add-handler(name=PERIODIC_HANDLER_NAME)
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령은 CATEGORY 에서 지정하는 이름을 가진 로거에 주기 로그 처리기를 할당합니다.

/subsystem=logging/logger=CATEGORY:add-handler(name=PERIODIC_HANDLER_NAME)
Copy to Clipboard Toggle word wrap
Periodic Log Handler 제거

제거 작업을 사용하여 로그 처리기를 제거할 수 있습니다. 현재 로거 또는 async 로그 처리기에 할당된 경우 로그 처리기를 제거할 수 없습니다.

/subsystem=logging/periodic-rotating-file-handler=PERIODIC_HANDLER_NAME:remove
Copy to Clipboard Toggle word wrap

12.5.4. 크기 회전 로그 처리기 구성

이 섹션에서는 관리 CLI를 사용하여 크기 회전 로그 처리기를 구성하는 방법을 보여줍니다. 구성 탭에서 로깅 하위 시스템으로 이동하여 Handler 탭을 선택하고 왼쪽 메뉴에서 Size를 선택하여 관리 콘솔을 사용하여 크기 로그 처리기를 구성할 수도 있습니다.

크기 로그 처리기를 구성하기 위해 수행할 주요 작업은 다음과 같습니다.

중요

로깅 프로필에 대해 이 로그 처리기를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

크기 로그 처리기 추가

크기 로그 처리기를 추가할 때 경로 및 relative-to 속성으로 구성된 file 속성을 사용하여 파일 경로를 지정해야 합니다. 경로 속성을 사용하여 이름을 포함하여 로그의 파일 경로를 설정합니다(예: my-log.log ). 선택적으로 relative-to 특성을 사용하여 경로가 이름이 지정된 경로 (예: jboss.server.log.dir )에 상대적으로 설정되도록 설정합니다.

/subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:add(file={path=FILE_PATH,relative-to=RELATIVE_TO_PATH})
Copy to Clipboard Toggle word wrap
크기 로그 처리기 설정 구성

필요에 따라 다음 크기 로그 처리기 특성 중 하나 이상을 설정해야 할 수 있습니다. 사용 가능한 크기 로그 처리기 속성 및 해당 설명의 전체 목록은 크기 로그 처리기 특성을 참조하십시오.

  • 로그 수준을 설정합니다.

    처리기에 적절한 로그 수준을 설정합니다. 기본값은 ALL 입니다. 사용 가능한 모든 옵션은 로그 수준을 참조하십시오.

    /subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:write-attribute(name=level,value=LEVEL)
    Copy to Clipboard Toggle word wrap
  • 순환된 로그의 접미사를 설정합니다.

    java.text.SimpleDateFormat 에서 이해할 수 있는 형식의 접미사 문자열(예: .yyyy-MM-dd-HH )을 설정합니다. 순환 기간은 이 접미사에 따라 자동으로 계산됩니다.

    /subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:write-attribute(name=suffix, value=SUFFIX)
    Copy to Clipboard Toggle word wrap
  • 회전 크기를 설정합니다.

    순환하기 전에 파일이 도달할 수 있는 최대 크기를 설정합니다. 기본값은 2MB의 경우 2m 입니다.

    /subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:write-attribute(name=rotate-size, value=ROTATE_SIZE)
    Copy to Clipboard Toggle word wrap
  • 유지할 최대 백업 로그 수를 설정합니다.

    유지할 백업 수를 설정합니다. 기본값은 1입니다.

    /subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:write-attribute(name=max-backup-index, value=MAX_BACKUPS)
    Copy to Clipboard Toggle word wrap
  • 부팅 시 로그를 회전할지 여부를 설정합니다.

    기본적으로 서버를 다시 시작할 때 새 로그 파일이 생성되지 않습니다. 이 값을 true 로 설정하여 서버 다시 시작 시 로그를 순환할 수 있습니다.

    /subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:write-attribute(name=rotate-on-boot, value=ROTATE_ON_BOOT)
    Copy to Clipboard Toggle word wrap
  • 추가 동작을 설정합니다.

    기본적으로 JBoss EAP는 서버를 다시 시작할 때 동일한 파일에 로그 메시지를 추가합니다. 서버를 다시 시작할 때 파일을 덮어쓰도록 하려면 append 속성을 false 로 설정할 수 있습니다.

    /subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:write-attribute(name=append,value=APPEND)
    Copy to Clipboard Toggle word wrap
  • 인코딩을 설정합니다.

    처리기의 인코딩을 설정합니다(예: utf-8 ).

    /subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:write-attribute(name=encoding,value=ENCODING)
    Copy to Clipboard Toggle word wrap
  • 로그 포맷터를 설정합니다.

    처리기의 포맷터 문자열을 설정합니다. 예를 들어 기본 형식 문자열은 %d{HH:mm:ss,SSS} %-5p [%t] (%t) %s%e%n 입니다. FORMAT 값을 따옴표로 묶어야 합니다.

    /subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:write-attribute(name=formatter,value=FORMAT)
    Copy to Clipboard Toggle word wrap
    참고
  • 자동 플러시를 설정합니다.

    각 쓰기 후 자동으로 플러시할지 여부를 설정합니다. 기본값은 true입니다.

    /subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:write-attribute(name=autoflush,value=AUTO_FLUSH)
    Copy to Clipboard Toggle word wrap
  • 필터 표현식을 설정합니다.

    처리기의 로그 메시지를 필터링하기 위한 표현식을 설정합니다. 쉼표와 따옴표로 이스케이프하고 따옴표로 묶어야 합니다. 예를 들어 아래 FILTER_EXPRESSION 대체 가능한 변수는 not(match("WFLY")의 필터 표현식에 대해 " not(match(\ "WFLY\")" 로 교체해야 합니다.

    /subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:write-attribute(name=filter-spec, value=FILTER_EXPRESSION)
    Copy to Clipboard Toggle word wrap

    사용 가능한 필터 식에 대한 자세한 내용은 식 필터링 섹션을 참조하십시오.

Log Handler 를 Logger에 할당

로그 처리기를 활성화하려면 로거에 할당해야 합니다.

다음 관리 CLI 명령은 크기 로그 처리기를 루트 로거에 할당합니다.

/subsystem=logging/root-logger=ROOT:add-handler(name=SIZE_HANDLER_NAME)
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령은 CATEGORY 에서 지정하는 이름을 가진 로거에 크기 로그 처리기를 할당합니다.

/subsystem=logging/logger=CATEGORY:add-handler(name=SIZE_HANDLER_NAME)
Copy to Clipboard Toggle word wrap
크기 로그 처리기 제거

제거 작업을 사용하여 로그 처리기를 제거할 수 있습니다. 현재 로거 또는 async 로그 처리기에 할당된 경우 로그 처리기를 제거할 수 없습니다.

/subsystem=logging/size-rotating-file-handler=SIZE_HANDLER_NAME:remove
Copy to Clipboard Toggle word wrap

12.5.5. 기간 크기 회전 로그 처리기 구성

이 섹션에서는 관리 CLI를 사용하여 주기적인 크기 회전 로그 처리기를 구성하는 방법을 보여줍니다. 또한 로깅 하위 시스템으로 이동하여 Handler 탭을 선택하고 왼쪽 메뉴에서 Periodic Size 를 선택하여 관리 콘솔을 사용하여 주기적인 크기 로그 처리기를 구성할 수도 있습니다.

주기적인 크기 로그 처리기를 구성하기 위해 수행할 주요 작업은 다음과 같습니다.

중요

로깅 프로필에 대해 이 로그 처리기를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

주기적인 크기 로그 처리기 추가

주기적인 크기 로그 처리기를 추가할 때 경로 및 relative-to 속성으로 구성된 file 속성을 사용하여 파일 경로를 지정해야 합니다. 경로 속성을 사용하여 이름을 포함하여 로그의 파일 경로를 설정합니다(예: my-log.log ). 선택적으로 relative-to 특성을 사용하여 경로가 이름이 지정된 경로 (예: jboss.server.log.dir )에 상대적으로 설정되도록 설정합니다.

접미사 특성을 사용하여 순환된 로그의 접미사 도 설정해야 합니다. 이는 java.text.SimpleDateFormat 에서 이해할 수 있는 형식이어야 합니다(예: .yyyy-MM-dd-HH ). 순환 기간은 이 접미사에 따라 자동으로 계산됩니다.

/subsystem=logging/periodic-size-rotating-file-handler=PERIODIC_SIZE_HANDLER_NAME:add(file={path=FILE_PATH,relative-to=RELATIVE_TO_PATH},suffix=SUFFIX)
Copy to Clipboard Toggle word wrap
Periodic Size Log Handler 설정 구성

필요에 따라 다음 주기 크기 로그 처리기 특성 중 하나 이상을 설정해야 할 수 있습니다.Depending on your needs, you may need to set one or more of the following periodic size log handler attributes. 사용 가능한 주기적인 크기 로그 처리기 속성 및 해당 설명의 전체 목록은 주기적인 크기 로그 처리기 특성을 참조하십시오.

  • 로그 수준을 설정합니다.

    처리기에 적절한 로그 수준을 설정합니다. 기본값은 ALL 입니다. 사용 가능한 모든 옵션은 로그 수준을 참조하십시오.

    /subsystem=logging/periodic-size-rotating-file-handler=PERIODIC_SIZE_HANDLER_NAME:write-attribute(name=level,value=LEVEL)
    Copy to Clipboard Toggle word wrap
  • 회전 크기를 설정합니다.

    순환하기 전에 파일이 도달할 수 있는 최대 크기를 설정합니다. 기본값은 2MB의 경우 2m 입니다.

    /subsystem=logging/periodic-size-rotating-file-handler=PERIODIC_SIZE_HANDLER_NAME:write-attribute(name=rotate-size, value=ROTATE_SIZE)
    Copy to Clipboard Toggle word wrap
  • 유지할 최대 백업 로그 수를 설정합니다.

    유지할 백업 수를 설정합니다. 기본값은 1입니다.

    /subsystem=logging/periodic-size-rotating-file-handler=PERIODIC_SIZE_HANDLER_NAME:write-attribute(name=max-backup-index, value=MAX_BACKUPS)
    Copy to Clipboard Toggle word wrap
  • 부팅 시 로그를 회전할지 여부를 설정합니다.

    기본적으로 서버를 다시 시작할 때 새 로그 파일이 생성되지 않습니다. 이 값을 true 로 설정하여 서버 다시 시작 시 로그를 순환할 수 있습니다.

    /subsystem=logging/periodic-size-rotating-file-handler=PERIODIC_SIZE_HANDLER_NAME:write-attribute(name=rotate-on-boot, value=ROTATE_ON_BOOT)
    Copy to Clipboard Toggle word wrap
  • 추가 동작을 설정합니다.

    기본적으로 JBoss EAP는 서버를 다시 시작할 때 동일한 파일에 로그 메시지를 추가합니다. 서버를 다시 시작할 때 파일을 덮어쓰도록 하려면 append 속성을 false 로 설정할 수 있습니다.

    /subsystem=logging/periodic-size-rotating-file-handler=PERIODIC_SIZE_HANDLER_NAME:write-attribute(name=append,value=APPEND)
    Copy to Clipboard Toggle word wrap
  • 인코딩을 설정합니다.

    처리기의 인코딩을 설정합니다(예: utf-8 ).

    /subsystem=logging/periodic-size-rotating-file-handler=PERIODIC_SIZE_HANDLER_NAME:write-attribute(name=encoding,value=ENCODING)
    Copy to Clipboard Toggle word wrap
  • 로그 포맷터를 설정합니다.

    처리기의 포맷터 문자열을 설정합니다. 예를 들어 기본 형식 문자열은 %d{HH:mm:ss,SSS} %-5p [%t] (%t) %s%e%n 입니다. FORMAT 값을 따옴표로 묶어야 합니다.

    /subsystem=logging/periodic-size-rotating-file-handler=PERIODIC_SIZE_HANDLER_NAME:write-attribute(name=formatter,value=FORMAT)
    Copy to Clipboard Toggle word wrap
    참고
  • 자동 플러시를 설정합니다.

    각 쓰기 후 자동으로 플러시할지 여부를 설정합니다. 기본값은 true입니다.

    /subsystem=logging/periodic-size-rotating-file-handler=PERIODIC_SIZE_HANDLER_NAME:write-attribute(name=autoflush,value=AUTO_FLUSH)
    Copy to Clipboard Toggle word wrap
  • 필터 표현식을 설정합니다.

    처리기의 로그 메시지를 필터링하기 위한 표현식을 설정합니다. 쉼표와 따옴표로 이스케이프하고 따옴표로 묶어야 합니다. 예를 들어 아래 FILTER_EXPRESSION 대체 가능한 변수는 not(match("WFLY")의 필터 표현식에 대해 " not(match(\ "WFLY\")" 로 교체해야 합니다.

    /subsystem=logging/periodic-size-rotating-file-handler=PERIODIC_SIZE_HANDLER_NAME:write-attribute(name=filter-spec, value=FILTER_EXPRESSION)
    Copy to Clipboard Toggle word wrap

    사용 가능한 필터 식에 대한 자세한 내용은 식 필터링 섹션을 참조하십시오.

Log Handler를 Log Handler에 할당합니다.

로그 처리기를 활성화하려면 로거에 할당해야 합니다.

다음 관리 CLI 명령은 주기적인 크기 로그 처리기를 루트 로거에 할당합니다.

/subsystem=logging/root-logger=ROOT:add-handler(name=PERIODIC_SIZE_HANDLER_NAME)
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령은 주기적인 크기 로그 처리기를 CATEGORY 에서 지정하는 이름의 로거에 할당합니다.

/subsystem=logging/logger=CATEGORY:add-handler(name=PERIODIC_SIZE_HANDLER_NAME)
Copy to Clipboard Toggle word wrap
주기적인 크기 로그 처리기 제거

제거 작업을 사용하여 로그 처리기를 제거할 수 있습니다. 현재 로거 또는 async 로그 처리기에 할당된 경우 로그 처리기를 제거할 수 없습니다.

/subsystem=logging/periodic-size-rotating-file-handler=PERIODIC_SIZE_HANDLER_NAME:remove
Copy to Clipboard Toggle word wrap

12.5.6. Syslog 처리기 구성

이 섹션에서는 Syslog 프로토콜(RFC-3164 또는 RFC-5424)을 지원하는 원격 로깅 서버로 메시지를 보내는 데 사용할 수 있는 관리 CLI를 사용하여 syslog 처리기를 구성하는 방법을 보여줍니다. 구성 탭에서 로깅 하위 시스템으로 이동하여 Handler 탭을 선택하고 왼쪽 메뉴에서 Syslog 를 선택하여 관리 콘솔을 사용하여 syslog 처리기를 구성할 수도 있습니다.

syslog 처리기를 구성하기 위해 수행할 주요 작업은 다음과 같습니다.

중요

로깅 프로필에 대해 이 로그 처리기를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

Syslog 처리기 추가
/subsystem=logging/syslog-handler=SYSLOG_HANDLER_NAME:add
Copy to Clipboard Toggle word wrap
Syslog Handler 설정 구성

필요에 따라 다음 syslog 처리기 속성 중 하나 이상을 설정해야 할 수 있습니다. 사용 가능한 syslog 처리기 속성 및 해당 설명의 전체 목록은 Syslog Handler 특성을 참조하십시오.

  • 처리기의 로그 수준을 설정합니다. 기본 수준은 ALL 입니다. 사용 가능한 모든 옵션은 로그 수준을 참조하십시오.

    /subsystem=logging/syslog-handler=SYSLOG_HANDLER_NAME:write-attribute(name=level,value=LEVEL)
    Copy to Clipboard Toggle word wrap
  • 로깅되는 애플리케이션의 이름을 설정합니다. 기본 이름은 java 입니다.

    /subsystem=logging/syslog-handler=SYSLOG_HANDLER_NAME:write-attribute(name=app-name,value=APP_NAME)
    Copy to Clipboard Toggle word wrap
  • syslog 서버의 주소를 설정합니다. 기본 주소는 localhost 입니다.

    /subsystem=logging/syslog-handler=SYSLOG_HANDLER_NAME:write-attribute(name=server-address,value=SERVER_ADDRESS)
    Copy to Clipboard Toggle word wrap
  • syslog 서버의 포트를 설정합니다. 기본 포트는 514 입니다.

    /subsystem=logging/syslog-handler=SYSLOG_HANDLER_NAME:write-attribute(name=port,value=PORT)
    Copy to Clipboard Toggle word wrap
  • RFC 사양에 정의된 syslog 형식을 설정합니다. 기본 형식은 RFC5424 입니다.

    /subsystem=logging/syslog-handler=SYSLOG_HANDLER_NAME:write-attribute(name=syslog-format,value=SYSLOG_FORMAT)
    Copy to Clipboard Toggle word wrap
Logger에 Syslog 처리기 할당

로그 처리기를 활성화하려면 로거에 할당해야 합니다.

다음 관리 CLI 명령은 syslog 처리기를 루트 로거에 할당합니다.

/subsystem=logging/root-logger=ROOT:add-handler(name=SYSLOG_HANDLER_NAME)
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령은 CATEGORY 에서 지정하는 이름을 가진 로거에 syslog 처리기를 할당합니다.

/subsystem=logging/logger=CATEGORY:add-handler(name=SYSLOG_HANDLER_NAME)
Copy to Clipboard Toggle word wrap
Syslog 처리기 제거

제거 작업을 사용하여 로그 처리기를 제거할 수 있습니다. 현재 로거 또는 async 로그 처리기에 할당된 경우 로그 처리기를 제거할 수 없습니다.

/subsystem=logging/syslog-handler=SYSLOG_HANDLER_NAME:remove
Copy to Clipboard Toggle word wrap

12.5.7. 사용자 정의 로그 처리기 구성

이 섹션에서는 관리 CLI를 사용하여 사용자 정의 로그 처리기를 구성하는 방법을 보여줍니다. 구성 탭에서 로깅 하위 시스템으로 이동하여 Handler 탭을 선택하고 왼쪽 메뉴에서 Custom Custom을 선택하여 관리 콘솔을 사용하여 사용자 지정 로그 처리기를 구성할 수도 있습니다.

사용자 정의 로그 처리기를 구성하기 위해 수행할 주요 작업은 다음과 같습니다.

중요

로깅 프로필에 대해 이 로그 처리기를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

사용자 정의 로그 처리기 추가

사용자 지정 로그 처리기를 추가할 때 처리기의 Java 클래스와 포함된 JBoss EAP 모듈을 지정해야 합니다. 클래스는 java.util.logging.Handler 를 확장해야 합니다.

참고

사용자 지정 로거 가 포함된 모듈을 이미 생성해야 합니다. 그렇지 않으면 이 명령이 실패합니다.

/subsystem=logging/custom-handler=CUSTOM_HANDLER_NAME:add(class=CLASS_NAME,module=MODULE_NAME)
Copy to Clipboard Toggle word wrap
사용자 정의 로그 처리기 설정 구성

필요에 따라 다음 사용자 지정 로그 처리기 특성 중 하나 이상을 설정해야 할 수 있습니다. 사용 가능한 사용자 정의 로그 처리기 속성 및 해당 설명의 전체 목록은 사용자 정의 로그 처리기 특성을 참조하십시오.

  • 로그 수준을 설정합니다.

    처리기에 적절한 로그 수준을 설정합니다. 기본값은 ALL 입니다. 사용 가능한 모든 옵션은 로그 수준을 참조하십시오.

    /subsystem=logging/custom-handler=CUSTOM_HANDLER_NAME:write-attribute(name=level,value=LEVEL)
    Copy to Clipboard Toggle word wrap
  • 속성을 설정합니다.

    로그 처리기에 필요한 속성을 설정합니다. 속성은 setter 방법을 사용하여 액세스할 수 있어야 합니다.

    /subsystem=logging/custom-handler=CUSTOM_HANDLER_NAME:write-attribute(name=properties.PROPERTY_NAME,value=PROPERTY_VALUE)
    Copy to Clipboard Toggle word wrap
  • 인코딩을 설정합니다.

    처리기의 인코딩을 설정합니다(예: utf-8 ).

    /subsystem=logging/custom-handler=CUSTOM_HANDLER_NAME:write-attribute(name=encoding,value=ENCODING)
    Copy to Clipboard Toggle word wrap
  • 로그 포맷터를 설정합니다.

    처리기의 포맷터 문자열을 설정합니다. 예를 들어 기본 형식 문자열은 %d{HH:mm:ss,SSS} %-5p [%t] (%t) %s%e%n 입니다. FORMAT 값을 따옴표로 묶어야 합니다.

    /subsystem=logging/custom-handler=CUSTOM_HANDLER_NAME:write-attribute(name=formatter,value=FORMAT)
    Copy to Clipboard Toggle word wrap
    참고
  • 필터 표현식을 설정합니다.

    처리기의 로그 메시지를 필터링하기 위한 표현식을 설정합니다. 쉼표와 따옴표로 이스케이프하고 따옴표로 묶어야 합니다. 예를 들어 아래 FILTER_EXPRESSION 대체 가능한 변수는 not(match("WFLY")의 필터 표현식에 대해 " not(match(\ "WFLY\")" 로 교체해야 합니다.

    /subsystem=logging/custom-handler=CUSTOM_HANDLER_NAME:write-attribute(name=filter-spec, value=FILTER_EXPRESSION)
    Copy to Clipboard Toggle word wrap

    사용 가능한 필터 식에 대한 자세한 내용은 식 필터링 섹션을 참조하십시오.

Log Handler를 Logger에 할당

로그 처리기를 활성화하려면 로거에 할당해야 합니다.

다음 관리 CLI 명령은 사용자 정의 로그 처리기를 루트 로거에 할당합니다.

/subsystem=logging/root-logger=ROOT:add-handler(name=CUSTOM_HANDLER_NAME)
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령은 CATEGORY 에서 지정하는 이름을 가진 로거에 사용자 정의 로그 처리기를 할당합니다.

/subsystem=logging/logger=CATEGORY:add-handler(name=CUSTOM_HANDLER_NAME)
Copy to Clipboard Toggle word wrap
사용자 정의 로그 처리기 제거

제거 작업을 사용하여 로그 처리기를 제거할 수 있습니다. 현재 로거 또는 async 로그 처리기에 할당된 경우 로그 처리기를 제거할 수 없습니다.

/subsystem=logging/custom-handler=CUSTOM_HANDLER_NAME:remove
Copy to Clipboard Toggle word wrap

12.5.8. Async 로그 처리기 구성

이 섹션에서는 관리 CLI를 사용하여 비동기 로그 처리기를 구성하는 방법을 보여줍니다. 구성 탭에서 로깅 하위 시스템으로 이동하고, Handler 탭을 선택하고, 왼쪽 메뉴에서 Async 를 선택하여 관리 콘솔을 사용하여 비동기 로그 처리기를 구성할 수도 있습니다.

async 로그 처리기를 구성하기 위해 수행할 주요 작업은 다음과 같습니다.

중요

로깅 프로필에 대해 이 로그 처리기를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

Async 로그 처리기 추가

async 로그 처리기를 추가할 때 큐 길이를 지정해야 합니다. 큐에서 보유할 수 있는 최대 로그 요청 수입니다.

/subsystem=logging/async-handler=ASYNC_HANDLER_NAME:add(queue-length=QUEUE_LENGTH)
Copy to Clipboard Toggle word wrap
하위 핸들러 추가

이 비동기 로그 처리기의 하위 핸들러로 하나 이상의 처리기를 추가할 수 있습니다. 처리기가 구성에 이미 있어야 합니다. 그렇지 않으면 이 명령이 실패합니다.

/subsystem=logging/async-handler=ASYNC_HANDLER_NAME:add-handler(name=HANDLER_NAME)
Copy to Clipboard Toggle word wrap
Async 로그 처리기 설정 구성

필요에 따라 다음 async 로그 처리기 특성 중 하나 이상을 설정해야 할 수 있습니다. 사용 가능한 비동기 로그 처리기 속성 및 해당 설명의 전체 목록은 Async 로그 처리기 특성을 참조하십시오.

  • 로그 수준을 설정합니다.

    처리기에 적절한 로그 수준을 설정합니다. 기본값은 ALL 입니다. 사용 가능한 모든 옵션은 로그 수준을 참조하십시오.

    /subsystem=logging/async-handler=ASYNC_HANDLER_NAME:write-attribute(name=level,value=LEVEL)
    Copy to Clipboard Toggle word wrap
  • 오버플로 작업을 설정합니다.

    오버플로할 때 수행할 작업을 설정합니다. 기본값은 BLOCK 입니다. 즉, 전체 큐가 발생할 경우 스레드가 차단됩니다. 이 값을 DISCARD 로 변경할 수 있습니다. 즉, 전체 대기열의 경우 로그 메시지가 삭제됩니다.

    /subsystem=logging/async-handler=ASYNC_HANDLER_NAME:write-attribute(name=overflow-action,value=OVERFLOW_ACTION)
    Copy to Clipboard Toggle word wrap
  • 필터 표현식을 설정합니다.

    처리기의 로그 메시지를 필터링하기 위한 표현식을 설정합니다. 쉼표와 따옴표로 이스케이프하고 따옴표로 묶어야 합니다. 예를 들어 아래 FILTER_EXPRESSION 대체 가능한 변수는 not(match("WFLY")의 필터 표현식에 대해 " not(match(\ "WFLY\")" 로 교체해야 합니다.

    /subsystem=logging/async-handler=ASYNC_HANDLER_NAME:write-attribute(name=filter-spec, value=FILTER_EXPRESSION)
    Copy to Clipboard Toggle word wrap

    사용 가능한 필터 식에 대한 자세한 내용은 식 필터링 섹션을 참조하십시오.

Async 로그 처리기를 Logger에 할당

로그 처리기를 활성화하려면 로거에 할당해야 합니다.

다음 관리 CLI 명령은 async 로그 처리기를 루트 로거에 할당합니다.

/subsystem=logging/root-logger=ROOT:add-handler(name=ASYNC_HANDLER_NAME)
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령은 CATEGORY 에서 지정하는 이름이 있는 로거에 async 로그 처리기를 할당합니다.

/subsystem=logging/logger=CATEGORY:add-handler(name=ASYNC_HANDLER_NAME)
Copy to Clipboard Toggle word wrap
Async 로그 처리기 제거

제거 작업을 사용하여 로그 처리기를 제거할 수 있습니다. 현재 로거에 할당된 경우 로그 처리기를 제거할 수 없습니다.

/subsystem=logging/async-handler=ASYNC_HANDLER_NAME:remove
Copy to Clipboard Toggle word wrap

12.6. 루트 로거 구성

루트 로거는 지정된 로그 수준 이상의 모든 로그 메시지를 캡처하여 로그 카테고리에서 캡처하지 않는 서버로 전송됩니다.

이 섹션에서는 관리 CLI를 사용하여 루트 로거를 구성하는 방법을 보여줍니다. Configuration 탭에서 Logging 하위 시스템으로 이동하고 Root Logger 탭을 선택하여 관리 콘솔을 사용하여 루트 로거를 구성할 수도 있습니다.

Root Logger 구성
중요

로깅 프로필에 대해 이 로그 처리기를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

  1. 로그 처리기를 루트 로거에 할당합니다.

    로그 처리기를 추가합니다.

    /subsystem=logging/root-logger=ROOT:add-handler(name=LOG_HANDLER_NAME)
    Copy to Clipboard Toggle word wrap

    로그 처리기를 제거합니다.

    /subsystem=logging/root-logger=ROOT:remove-handler(name=LOG_HANDLER_NAME)
    Copy to Clipboard Toggle word wrap
  2. 로그 수준을 설정합니다.

    /subsystem=logging/root-logger=ROOT:write-attribute(name=level,value=LEVEL)
    Copy to Clipboard Toggle word wrap

사용 가능한 루트 로거 속성 및 해당 설명의 전체 목록은 Root Logger 특성을 참조하십시오.

12.7. 로그 형식 구성

로그 포맷터는 해당 처리기의 로그 메시지 모양을 정의합니다. 이름이 지정된 패턴 포맷터 또는 사용자 정의 로그 포맷터를 구성할 수 있습니다.

12.7.1. 이름이 지정된 패턴 형식 구성

로그 처리기에서 로그 메시지를 포맷하는 데 사용할 수 있는 이름이 지정된 패턴 포맷터를 생성할 수 있습니다.

이 섹션에서는 관리 CLI를 사용하여 로그 포맷터를 구성하는 방법을 보여줍니다. 또한 Configuration 탭에서 Logging 하위 시스템으로 이동하여 Formatter 탭을 선택하고 왼쪽 메뉴에서 Pattern 을 선택하여 관리 콘솔을 사용하여 로그 포멧을 구성할 수도 있습니다.

중요

로깅 프로필에 이 로그 포맷터를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

이름이 지정된 포맷 생성

포맷터를 정의할 때 로그 메시지를 포맷하는 데 사용할 패턴 문자열을 제공합니다. 패턴 구문에 대한 자세한 내용은 로그 형식 생성을 참조하십시오.

/subsystem=logging/pattern-formatter=PATTERN_FORMATTER_NAME:add(pattern=PATTERN_STRING)
Copy to Clipboard Toggle word wrap

색상 맵을 정의하여 다른 로그 수준에 색상을 할당할 수도 있습니다. 형식은 쉼표로 구분된 LEVEL:COLOR 목록입니다.

  • 유효한 수준: finer ,finer, finer ,config,trace,debug,info,warning,warn,error,fatal,severe
  • 유효한 색상: ,녹색,빨간색,노란색,파란색,cyan,흰색,광고색 , 굵은녹색, Valblue , lightblue , lightblue, wideyellow, wideyelagenta , lightcyan , lightcyan.
/subsystem=logging/pattern-formatter=PATTERN_FORMATTER_NAME:write-attribute(name=color-map,value="LEVEL:COLOR,LEVEL:COLOR")
Copy to Clipboard Toggle word wrap
로그 처리기에 이름이 지정된 포터 할당

다음 관리 CLI 명령은 주기적 회전 파일 처리기에서 사용할 패턴 포맷터를 할당합니다.

/subsystem=logging/periodic-rotating-file-handler=FILE_HANDLER_NAME:write-attribute(name=named-formatter,value=PATTERN_FORMATTER_NAME)
Copy to Clipboard Toggle word wrap

12.7.2. 사용자 정의 로그 포맷 구성

로그 처리기에서 로그 메시지를 포맷하는 데 사용할 수 있는 사용자 지정 로그 포맷터를 생성할 수 있습니다.

이 섹션에서는 관리 CLI를 사용하여 사용자 정의 로그 포맷터를 구성하는 방법을 보여줍니다. 또한 Configuration 탭에서 Logging 하위 시스템으로 이동하여 Formatter 탭을 선택한 다음 왼쪽 메뉴에서 Custom 을 선택하여 관리 콘솔을 사용하여 로그 포멧을 구성할 수도 있습니다.

사용자 정의 로그 포맷 구성
중요

로깅 프로필에 이 로그 포맷터를 구성하는 경우 명령 시작은 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 대신 /subsystem=logging/ 입니다.

또한 관리형 도메인에서 실행 중인 경우 명령 앞에 /profile=PROFILE_NAME.

  1. 사용자 정의 로그 포맷터를 추가합니다.

    사용자 지정 로그 포맷터를 추가할 때 포맷터의 Java 클래스와 포함된 JBoss EAP 모듈을 지정해야 합니다. 클래스는 java.util.logging.Formatter 를 확장해야 합니다.

    참고

    사용자 지정 포맷터가 포함된 모듈을 이미 생성해야 합니다. 그렇지 않으면 이 명령이 실패합니다.

    /subsystem=logging/custom-formatter=CUSTOM_FORMATTER_NAME:add(class=CLASS_NAME, module=MODULE_NAME)
    Copy to Clipboard Toggle word wrap
  2. 로그 포맷터에 필요한 속성을 설정합니다.

    속성은 setter 방법을 사용하여 액세스할 수 있어야 합니다.

    /subsystem=logging/custom-formatter=CUSTOM_FORMATTER_NAME:write-attribute(name=properties.PROPERTY_NAME,value=PROPERTY_VALUE)
    Copy to Clipboard Toggle word wrap
  3. 사용자 지정 포맷터를 로그 처리기에 할당합니다.

    다음 관리 CLI 명령은 주기적 회전 파일 처리기에서 사용할 사용자 지정 포맷터를 할당합니다.

    /subsystem=logging/periodic-rotating-file-handler=FILE_HANDLER_NAME:write-attribute(name=named-formatter, value=CUSTOM_FORMATTER_NAME)
    Copy to Clipboard Toggle word wrap
사용자 정의 XML 포맷의 예

다음 예제에서는 사용자 지정 XML 포맷터를 구성합니다. org.jboss .logmanager 모듈에 제공된 java.util.logging.19Formatter 클래스를 사용하여 콘솔 로그 처리기에 할당합니다.

/subsystem=logging/custom-formatter=custom-xml-formatter:add(class=java.util.logging.XMLFormatter, module=org.jboss.logmanager)
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=named-formatter, value=custom-xml-formatter)
Copy to Clipboard Toggle word wrap

이 포맷터를 사용하는 로그 메시지는 다음과 같이 포맷됩니다.

<record>
  <date>2016-03-23T12:58:13</date>
  <millis>1458752293091</millis>
  <sequence>93963</sequence>
  <logger>org.jboss.as</logger>
  <level>INFO</level>
  <class>org.jboss.as.server.BootstrapListener</class>
  <method>logAdminConsole</method>
  <thread>22</thread>
  <message>WFLYSRV0051: Admin console listening on http://%s:%d</message>
  <param>127.0.0.1</param>
  <param>9990</param>
</record>
Copy to Clipboard Toggle word wrap

12.8. 애플리케이션 로깅 정보

애플리케이션 로깅은 JBoss EAP 로깅 하위 시스템 또는 배포별로 구성할 수 있습니다.

로그 메시지를 캡처하려면 JBoss EAP 로그 카테고리 및 처리기를 사용하려면 로깅 유형 정보를 참조하십시오.

지원되는 애플리케이션 로깅 프레임워크 및 배포별 로깅 구성과 같은 애플리케이션 로깅에 대한 자세한 내용은 JBoss EAP 개발 가이드의 로깅 장을 참조하십시오.

12.8.1. 배포별 로깅

배포별 로깅을 사용하면 개발자가 애플리케이션에 대한 로깅 구성을 미리 구성할 수 있습니다. 애플리케이션이 배포되면 정의된 구성에 따라 로깅이 시작됩니다. 이 구성을 통해 생성된 로그 파일에는 애플리케이션의 동작에 대한 정보만 포함되어 있습니다.

참고

배포별 로깅 구성이 완료되지 않으면 로깅 하위 시스템의 구성은 모든 애플리케이션과 서버에 사용됩니다.

이 접근 방식은 시스템 전체 로깅을 사용하는 경우의 장단점이 있습니다. 이점은 JBoss EAP 인스턴스의 관리자가 서버 로깅 이외의 다른 로깅을 구성할 필요가 없다는 점입니다. 단점은 배포별 로깅 구성이 서버 시작에서만 읽혀 있으므로 런타임 시 변경할 수 없다는 것입니다.

애플리케이션에서 배포별 로깅을 사용하는 방법에 대한 자세한 내용은 JBoss EAP 개발 가이드의 애플리케이션에 Per-deployment Logging 추가 를 참조하십시오.

12.8.1.1. 배포별 로깅 비활성화

다음 방법 중 하나로 배포별 로깅을 비활성화할 수 있습니다.

  • use-deployment-logging-config 속성을 false 로 설정합니다.

    use-deployment-logging-config 속성은 배포별 로깅을 위해 배포 스캔 여부를 제어합니다. 기본값은 true 입니다. 이 속성을 false 로 설정하여 배포별 로깅을 비활성화할 수 있습니다.

    /subsystem=logging:write-attribute(name=use-deployment-logging-config,value=false)
    Copy to Clipboard Toggle word wrap
  • jboss-deployment-structure.xml 파일을 사용하여 로깅 하위 시스템을 제외합니다.

    자세한 내용은 JBoss EAP 개발 가이드 의 배포에서 제외 를 참조하십시오.

12.8.2. 로깅 프로필

로깅 프로필은 배포된 애플리케이션에 할당할 수 있는 독립적인 로깅 구성 세트입니다. 일반 로깅 하위 시스템과 마찬가지로 로깅 프로필은 처리기, 카테고리 및 루트 로거를 정의할 수 있지만 다른 프로필이나 기본 로깅 하위 시스템의 구성을 참조할 수 없습니다. 로깅 프로필의 설계는 구성이 용이하도록 로깅 하위 시스템을 모방합니다.

로깅 프로필을 사용하면 관리자가 다른 로깅 구성에 영향을 주지 않고 하나 이상의 애플리케이션에 고유한 로깅 구성을 생성할 수 있습니다. 각 프로필은 서버 구성에 정의되므로 영향을 받는 애플리케이션을 재배포하지 않고도 로깅 구성을 변경할 수 있습니다. 그러나 로깅 프로필은 관리 콘솔을 사용하여 구성할 수 없습니다.

각 로깅 프로필에는 다음이 포함될 수 있습니다.

  • 고유한 이름(필수)
  • 원하는 수의 로그 처리기
  • 임의의 수의 로그 카테고리
  • 최대 하나의 루트 로거

애플리케이션은 Logging-Profile 특성을 사용하여 MANIFEST.MF 파일에서 사용할 로깅 프로필을 지정할 수 있습니다.

12.8.2.1. 로깅 프로필 구성

로깅 프로필은 로그 처리기, 카테고리 및 루트 로거를 사용하여 구성할 수 있습니다. 로깅 프로필 구성에서는 다음과 같은 차이점을 제외하고 로깅 하위 시스템을 구성하는 것과 동일한 구문을 사용합니다.

  • 루트 구성 경로는 /subsystem=logging/logging-profile=NAME 입니다.
  • 로깅 프로필에는 다른 로깅 프로필이 포함될 수 없습니다.
  • 로깅 하위 시스템에는 로깅 프로필에 사용할 수 없는 다음 속성이 있습니다.

    • add-logging-api-dependencies
    • use-deployment-logging-config
로깅 프로필 생성 및 구성

다음 절차에서는 관리 CLI를 사용하여 로깅 프로필을 생성하고 파일 처리기 및 로거 범주를 설정합니다.

  1. 로깅 프로필을 생성합니다.

    /subsystem=logging/logging-profile=PROFILE_NAME:add
    Copy to Clipboard Toggle word wrap
  2. 파일 처리기를 생성합니다.

    /subsystem=logging/logging-profile=PROFILE_NAME/file-handler=FILE_HANDLER_NAME:add(file={path=>"LOG_NAME.log", "relative-to"=>"jboss.server.log.dir"})
    Copy to Clipboard Toggle word wrap
    /subsystem=logging/logging-profile=PROFILE_NAME/file-handler=FILE_HANDLER_NAME:write-attribute(name="level", value="DEBUG")
    Copy to Clipboard Toggle word wrap

    파일 처리기 특성 목록은 파일 로그 처리기 특성을 참조하십시오.

  3. 로거 카테고리를 생성합니다.

    /subsystem=logging/logging-profile=PROFILE_NAME/logger=CATEGORY_NAME:add(level=TRACE)
    Copy to Clipboard Toggle word wrap

    로그 카테고리 특성 목록은 로그 범주 특성을 참조하십시오.

  4. 카테고리에 파일 처리기를 할당합니다.

    /subsystem=logging/logging-profile=PROFILE_NAME/logger=CATEGORY_NAME:add-handler(name="FILE_HANDLER_NAME")
    Copy to Clipboard Toggle word wrap

그런 다음 MANIFEST.MF 파일의 애플리케이션에서 사용할 로깅 프로필을 설정할 수 있습니다. 자세한 내용은 JBoss EAP 개발 가이드 의 애플리케이션에서 로깅 프로필 지정을 참조하십시오.

12.8.2.2. 로깅 프로필 구성 예

이 예에서는 로깅 프로필 및 이를 사용하는 애플리케이션의 구성을 보여줍니다. 관리 CLI 명령, 결과 XML 및 애플리케이션의 MANIFEST.MF 파일이 표시됩니다.

예제 logging 프로파일에는 다음과 같은 특징이 있습니다.

  • 이름은 accounts-app-profile 입니다.
  • 로그 카테고리는 com.company.accounts. Cryostats 입니다.
  • 로그 수준 TRACE.
  • 로그 처리기는 Cryostat -trace.log 파일을 사용하는 파일 처리기입니다.

관리 CLI 세션

/subsystem=logging/logging-profile=accounts-app-profile:add

/subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:add(file={path=>"ejb-trace.log", "relative-to"=>"jboss.server.log.dir"})

/subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:write-attribute(name="level", value="DEBUG")

/subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:add(level=TRACE)

/subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:add-handler(name="ejb-trace-file")
Copy to Clipboard Toggle word wrap

XML 구성

<logging-profiles>
   <logging-profile name="accounts-app-profile">
      <file-handler name="ejb-trace-file">
         <level name="DEBUG"/>
         <file relative-to="jboss.server.log.dir" path="ejb-trace.log"/>
      </file-handler>
      <logger category="com.company.accounts.ejbs">
         <level name="TRACE"/>
         <handlers>
            <handler name="ejb-trace-file"/>
         </handlers>
      </logger>
   </logging-profile>
</logging-profiles>
Copy to Clipboard Toggle word wrap

애플리케이션 MANIFEST.MF 파일

Manifest-Version: 1.0
Logging-Profile: accounts-app-profile
Copy to Clipboard Toggle word wrap

12.8.3. 배포 로깅 구성 보기

다음 관리 CLI 명령을 사용하여 특정 배포의 로깅 구성에 대한 정보를 가져올 수 있습니다.

/deployment=DEPLOYMENT_NAME/subsystem=logging/configuration=CONFIG:read-resource
Copy to Clipboard Toggle word wrap

배포에 대한 로깅 구성 값(CONFIG)은 다음 세 값 중 하나일 수 있습니다.

예를 들어 아래 관리 CLI 명령은 지정된 배포에서 사용하는 MYPROFILE 로깅 프로필에 대한 구성을 표시합니다.

/deployment=mydeployment.war/subsystem=logging/configuration=profile-MYPROFILE:read-resource(recursive=true,include-runtime=true)
Copy to Clipboard Toggle word wrap

그러면 다음 정보가 출력됩니다.

{
    "outcome" => "success",
    "result" => {
        "error-manager" => undefined,
        "filter" => undefined,
        "formatter" => {
            "MYFORMATTER" => {
                "class-name" => "org.jboss.logmanager.formatters.PatternFormatter",
                "module" => undefined,
                "properties" => {"pattern" => "%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"}
            }
        },
        "handler" => {
            "MYPERIODIC" => {
                "class-name" => "org.jboss.logmanager.handlers.PeriodicRotatingFileHandler",
                "encoding" => undefined,
                "error-manager" => undefined,
                "filter" => undefined,
                "formatter" => "MYFORMATTER",
                "handlers" => [],
                "level" => "ALL",
                "module" => undefined,
                "properties" => {
                    "append" => "true",
                    "autoFlush" => "true",
                    "enabled" => "true",
                    "suffix" => ".yyyy-MM-dd",
                    "fileName" => "EAP_HOME/standalone/log/deployment.log"
                }
            }
        },
        "logger" => {"MYCATEGORY" => {
            "filter" => undefined,
            "handlers" => [],
            "level" => "DEBUG",
            "use-parent-handlers" => true
        }},
        "pojo" => undefined
    }
}
Copy to Clipboard Toggle word wrap

재귀 읽기-리소스 작업을 사용하여 로깅 구성 및 배포에 대한 기타 정보를 읽을 수도 있습니다.

/deployment=DEPLOYMENT_NAME/subsystem=logging:read-resource(include-runtime=true, recursive=true)
Copy to Clipboard Toggle word wrap

13장. 데이터 소스 관리

13.1. JBoss EAP Datasources 정보

JDBC 정보

JDBC API는 Java 애플리케이션에서 데이터베이스에 액세스하는 방법을 정의하는 표준입니다. 애플리케이션은 JDBC 드라이버를 참조하는 데이터 소스를 구성합니다. 그런 다음 데이터베이스 대신 드라이버에 대해 애플리케이션 코드를 작성할 수 있습니다. 드라이버는 코드를 데이터베이스 언어로 변환합니다. 즉, 올바른 드라이버가 설치된 경우 지원되는 모든 데이터베이스와 애플리케이션을 사용할 수 있습니다.

자세한 내용은 JDBC 4.0 사양 을 참조하십시오.

지원되는 데이터베이스

JBoss EAP 7에서 지원하는 JDBC 호환 데이터베이스 목록은 JBoss EAP 지원 구성 을 참조하십시오.

데이터 소스 유형

일반적인 두 가지 유형의 리소스는 데이터 소스 및 XA 데이터 소스라고 합니다.

비 XA 데이터 소스
트랜잭션을 사용하지 않는 애플리케이션 또는 단일 데이터베이스가 있는 트랜잭션을 사용하는 애플리케이션에 사용됩니다.
XA 데이터 소스
여러 데이터베이스 또는 기타 XA 리소스를 하나의 XA 트랜잭션의 일부로 사용하는 애플리케이션에서 사용합니다. XA 데이터 소스에는 추가 오버헤드가 발생합니다.

JBoss EAP 관리 인터페이스를 사용하여 데이터 소스를 생성할 때 사용할 데이터 소스 유형을 지정합니다.

ExampleDS 데이터 소스

JBoss EAP에는 데이터 소스 정의 방법을 설명하기 위해 제공되는 데이터 소스 구성 예제(ExampleDS)가 포함되어 있습니다. 이 데이터 소스는 개발자에게 애플리케이션을 빠르게 빌드하는 기능을 제공하는 경량의 관계형 데이터베이스 관리 시스템인 H2 데이터베이스를 사용합니다.

주의

프로덕션 환경에서는 ExampleDS 데이터 소스와 H2 데이터베이스를 사용해서는 됩니다. 이는 애플리케이션 테스트 및 빌드에 필요한 모든 표준을 지원하는 매우 작고 자체 포함된 데이터 소스이지만 프로덕션 환경에서 사용하기에 충분히 강력하거나 확장 가능한 것은 아닙니다.

13.2. JDBC 드라이버

애플리케이션에서 사용할 데이터 소스를 JBoss EAP에 정의하기 전에 먼저 적절한 JDBC 드라이버를 설치해야 합니다.

13.2.1. JDBC 드라이버를 코어 모듈로 설치

다음 단계를 사용하여 관리 CLI를 사용하여 JDBC 드라이버를 코어 모듈로 설치할 수 있습니다.

  1. JDBC 드라이버를 다운로드합니다.

    데이터베이스 벤더에서 적절한 JDBC 드라이버를 다운로드합니다. 공통 데이터베이스의 JDBC 드라이버에 대한 표준 다운로드 위치는 JDBC 드라이버 다운로드 위치를 참조하십시오.

    JDBC 드라이버 JAR 파일이 ZIP 또는 TAR 아카이브에 포함된 경우 아카이브를 추출해야 합니다.

  2. JBoss EAP 서버를 시작합니다.
  3. 관리 CLI를 시작하지만 --connect 또는 -c 인수를 사용하여 실행 중인 인스턴스에 연결하지 마십시오.

    $ EAP_HOME/bin/jboss-cli.sh
    Copy to Clipboard Toggle word wrap
  4. 모듈 추가 관리 CLI 명령을 사용하여 새 코어 모듈을 추가합니다.

    module add --name=MODULE_NAME --resources=PATH_TO_JDBC_JAR --dependencies=DEPENDENCIES
    Copy to Clipboard Toggle word wrap

    예를 들어 다음 명령은 MySQL JDBC 드라이버 모듈을 추가합니다.

    module add --name=com.mysql --resources=/path/to/mysql-connector-java-5.1.36-bin.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

    이 명령을 사용하여 모듈을 추가 및 제거하는 방법에 대한 자세한 내용은 module --help 를 실행합니다.

  5. 연결 관리 CLI 명령을 사용하여 실행 중인 인스턴스에 연결합니다.

    connect
    Copy to Clipboard Toggle word wrap
  6. JDBC 드라이버를 등록합니다. 관리형 도메인에서 실행하는 경우 이 명령 앞에 /profile=PROFILE_NAME 이어야 합니다.

    /subsystem=datasources/jdbc-driver=DRIVER_NAME:add(driver-name=DRIVER_NAME,driver-module-name=MODULE_NAME,driver-xa-datasource-class-name=XA_DATASOURCE_CLASS_NAME, driver-class-name=DRIVER_CLASS_NAME)
    Copy to Clipboard Toggle word wrap
    참고

    driver-class-name 매개변수는 JDBC 드라이버에서 /META-INF/services/java.sql.Driver 파일에서 두 개 이상의 클래스를 정의하는 경우에만 필요합니다.

    예를 들어 MySQL 5.1.36 JDBC 드라이버 JAR의 /META-INF/services/java.sql.Driver 파일은 다음 두 개의 클래스를 정의합니다.

    • com.mysql.jdbc.Driver
    • com.mysql.fabric.jdbc.FabricMySQLDriver

    이 경우 driver-class-name=com.mysql.jdbc.Driver 를 전달합니다.

    예를 들어 다음 명령은 MySQL JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource, driver-class-name=com.mysql.jdbc.Driver)
    Copy to Clipboard Toggle word wrap

이제 애플리케이션 데이터 소스에서 JDBC 드라이버를 참조할 수 있습니다.

13.2.2. JAR 배포로 JDBC 드라이버 설치

JDBC 드라이버는 관리 CLI 또는 관리 콘솔을 사용하여 JAR 배포로 설치할 수 있습니다. 드라이버가 JDBC 4를 준수하는 한 배포 시 JDBC 드라이버로 자동 인식 및 설치됩니다.

다음 단계에서는 관리 CLI를 사용하여 JDBC 드라이버를 설치하는 방법을 설명합니다.

참고

JDBC 드라이버에 권장되는 설치 방법은 코어 모듈로 설치하는 것입니다.

  1. JDBC 드라이버를 다운로드합니다.

    데이터베이스 벤더에서 적절한 JDBC 드라이버를 다운로드합니다. 공통 데이터베이스의 JDBC 드라이버에 대한 표준 다운로드 위치는 JDBC 드라이버 다운로드 위치를 참조하십시오.

    JDBC 드라이버 JAR 파일이 ZIP 또는 TAR 아카이브에 포함된 경우 아카이브를 추출해야 합니다.

  2. JDBC 드라이버가 JDBC 4와 호환되지 않는 경우 JDBC 드라이버 JAR를 JDBC 4 호환으로 업데이트하는 단계를 참조하십시오.
  3. JAR을 JBoss EAP에 배포합니다.

    deploy PATH_TO_JDBC_JAR
    Copy to Clipboard Toggle word wrap
    참고

    관리형 도메인에서 적절한 서버 그룹을 지정합니다.

    예를 들어 다음 명령은 MySQL JDBC 드라이버를 배포합니다.

    deploy /path/to/mysql-connector-java-5.1.36-bin.jar
    Copy to Clipboard Toggle word wrap

    데이터 소스를 정의할 때 사용할 배포된 드라이버 이름을 표시하는 JBoss EAP 서버 로그에 메시지가 표시됩니다.

    WFLYJCA0018: Started Driver service with driver-name = mysql-connector-java-5.1.36-bin.jar_com.mysql.jdbc.Driver_5_1
    Copy to Clipboard Toggle word wrap

이제 애플리케이션 데이터 소스에서 JDBC 드라이버를 참조할 수 있습니다.

JDBC 드라이버 JAR을 JDBC 4 호환으로 업데이트

JDBC 드라이버 JAR이 JDBC 4와 호환되지 않는 경우 다음 단계를 사용하여 배포할 수 있습니다.

  1. 비어 있는 임시 디렉토리를 만듭니다.
  2. META-INF 하위 디렉터리를 만듭니다.
  3. META-INF/services 하위 디렉터리를 만듭니다.
  4. META-INF/services/java.sql.Driver 파일을 생성하고 한 행을 추가하여 JDBC 드라이버의 정규화된 클래스 이름을 표시합니다.

    예를 들어, MySQL JDBC 드라이버에 대한 아래 행이 추가됩니다.

    com.mysql.jdbc.Driver
    Copy to Clipboard Toggle word wrap
  5. JAR 명령줄 툴을 사용하여 이 새 파일을 JAR에 추가합니다.

    jar \-uf jdbc-driver.jar META-INF/services/java.sql.Driver
    Copy to Clipboard Toggle word wrap

13.2.3. JDBC 드라이버 다운로드 위치

다음 표는 JBoss EAP와 함께 사용되는 공통 데이터베이스의 JDBC 드라이버에 대한 표준 다운로드 위치를 제공합니다.

참고

이러한 링크는 Red Hat에서 제어하거나 적극적으로 모니터링하지 않는 타사 웹 사이트를 가리킵니다. 데이터베이스에 대한 최신 드라이버의 경우 데이터베이스 공급 업체의 문서 및 웹 사이트를 확인하십시오.

Expand
표 13.1. JDBC 드라이버 다운로드 위치
vendor위치 다운로드

MySQL

http://www.mysql.com/products/connector/

PostgreSQL

http://jdbc.postgresql.org/

Oracle

http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

IBM

http://www-306.ibm.com/software/data/db2/java/

Sybase

jConnect JDBC 드라이버는 SAP ASE 설치를 위한 SDK의 일부입니다. 현재 이 드라이버에 대한 별도의 다운로드 사이트는 자체적으로 없습니다.

Microsoft

http://msdn.microsoft.com/data/jdbc/

13.2.4. Vendor-Specific 클래스에 액세스

경우에 따라 애플리케이션에서 JDBC API의 일부가 아닌 벤더별 기능을 사용해야 합니다. 이러한 경우 해당 애플리케이션에 종속성을 선언하여 벤더별 API에 액세스할 수 있습니다.

주의

이것은 고급 사용법입니다. JDBC API에서 찾을 수 없는 기능이 필요한 애플리케이션만 이 절차를 구현해야 합니다.

중요

이 프로세스는 재인증 메커니즘을 사용하고 벤더별 클래스에 액세스하는 경우 필요합니다.

MANIFEST.MF 파일 또는 jboss-deployment-structure.xml 파일을 사용하여 애플리케이션에 대한 종속성을 정의할 수 있습니다.

아직 수행하지 않은 경우 JDBC 드라이버를 코어 모듈로 설치합니다.

MANIFEST.MF 파일 사용
  1. 애플리케이션의 META-INF/MANIFEST.MF 파일을 편집합니다.
  2. Dependencies 행을 추가하고 모듈 이름을 지정합니다.

    예를 들어 아래 줄은 com.mysql 모듈을 종속성으로 선언합니다.

    Dependencies: com.mysql
    Copy to Clipboard Toggle word wrap
jboss-deployment-structure.xml 파일 사용
  1. 애플리케이션의 META-INF/ 또는 article- INF/ 폴더에 jboss-deployment- structure.xml 이라는 파일을 생성합니다.
  2. dependencies 요소를 사용하여 모듈을 지정합니다.

    예를 들어 다음 예제 jboss-deployment-structure.xml 파일은 com.mysql 모듈을 종속성으로 선언합니다.

    <jboss-deployment-structure>
      <deployment>
        <dependencies>
          <module name="com.mysql"/>
        </dependencies>
      </deployment>
    </jboss-deployment-structure>
    Copy to Clipboard Toggle word wrap

아래 예제 코드는 MySQL API에 액세스합니다.

import java.sql.Connection;
import org.jboss.jca.adapters.jdbc.WrappedConnection;

...

Connection c = ds.getConnection();
WrappedConnection wc = (WrappedConnection)c;
com.mysql.jdbc.Connection mc = wc.getUnderlyingConnection();
Copy to Clipboard Toggle word wrap
중요

벤더별 API 지침을 따르십시오. 연결이 CryostatJacamar 컨테이너에 의해 제어되기 때문입니다.

13.3. 데이터 소스 생성

데이터 소스는 관리 콘솔 또는 관리 CLI를 사용하여 생성할 수 있습니다.

JBoss EAP 7을 사용하면 활성화된 속성과 같은 데이터 소스 속성 값에 표현식을 사용할 수 있습니다. 구성의 표현식 사용에 대한 자세한 내용은 속성 교체 섹션을 참조하십시오.

13.3.1. 비 XA 데이터 소스 생성

비 XA 데이터 소스는 data-source add management CLI 명령을 사용하여 정의할 수 있습니다. 구성 → Cryostat → DatasourcesNon-XA 로 이동하여 관리 콘솔을 사용하여 XA 이외의 데이터 소스를 정의하고 추가 를 클릭하여 데이터 소스 생성 마법사를 열 수도 있습니다.

다음 단계에서는 관리 CLI를 사용하여 XA가 아닌 데이터 소스를 정의하는 방법을 설명합니다.

  1. 아직 수행하지 않은 경우 적절한 JDBC 드라이버를 코어 모듈로 설치 및 등록합니다.
  2. 적절한 인수 값을 지정하여 data-source add 명령을 사용하여 데이터 소스를 정의합니다.

    data-source add --name=DATASOURCE_NAME --jndi-name=JNDI_NAME --driver-name=DRIVER_NAME  --connection-url=CONNECTION_URL
    Copy to Clipboard Toggle word wrap
    참고

    관리형 도메인에서 --profile=PROFILE_NAME 인수를 지정해야 합니다.

    이러한 매개변수 값에 대한 팁은 아래의 데이터 소스 매개변수 섹션을 참조하십시오.

자세한 예제는 지원되는 데이터베이스에 대한 데이터 소스 구성 예제 를 참조하십시오.

데이터 소스 매개변수
JNDI-name
데이터 소스에 대한 JNDI 이름은 java:/ 또는 java:jboss/ 로 시작해야 합니다. 예: java:jboss/datasources/ExampleDS.
driver-name

드라이버 이름 값은 JDBC 드라이버가 코어 모듈 또는 JAR 배포로 설치되었는지에 따라 달라집니다.

  1. 코어 모듈의 경우 드라이버 이름 값은 등록 시 JDBC 드라이버에 지정된 이름이 됩니다.
  2. JAR 배포의 경우 /META-INF/services/java.sql.Driver 파일에 나열된 클래스가 하나뿐인 경우 드라이버 이름은 JAR의 이름입니다. 여러 클래스가 나열된 경우 값은 JAR_NAME + "_" + DRIVER_CLASS_NAME + MAJOR_VERSION + "_" + MINOR_VERSION + MINOR_VERSION (예: mysql-connector-java-5.1.36-bin.jar_com.mysql.jdbc.Driver_5_1)입니다.

    JDBC JAR이 배포될 때 JBoss EAP 서버 로그에 나열된 드라이버 이름도 확인할 수 있습니다.

    WFLYJCA0018: Started Driver service with driver-name = mysql-connector-java-5.1.36-bin.jar_com.mysql.jdbc.Driver_5_1
    Copy to Clipboard Toggle word wrap
connection-url
지원되는 데이터베이스에 대한 연결 URL 형식에 대한 자세한 내용은 데이터 소스 연결 URL 목록을 참조하십시오.

사용 가능한 모든 데이터 소스 매개변수의 전체 목록은 Datasource Parameters 섹션을 참조하십시오.

13.3.2. XA 데이터 소스 생성

XA 데이터 소스는 xa-data-source add management CLI 명령을 사용하여 정의할 수 있습니다. 구성 → Cryostat → Datasources → XA로 이동하여 관리 콘솔을 사용하여 XA 데이터 소스를 정의하고 추가 를 클릭하여 XA 데이터 소스 생성 마법사를 열 수도 있습니다.

다음 단계에서는 관리 CLI를 사용하여 XA 데이터 소스를 정의하는 방법을 설명합니다.

참고

관리형 도메인에서 사용할 프로필을 지정해야 합니다. 관리 CLI 명령의 형식에 따라 명령 앞에 /profile=PROFILE_NAME 또는 --profile=PROFILE_NAME 인수를 전달합니다.

  1. 아직 수행하지 않은 경우 적절한 JDBC 드라이버를 코어 모듈로 설치 및 등록합니다.
  2. 적절한 인수 값을 지정하여 xa-data-source add 명령을 사용하여 데이터 소스를 정의합니다.

    xa-data-source add --name=XA_DATASOURCE_NAME --jndi-name=JNDI_NAME --driver-name=DRIVER_NAME --xa-datasource-class=XA_DATASOURCE_CLASS --xa-datasource-properties={"ServerName"=>"HOSTNAME","DatabaseName"=>"DATABASE_NAME"}
    Copy to Clipboard Toggle word wrap

    이러한 매개변수 값에 대한 팁은 아래의 데이터 소스 매개변수 섹션을 참조하십시오.

  3. XA 데이터 소스 속성을 설정합니다.

    XA 데이터 소스를 정의할 때 하나 이상의 XA 데이터 소스 속성이 필요하거나 이전 단계에서 데이터 소스를 추가할 때 오류가 발생합니다. XA 데이터 소스를 정의할 때 설정되지 않은 속성은 나중에 개별적으로 설정할 수 있습니다.

    1. 서버 이름을 설정합니다.

      /subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME/xa-datasource-properties=ServerName:add(value=HOSTNAME)
      Copy to Clipboard Toggle word wrap
    2. 데이터베이스 이름을 설정합니다.

      /subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME/xa-datasource-properties=DatabaseName:add(value=DATABASE_NAME)
      Copy to Clipboard Toggle word wrap

자세한 예제는 지원되는 데이터베이스에 대한 데이터 소스 구성 예제 를 참조하십시오.

데이터 소스 매개변수
JNDI-name
데이터 소스에 대한 JNDI 이름은 java:/ 또는 java:jboss/ 로 시작해야 합니다. 예: java:jboss/datasources/ExampleDS.
driver-name

드라이버 이름 값은 JDBC 드라이버가 코어 모듈 또는 JAR 배포로 설치되었는지에 따라 달라집니다.

  1. 코어 모듈의 경우 드라이버 이름 값은 등록 시 JDBC 드라이버에 지정된 이름이 됩니다.
  2. JAR 배포의 경우 /META-INF/services/java.sql.Driver 파일에 나열된 클래스가 하나뿐인 경우 드라이버 이름은 JAR의 이름입니다. 여러 클래스가 나열된 경우 값은 JAR_NAME + "_" + DRIVER_CLASS_NAME + MAJOR_VERSION + "_" + MINOR_VERSION + MINOR_VERSION (예: mysql-connector-java-5.1.36-bin.jar_com.mysql.jdbc.Driver_5_1)입니다.

    JDBC JAR이 배포될 때 JBoss EAP 서버 로그에 나열된 드라이버 이름도 확인할 수 있습니다.

    WFLYJCA0018: Started Driver service with driver-name = mysql-connector-java-5.1.36-bin.jar_com.mysql.jdbc.Driver_5_1
    Copy to Clipboard Toggle word wrap
XA-datasource-class
javax.sql.XADataSource 클래스의 JDBC 드라이버 구현에 대한 XA 데이터 소스 클래스를 지정합니다.
XA-datasource-properties
XA 데이터 소스를 정의할 때 하나 이상의 XA 데이터 소스 속성이 필요하거나 추가하려고 할 때 오류가 발생합니다. 또한 XA 데이터 소스를 정의한 후 XA 데이터 소스에 속성을 추가할 수도 있습니다.

사용 가능한 모든 데이터 소스 매개변수의 전체 목록은 Datasource Parameters 섹션을 참조하십시오.

13.4. 데이터 소스 수정

데이터 소스 설정은 관리 콘솔 또는 관리 CLI를 사용하여 구성할 수 있습니다.

JBoss EAP 7을 사용하면 활성화된 속성과 같은 데이터 소스 속성 값에 표현식을 사용할 수 있습니다. 구성의 표현식 사용에 대한 자세한 내용은 속성 교체 섹션을 참조하십시오.

13.4.1. 비 XA 데이터 소스 수정

비 XA 데이터 소스 설정은 data-source management CLI 명령을 사용하여 업데이트할 수 있습니다. 관리 콘솔 의 데이터 소스 하위 시스템에서 데이터 소스 속성을 업데이트할 수도 있습니다.

참고

비 XA 데이터 소스는 JTA 트랜잭션과 통합될 수 있습니다. 데이터 소스를 JTA와 통합하려면 jta 매개변수가 true 로 설정되어 있는지 확인합니다.

데이터 소스 설정은 다음 관리 CLI 명령을 사용하여 업데이트할 수 있습니다.

data-source --name=DATASOURCE_NAME --ATTRIBUTE_NAME=ATTRIBUTE_VALUE
Copy to Clipboard Toggle word wrap
참고

관리형 도메인에서 --profile=PROFILE_NAME 인수를 지정해야 합니다.

변경 사항을 적용하려면 서버 다시 로드가 필요할 수 있습니다.

13.4.2. XA 데이터 소스 수정

XA 데이터 소스 설정은 xa-data-source management CLI 명령을 사용하여 업데이트할 수 있습니다. 관리 콘솔 의 데이터 소스 하위 시스템에서 데이터 소스 속성을 업데이트할 수도 있습니다.

  • 다음 관리 CLI 명령을 사용하여 XA 데이터 소스 설정을 업데이트할 수 있습니다.

    xa-data-source --name=XA_DATASOURCE_NAME --ATTRIBUTE_NAME=ATTRIBUTE_VALUE
    Copy to Clipboard Toggle word wrap
    참고

    관리형 도메인에서 --profile=PROFILE_NAME 인수를 지정해야 합니다.

  • 다음 관리 CLI 명령을 사용하여 XA 데이터 소스 속성을 추가할 수 있습니다.

    /subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME/xa-datasource-properties=PROPERTY:add(value=VALUE)
    Copy to Clipboard Toggle word wrap
    참고

    관리형 도메인에서 이 명령 앞에 /profile=PROFILE_NAME 이어야 합니다.

변경 사항을 적용하려면 서버 다시 로드가 필요할 수 있습니다.

13.5. 데이터 소스 제거

데이터 소스는 관리 콘솔 또는 관리 CLI를 사용하여 제거할 수 있습니다.

13.5.1. 비 XA 데이터 소스 제거

비 XA 데이터 소스는 data-source remove management CLI 명령을 사용하여 제거할 수 있습니다. 관리 콘솔의 데이터 소스 하위 시스템에서 데이터 소스 를 제거할 수도 있습니다.

data-source remove --name=DATASOURCE_NAME
Copy to Clipboard Toggle word wrap
참고

관리형 도메인에서 --profile=PROFILE_NAME 인수를 지정해야 합니다.

데이터 소스를 제거한 후 서버를 다시 로드해야 합니다.

13.5.2. XA 데이터 소스 제거

xa-data-source remove management CLI 명령을 사용하여 XA 데이터 소스를 제거할 수 있습니다. 관리 콘솔의 데이터 소스 하위 시스템에서 XA 데이터 소스 를 제거할 수도 있습니다.

xa-data-source remove --name=XA_DATASOURCE_NAME
Copy to Clipboard Toggle word wrap
참고

관리형 도메인에서 --profile=PROFILE_NAME 인수를 지정해야 합니다.

XA 데이터 소스를 제거한 후 서버를 다시 로드해야 합니다.

13.6. 데이터 소스 연결 테스트

JBoss EAP에 데이터 소스가 추가되면 연결을 테스트하여 설정이 올바른지 확인할 수 있습니다. 데이터 소스 연결은 관리 CLI 명령을 사용하거나 데이터 소스 하위 시스템의 Test Connection 버튼이 있는 관리 콘솔에서 테스트할 수 있습니다.

다음 관리 CLI 명령을 사용하여 데이터 소스의 연결을 테스트할 수 있습니다.

/subsystem=datasources/data-source=DATASOURCE_NAME:test-connection-in-pool
Copy to Clipboard Toggle word wrap
참고

관리형 도메인에서 이 명령 앞에 /host=HOSTNAME/server=SERVER_NAME 이어야 합니다.

13.7. XA 데이터 소스 복구

XA 데이터 소스는 트랜잭션 관리자가 조정하고 여러 리소스를 단일 트랜잭션에 확장할 수 있는 XA 글로벌 트랜잭션에 참여할 수 있는 데이터 소스입니다. 참가자 중 하나가 변경 사항을 커밋하지 못하면 다른 참가자가 트랜잭션을 중단하고 트랜잭션이 발생하기 전과 같이 상태를 복원합니다. 이는 일관성을 유지하고 잠재적인 데이터 손실 또는 손상을 방지하기 위한 것입니다.

XA 복구는 트랜잭션의 영향을 받는 모든 리소스가 업데이트되거나 롤백되도록 하는 프로세스로, 리소스 또는 트랜잭션 참가자가 충돌하거나 사용할 수 없게 되는 경우에도 마찬가지입니다. XA 복구는 사용자 개입없이 수행됩니다.

각 XA 리소스에는 구성과 관련된 복구 모듈이 있어야 합니다. 복구 모듈은 복구가 수행될 때 실행되는 코드입니다. JBoss EAP는 JDBC XA 리소스의 복구 모듈을 자동으로 등록합니다. 사용자 지정 복구 코드를 구현하려는 경우 XA 데이터 소스에 사용자 지정 모듈을 등록할 수 있습니다. 복구 모듈은 com.arjuna.ats.jta.recovery.XAResourceRecovery 클래스를 확장해야합니다.

13.7.1. XA 복구 구성

대부분의 JDBC 리소스의 경우 복구 모듈은 해당 리소스와 자동으로 연결됩니다. 이러한 경우 복구 모듈이 리소스에 연결하여 복구를 수행할 수 있는 옵션만 구성해야 합니다.

다음 표에서는 XA 복구와 관련된 XA 데이터 소스 매개변수를 설명합니다. 이러한 각 구성 속성은 데이터 소스를 생성하는 동안 또는 이후에 설정할 수 있습니다. 관리 콘솔 또는 관리 CLI를 사용하여 설정할 수 있습니다. XA 데이터 소스 구성에 대한 자세한 내용은 XA 데이터 소스 수정 을 참조하십시오.

Expand
표 13.2. XA 복구를 위한 데이터 소스 매개변수
속성설명

recovery-username

복구를 위해 리소스에 연결하는 데 사용할 사용자 이름입니다. 지정하지 않으면 데이터 소스 보안 설정이 사용됩니다.

recovery-password

복구를 위해 리소스에 연결하는 데 사용할 암호입니다. 지정하지 않으면 데이터 소스 보안 설정이 사용됩니다.

recovery-security-domain

복구를 위해 리소스에 연결하는 데 사용할 보안 도메인입니다.

recovery-plugin-class-name

사용자 지정 복구 모듈을 사용해야 하는 경우 이 속성을 모듈의 정규화된 클래스 이름으로 설정합니다. 모듈은 com.arjuna.ats.jta.recovery.XAResourceRecovery 클래스를 확장해야 합니다.

recovery-plugin-properties

속성을 설정해야 하는 사용자 지정 복구 모듈을 사용하는 경우 이 속성을 속성의 쉼표로 구분된 KEY=VALUE 쌍 목록으로 설정합니다.

XA 복구 비활성화

여러 XA 데이터 소스가 동일한 물리적 데이터베이스에 연결하는 경우 일반적으로 XA 복구는 해당 데이터 중 하나에 대해서만 구성해야 합니다.

다음 관리 CLI 명령을 사용하여 XA 데이터 소스에 대한 복구를 비활성화합니다.

/subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME:write-attribute(name=no-recovery,value=true)
Copy to Clipboard Toggle word wrap

13.7.2. Vendor-Specific XA Recovery

vendor-Specific 구성

일부 데이터베이스에는 JBoss EAP 트랜잭션 관리자가 관리하는 XA 트랜잭션을 결합하기 위해 특정 구성이 필요합니다. 자세한 내용 및 최신 정보는 데이터베이스 공급 업체의 설명서를 참조하십시오.

MySQL
특별한 구성이 필요하지 않습니다. 자세한 내용은 MySQL 설명서를 참조하십시오.
PostgreSQL 및 Postgres Plus Advanced Server
PostgreSQL이 XA 트랜잭션을 처리할 수 있으려면 구성 매개변수 max_prepared_ Cryostats를 0 보다 크고 max_connections 보다 크거나 같은 값으로 변경합니다.
Oracle

Oracle 사용자(사용자)복구에 필요한 테이블에 액세스할 수 있는지 확인합니다.

GRANT SELECT ON sys.dba_pending_transactions TO USER;
GRANT SELECT ON sys.pending_trans$ TO USER;
GRANT SELECT ON sys.dba_2pc_pending TO USER;
GRANT EXECUTE ON sys.dbms_xa TO USER;
Copy to Clipboard Toggle word wrap

Oracle 사용자에게 적절한 권한이 없는 경우 다음과 같은 오류가 표시될 수 있습니다.

WARN  [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.recovery.xarecovery1] Local XARecoveryModule.xaRecovery  got XA exception javax.transaction.xa.XAException, XAException.XAER_RMERR
Copy to Clipboard Toggle word wrap
Microsoft SQL Server
자세한 내용은 http://msdn.microsoft.com/en-us/library/aa342335.aspx 을 포함한 Microsoft SQL Server 설명서를 참조하십시오.
IBM DB2
특별한 구성이 필요하지 않습니다. 자세한 내용은 IBM DB2 설명서를 참조하십시오.
Sybase

Sybase는 데이터베이스에서 XA 트랜잭션을 활성화할 것으로 예상합니다. 올바른 데이터베이스 구성이 없으면 XA 트랜잭션이 작동하지 않습니다. enable xact 조정 매개변수는 Adaptive Server 트랜잭션 조정 서비스를 활성화하거나 비활성화합니다. 이 매개변수가 활성화되면 Adaptive Server는 원격 Adaptive Server 데이터 커밋 또는 원래 트랜잭션으로 롤백되도록 합니다.

트랜잭션 조정을 활성화하려면 다음을 사용합니다.

sp_configure 'enable xact coordination', 1
Copy to Clipboard Toggle word wrap
MariaDB
특별한 구성이 필요하지 않습니다. 자세한 내용은 MariaDB 설명서를 참조하십시오.
확인된 문제

XA 트랜잭션 처리와 관련된 알려진 문제는 JBoss EAP 7에서 지원되는 특정 데이터베이스 및 JDBC 드라이버 버전에 대한 것입니다. 지원되는 데이터베이스에 대한 최신 정보는 JBoss EAP 지원 구성을 참조하십시오.

MySQL
MySQL은 XA 트랜잭션을 완전히 처리할 수 없습니다. 클라이언트가 MySQL과 연결이 끊어지면 이러한 트랜잭션에 대한 모든 정보가 손실됩니다. 자세한 내용은 이 MySQL 버그 를 참조하십시오. 이 문제는 MySQL 5.7에서 해결되었습니다.
PostgreSQL 및 Postgres Plus Advanced Server

JDBC 드라이버는 2단계 커밋 단계 (2PC)의 커밋 단계에서 네트워크 오류가 발생하면 XAER_RMERR XAException 오류 코드를 반환합니다. 이 오류는 복구할 수 없는 치명적인 이벤트를 트랜잭션 관리자에게 신호하지만 트랜잭션은 데이터베이스 측의 결 상태에 남아 있으며 네트워크 연결이 다시 설정된 후 쉽게 수정할 수 있습니다. 올바른 반환 코드는 XAER_RMFAIL 또는 XAER_RETRY 여야 합니다. 잘못된 오류 코드로 인해 트랜잭션이 JBoss EAP 측의 Heuristic 상태로 남아 있으며 수동 개입이 필요한 데이터베이스에 잠금을 유지합니다. 자세한 내용은 이 PostgreSQL 버그 를 참조하십시오.

1단계 커밋 최적화가 사용될 때 연결 오류가 발생하는 경우 JDBC 드라이버는 XAER_RMERR 을 반환하지만 XAER_RMFAIL 오류 코드를 반환해야 합니다. 이 경우 데이터베이스는 1단계 커밋 중에 데이터를 커밋하고 해당 시점에 연결이 중단되면 트랜잭션이 롤백되었음을 알릴 수 있습니다.

Postgres Plus JDBC 드라이버는 Postgres Plus Server에 존재하는 모든 준비된 트랜잭션에 대한 XID를 반환하므로 XID가 속한 데이터베이스를 확인할 수 없습니다. JBoss EAP에서 동일한 데이터베이스에 대해 두 개 이상의 데이터 소스를 정의하는 경우 잘못된 계정에서 트랜잭션 복구 시도가 실행될 수 있으므로 복구에 실패합니다.

Oracle

JDBC 드라이버는 Recovery Manager가 일부 사용자 자격 증명으로 구성된 데이터 소스를 사용하여 복구를 호출할 때 데이터베이스 인스턴스의 모든 사용자에게 속하는 XID를 반환합니다. JDBC 드라이버는 ORA-24774 예외를 throw합니다. 다른 사용자에게 속하는 XID를 복구하려고 하므로 지정된 트랜잭션으로 전환할 수 없습니다.

이 문제의 해결 방법은 복구 데이터 소스 구성에 사용되는 자격 증명이 사용자에게 FORCE ANY TRANSACTION 권한을 부여하는 것입니다. 권한 구성에 대한 자세한 내용은 http://docs.oracle.com/database/121/ADMIN/ds_txnman.htm#ADMIN12259에서 확인할 수 있습니다.

Microsoft SQL Server

JDBC 드라이버는 2단계 커밋 단계 (2PC)의 커밋 단계에서 네트워크 오류가 발생하면 XAER_RMERR XAException 오류 코드를 반환합니다. 이 오류는 복구할 수 없는 치명적인 이벤트를 트랜잭션 관리자에게 신호하지만 트랜잭션은 데이터베이스 측의 결 상태에 남아 있으며 네트워크 연결이 다시 설정된 후 쉽게 수정할 수 있습니다. 올바른 반환 코드는 XAER_RMFAIL 또는 XAER_RETRY 여야 합니다. 잘못된 오류 코드로 인해 트랜잭션이 JBoss EAP 측의 Heuristic 상태로 남아 있으며 수동 개입이 필요한 데이터베이스에 잠금을 유지합니다. 자세한 내용은 이 Microsoft SQL Server 문제 보고서를 참조하십시오.

1단계 커밋 최적화가 사용될 때 연결 오류가 발생하는 경우 JDBC 드라이버는 XAER_RMERR 을 반환하지만 XAER_RMFAIL 오류 코드를 반환해야 합니다. 이 경우 데이터베이스는 1단계 커밋 중에 데이터를 커밋하고 해당 시점에 연결이 중단되면 트랜잭션이 롤백되었음을 알릴 수 있습니다.

IBM DB2
1단계 커밋 중에 연결 오류가 발생하면 JDBC 드라이버는 XAER_RETRY 를 반환하지만 XAER_RMFAIL 오류 코드를 반환해야 합니다. 이 경우 데이터베이스는 1단계 커밋 중에 데이터를 커밋하고 해당 시점에 연결이 중단되면 트랜잭션이 롤백되었음을 알릴 수 있습니다.
Sybase

JDBC 드라이버는 2단계 커밋 단계 (2PC)의 커밋 단계에서 네트워크 오류가 발생하면 XAER_RMERR XAException 오류 코드를 반환합니다. 이 오류는 복구할 수 없는 치명적인 이벤트를 트랜잭션 관리자에게 신호하지만 트랜잭션은 데이터베이스 측의 결 상태에 남아 있으며 네트워크 연결이 다시 설정된 후 쉽게 수정할 수 있습니다. 올바른 반환 코드는 XAER_RMFAIL 또는 XAER_RETRY 여야 합니다. 잘못된 오류 코드로 인해 트랜잭션이 JBoss EAP 측의 Heuristic 상태로 남아 있으며 수동 개입이 필요한 데이터베이스에 잠금을 유지합니다.

1단계 커밋 최적화가 사용될 때 연결 오류가 발생하는 경우 JDBC 드라이버는 XAER_RMERR 을 반환하지만 XAER_RMFAIL 오류 코드를 반환해야 합니다. 이 경우 데이터베이스는 1단계 커밋 중에 데이터를 커밋하고 해당 시점에 연결이 중단되면 트랜잭션이 롤백되었음을 알릴 수 있습니다.

MariaDB
MariaDB는 XA 트랜잭션을 완전히 처리할 수 없습니다. 클라이언트가 MariaDB와 연결이 끊어지면 이러한 트랜잭션에 대한 모든 정보가 손실됩니다.

13.8. 데이터베이스 연결 유효성 검사

데이터베이스 유지 관리, 네트워크 문제 또는 기타 중단 이벤트로 인해 JBoss EAP가 데이터베이스에 대한 연결이 끊어질 수 있습니다. 이러한 상황에서 복구하기 위해 데이터 소스에 대한 데이터베이스 연결 유효성 검사를 활성화할 수 있습니다.

데이터베이스 연결 유효성 검사를 구성하려면 유효성 검사 타이밍 메서드(검증이 발생하는 경우), 유효성 검사 메커니즘(검증을 수행하는 방법) 및 예외 처리 방법을 지정합니다.

  1. 검증 타이밍 방법 중 하나를 선택합니다.

    validate-on-match

    validate-on-match 옵션이 true 로 설정되면 다음 단계에서 지정된 검증 메커니즘을 사용하여 연결 풀에서 확인될 때마다 데이터베이스 연결의 유효성을 검사합니다.

    연결이 유효하지 않은 경우 로그에 경고가 기록되고 풀의 다음 연결이 검색됩니다. 이 프로세스는 유효한 연결이 발견될 때까지 계속됩니다. 풀의 모든 연결을 순환하지 않으려면 use-fast-fail 옵션을 사용할 수 있습니다. 풀에 유효한 연결이 없으면 새 연결이 생성됩니다. 연결 생성에 실패하면 요청하는 애플리케이션에 예외가 반환됩니다.

    이 설정은 가장 빠른 복구를 수행하지만 데이터베이스에 가장 높은 로드를 생성합니다. 그러나 최소 성능 적중이 문제가 되지 않는 경우 가장 안전한 선택입니다.

    background-validation

    background-validation 옵션을 true 로 설정하면 사용하기 전에 백그라운드 스레드에서 연결을 주기적으로 검증합니다. 검증 빈도는 background-validation-millis 속성으로 지정됩니다. background-validation-millis 의 기본값은 0 이며 이는 비활성화되어 있음을 의미합니다.

    background-validation-millis 속성의 값을 결정할 때 다음을 고려하십시오.

    • 이 값은 idle-timeout-minutes 설정과 동일한 값으로 설정해서는 안 됩니다.
    • 값이 낮아지면 풀이 더 자주 검증되고 풀에서 유효하지 않은 연결이 더 빨리 제거됩니다.
    • 더 낮은 값은 더 많은 데이터베이스 리소스를 사용합니다. 값이 클수록 연결 유효성 검사 검사가 줄어들고 데이터베이스 리소스를 더 적게 사용하지만 중단된 연결은 더 오랜 시간 동안 탐지되지 않습니다.
    참고

    이러한 옵션은 함께 사용할 수 없습니다. validate-on-matchtrue 로 설정된 경우 background-validationfalse 로 설정해야 합니다. background-validation 가 true로 설정된 경우 validate-on-matchfalse 로 설정해야 합니다.

  2. 검증 메커니즘 중 하나를 선택합니다.

    valid-connection-checker-class-name

    valid-connection-checker-class-name 을 사용하는 것이 선호되는 검증 메커니즘입니다. 이는 사용 중인 특정 데이터베이스에 대한 연결의 유효성을 검사하는 데 사용되는 연결 검사 클래스를 지정합니다. JBoss EAP는 다음과 같은 연결 검사기를 제공합니다.

    • org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLReplicationValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.novendor.JDBC4ValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.novendor.NullValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker
    check-valid-connection-sql

    check-valid-connection-sql 을 사용하여 연결 유효성을 검사하는 데 사용할 SQL 문을 제공합니다.

    다음은 Oracle 연결의 유효성을 검사하는 데 사용할 수 있는 예제 SQL 문입니다.

    select 1 from dual
    Copy to Clipboard Toggle word wrap

    다음은 MySQL 또는 PostgreSQL 연결의 유효성을 검사하는 데 사용할 수 있는 예제 SQL 문입니다.

    select 1
    Copy to Clipboard Toggle word wrap
  3. 예외 분류 클래스 이름을 설정합니다.

    예외가 치명적으로 표시되면 연결이 트랜잭션에 참여하더라도 즉시 연결이 닫힙니다. 예외 정렬 클래스 옵션을 사용하여 치명적인 연결 예외 후에 적절하게 감지 및 정리합니다. 데이터 소스 유형에 적합한 JBoss EAP 예외 분류기를 선택합니다.

    • org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.informix.InformixExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.novendor.NullExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter

13.9. 데이터 소스 보안

데이터 소스 보안은 데이터 소스 연결에 대한 암호를 암호화하거나 모호하게 하는 것을 나타냅니다. 이러한 암호는 구성 파일의 일반 텍스트로 저장할 수 있지만 이는 보안 위험을 나타냅니다.

데이터 소스 보안에 권장되는 솔루션은 보안 도메인 또는 암호 자격 증명 모음을 사용하는 것입니다. 각각에 대한 예는 아래에 포함되어 있습니다.

보안 도메인을 사용하여 데이터 소스 보안

데이터 소스에 대한 보안 도메인이 정의됩니다.

 <security-domain name="DsRealm" cache-type="default">
  <authentication>
    <login-module code="ConfiguredIdentity" flag="required">
      <module-option name="userName" value="sa"/>
      <module-option name="principal" value="sa"/>
      <module-option name="password" value="sa"/>
    </login-module>
  </authentication>
</security-domain>
Copy to Clipboard Toggle word wrap
참고

보안 도메인을 여러 데이터 소스와 함께 사용하는 경우 보안 도메인에서 캐싱을 비활성화해야 합니다. 이 작업은 cache-type 속성 값을 none 으로 설정하거나 속성을 완전히 제거하여 수행할 수 있습니다. 그러나 캐싱이 필요한 경우 각 데이터 소스에 별도의 보안 도메인을 사용해야 합니다.

그런 다음 데이터 소스 구성에서 DsRealm 보안 도메인을 참조합니다.

<datasources>
  <datasource jndi-name="java:jboss/datasources/securityDs"
    pool-name="securityDs">
    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
      <driver>h2</driver>
      <new-connection-sql>select current_user()</new-connection-sql>
      <security>
        <security-domain>DsRealm</security-domain>
      </security>
    </datasource>
</datasources>
Copy to Clipboard Toggle word wrap

보안 도메인 사용에 대한 자세한 내용은 Identity 관리 구성 가이드를 참조하십시오.

암호 자격 증명 모음을 사용하여 데이터 소스 보안
<security>
  <user-name>admin</user-name>
  <password>${VAULT::ds_ExampleDS::password::N2NhZDYzOTMtNWE0OS00ZGQ0LWE4MmEtMWNlMDMyNDdmNmI2TElORV9CUkVBS3ZhdWx0}</password>
</security>
Copy to Clipboard Toggle word wrap

Password Vault 사용에 대한 자세한 내용은 서버 보안 구성 가이드를 참조하십시오.

13.10. 데이터 소스 통계

정의된 데이터 소스에 대한 코어 JDBC 런타임 통계를 볼 수 있습니다. 사용 가능한 모든 통계의 자세한 목록은 데이터 소스 통계를 참조하십시오.

데이터 소스 통계 활성화

기본적으로 데이터 소스 통계는 활성화되지 않습니다. 다음 관리 CLI 명령을 사용하면 ExampleDS 데이터 소스에 대한 통계 컬렉션을 사용할 수 있습니다.

참고

관리형 도메인에서 이러한 명령 앞에 /profile=PROFILE_NAME.

/subsystem=datasources/data-source=ExampleDS/statistics=pool:write-attribute(name=statistics-enabled,value=true)
Copy to Clipboard Toggle word wrap
/subsystem=datasources/data-source=ExampleDS/statistics=jdbc:write-attribute(name=statistics-enabled,value=true)
Copy to Clipboard Toggle word wrap
데이터 소스 통계 보기

모든 데이터 소스 통계는 관리 CLI에서 검색할 수 있습니다. 이러한 통계의 하위 집합은 관리 콘솔의 런타임 탭에서 볼 수 있습니다.

다음 관리 CLI 명령은 ExampleDS 데이터 소스에 대한 코어 통계를 검색합니다.

참고

관리형 도메인에서 이러한 명령 앞에 /host=HOST_NAME/server=SERVER_NAME.

/subsystem=datasources/data-source=ExampleDS/statistics=pool:read-resource(include-runtime=true)
{
    "outcome" => "success",
    "result" => {
        "ActiveCount" => 1,
        "AvailableCount" => 20,
        "AverageBlockingTime" => 0L,
        "AverageCreationTime" => 122L,
        "AverageGetTime" => 128L,
        "AveragePoolTime" => 0L,
        "AverageUsageTime" => 0L,
        "BlockingFailureCount" => 0,
        "CreatedCount" => 1,
        "DestroyedCount" => 0,
        "IdleCount" => 1,
        ...
}
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령은 ExampleDS 데이터 소스에 대한 JDBC 통계를 검색합니다.

/subsystem=datasources/data-source=ExampleDS/statistics=jdbc:read-resource(include-runtime=true)
{
    "outcome" => "success",
    "result" => {
        "PreparedStatementCacheAccessCount" => 0L,
        "PreparedStatementCacheAddCount" => 0L,
        "PreparedStatementCacheCurrentSize" => 0,
        "PreparedStatementCacheDeleteCount" => 0L,
        "PreparedStatementCacheHitCount" => 0L,
        "PreparedStatementCacheMissCount" => 0L,
        "statistics-enabled" => true
    }
}
Copy to Clipboard Toggle word wrap
참고

통계는 런타임 정보이므로 include-runtime=true 인수를 지정해야 합니다.

13.11. 용량 정책

JBoss EAP는 데이터 소스를 포함하여 JCA 배포를 위한 용량 정책 정의를 지원합니다. 용량 정책은 풀의 물리적 연결(용량 증가) 및 삭제(용량 감소)를 정의합니다. 기본 정책은 용량 증가에 대한 요청당 한 번의 연결을 생성하고 유휴 시간 초과가 용량 감소를 위해 예약될 때 모든 연결을 제거하도록 설정됩니다.

용량 정책을 구성하려면 용량 증가 및/또는 감소 클래스를 지정해야 합니다.

명령 예

/subsystem=datasources/data-source=ExampleDS:write-attribute(name=capacity-incrementer-class, value="org.jboss.jca.core.connectionmanager.pool.capacity.SizeIncrementer")

/subsystem=datasources/data-source=ExampleDS:write-attribute(name=capacity-decrementer-class, value="org.jboss.jca.core.connectionmanager.pool.capacity.SizeDecrementer")
Copy to Clipboard Toggle word wrap

지정된 용량 증가 또는 감소 클래스에서 속성을 구성할 수도 있습니다.

명령 예

/subsystem=datasources/data-source=ExampleDS:write-attribute(name=capacity-incrementer-properties.size, value=2)

/subsystem=datasources/data-source=ExampleDS:write-attribute(name=capacity-decrementer-properties.size, value=2)
Copy to Clipboard Toggle word wrap

MaxPoolSize Incrementer 정책

클래스 이름:org.jboss.jca.core.connectionmanager.pool.capacity.MaxPoolSizeIncrementer

MaxPoolSize incrementer 정책은 각 요청의 최대 크기로 풀을 채웁니다. 이 정책은 항상 사용 가능한 최대 연결 수를 유지하려는 경우에 유용합니다.

크기 증분 정책

클래스 이름:org.jboss.jca.core.connectionmanager.pool.capacity.SizeIncrementer

크기 증가 정책은 각 요청에 대해 지정된 수의 연결 수로 풀을 채웁니다. 이 정책은 다음 요청에도 연결이 필요할 것으로 예상하여 요청당 추가 연결 수를 늘리려는 경우에 유용합니다.

Expand
표 13.3. 크기 정책 속성
이름설명

크기

생성해야 하는 연결 수

참고

이는 크기가 1인 기본 증가 정책입니다.

워터마크 증분 정책

클래스 이름:org.jboss.jca.core.connectionmanager.pool.capacity.WatermarkIncrementer

Watermark 증분 정책은 각 요청에 대해 지정된 연결 수로 풀을 채웁니다. 이 정책은 풀에 지정된 수의 연결을 항상 유지하려는 경우에 유용합니다.

Expand
표 13.4. 워터마크 정책 속성
이름설명

워터마크

연결 수에 대한 워터마크 수준입니다.

MinPoolSize Decrementer Policy

Class name: org.jboss.jca.core.connectionmanager.pool.capacity.MinPoolSizeDecrementer

MinPoolSize decrementer 정책은 각 요청의 최소 크기로 풀이 감소합니다. 이 정책은 유휴 시간 제한 요청 후 연결 수를 제한하려는 경우에 유용합니다. 풀은 FIFO (First In First Out) 방식으로 작동합니다.

크기 결정 정책

클래스 이름:org.jboss.jca.core.connectionmanager.pool.capacity.SizeDecrementer

크기 감소 정책은 각 유휴 타임아웃 요청에 대해 지정된 연결 수만큼 풀을 줄입니다.

Expand
표 13.5. 크기 정책 속성
이름설명

크기

삭제해야 하는 연결 수

이 정책은 유휴 시간 제한 요청당 추가 연결 수를 감소시키려면 시간 경과에 따라 풀 사용량이 줄어들 것으로 예상합니다.

풀은 FIFO (First In First Out) 방식으로 작동합니다.

TimedOut Decrementer 정책

Class name: org.jboss.jca.core.connectionmanager.pool.capacity.TimedOutDecrementer

TimedOut decrementer 정책은 각 유휴 시간 초과 요청에 대해 풀에서 시간 초과된 모든 연결을 제거합니다. 풀은 첫 번째 In Last Out (FILO) 방식으로 작동합니다.

참고

이 정책은 기본 감소 정책입니다.

TimedOut/FIFO Decrementer 정책

클래스 이름:org.jboss.jca.core.connectionmanager.pool.capacity.TimedOutFIFODecrementer

TimedOutFIFO 감소 정책은 각 유휴 시간 초과 요청에 대해 풀에서 시간 초과된 모든 연결을 제거합니다. 풀은 FIFO (First In First Out) 방식으로 작동합니다.

워터마크 삭제 정책

클래스 이름:org.jboss.jca.core.connectionmanager.pool.capacity.WatermarkDecrementer

Watermark decrementer 정책은 각 유휴 시간 초과 요청에 대해 지정된 연결 수로 풀을 줄입니다. 이 정책은 풀에 지정된 수의 연결을 항상 유지하려는 경우에 유용합니다. 풀은 FIFO (First In First Out) 방식으로 작동합니다.

Expand
표 13.6. 워터마크 정책 속성
이름설명

워터마크

연결 수에 대한 워터마크 수준입니다.

13.12. Enlistment Tracing

XAResource 인스턴스를 등록할 때 발생하는 오류 상황을 찾는 데 도움이 되도록 Enlistment 추적이 기록됩니다. 여기에는 성능 오버헤드가 있으므로 특정 상황에서 이러한 추적을 비활성화해야 할 수 있습니다.

enlistment-trace 특성을 false 로 설정하여 관리 CLI를 사용하여 데이터 소스에 대한 등록 추적 기록을 비활성화할 수 있습니다.

비 XA 데이터 소스에 대한 등록 추적을 비활성화합니다.

data-source --name=DATASOURCE_NAME --enlistment-trace=false
Copy to Clipboard Toggle word wrap

XA 데이터 소스에 대한 등록 추적을 비활성화합니다.

xa-data-source --name=XA_DATASOURCE_NAME --enlistment-trace=false
Copy to Clipboard Toggle word wrap
주의

등록 추적을 비활성화하면 트랜잭션 등록 중에 오류를 추적하기가 더 어려워집니다.

13.13. 데이터 소스 구성 예

13.13.1. MySQL 데이터 소스 예

이는 연결 정보, 기본 보안 및 검증 옵션이 포함된 MySQL 데이터 소스 구성의 예입니다.

MySQL 데이터 소스 구성 예
<datasources>
  <datasource jndi-name="java:jboss/MySqlDS" pool-name="MySqlDS">
    <connection-url>jdbc:mysql://localhost:3306/jbossdb</connection-url>
    <driver>mysql</driver>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
    </validation>
  </datasource>
  <drivers>
    <driver name="mysql" module="com.mysql">
      <driver-class>com.mysql.jdbc.Driver</driver-class>
      <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
MySQL JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
  <resources>
    <resource-root path="mysql-connector-java-5.1.36-bin.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. MySQL JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.mysql --resources=/path/to/mysql-connector-java-5.1.36-bin.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. MySQL JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource, driver-class-name=com.mysql.jdbc.Driver)
    Copy to Clipboard Toggle word wrap
  3. MySQL 데이터 소스를 추가합니다.

    data-source add --name=MySqlDS --jndi-name=java:jboss/MySqlDS --driver-name=mysql --connection-url=jdbc:mysql://localhost:3306/jbossdb --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter
    Copy to Clipboard Toggle word wrap

13.13.2. MySQL XA 데이터 소스 예

다음은 XA 데이터 소스 속성, 기본 보안 및 검증 옵션을 사용한 MySQL XA 데이터 소스 구성의 예입니다.

MySQL XA 데이터 소스 구성 예
<datasources>
  <xa-datasource jndi-name="java:jboss/MySqlXADS" pool-name="MySqlXADS">
    <xa-datasource-property name="ServerName">
      localhost
    </xa-datasource-property>
    <xa-datasource-property name="DatabaseName">
      mysqldb
    </xa-datasource-property>
    <driver>mysql</driver>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
    </validation>
  </xa-datasource>
  <drivers>
    <driver name="mysql" module="com.mysql">
      <driver-class>com.mysql.jdbc.Driver</driver-class>
      <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
MySQL JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
  <resources>
    <resource-root path="mysql-connector-java-5.1.36-bin.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. MySQL JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.mysql --resources=/path/to/mysql-connector-java-5.1.36-bin.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. MySQL JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource, driver-class-name=com.mysql.jdbc.Driver)
    Copy to Clipboard Toggle word wrap
  3. MySQL XA 데이터 소스를 추가합니다.

    xa-data-source add --name=MySqlXADS --jndi-name=java:jboss/MySqlXADS --driver-name=mysql --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter --xa-datasource-properties={"ServerName"=>"localhost","DatabaseName"=>"mysqldb"}
    Copy to Clipboard Toggle word wrap

13.13.3. PostgreSQL 데이터 소스 예

연결 정보, 기본 보안 및 검증 옵션이 포함된 PostgreSQL 데이터 소스 구성의 예입니다.

PostgreSQL 데이터 소스 구성 예
<datasources>
  <datasource jndi-name="java:jboss/PostgresDS" pool-name="PostgresDS">
    <connection-url>jdbc:postgresql://localhost:5432/postgresdb</connection-url>
    <driver>postgresql</driver>
    <security>
        <user-name>admin</user-name>
        <password>admin</password>
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
        <validate-on-match>true</validate-on-match>
        <background-validation>false</background-validation>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
    </validation>
  </datasource>
  <drivers>
    <driver name="postgresql" module="com.postgresql">
        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
PostgreSQL JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.postgresql">
  <resources>
    <resource-root path="postgresql-9.3-1102.jdbc4.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. PostgreSQL JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.postgresql --resources=/path/to/postgresql-9.3-1102.jdbc4.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. PostgreSQL JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=com.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
    Copy to Clipboard Toggle word wrap
  3. PostgreSQL 데이터 소스를 추가합니다.

    data-source add --name=PostgresDS --jndi-name=java:jboss/PostgresDS --driver-name=postgresql --connection-url=jdbc:postgresql://localhost:5432/postgresdb --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter
    Copy to Clipboard Toggle word wrap

13.13.4. PostgreSQL XA Datasource의 예

다음은 XA 데이터 소스 속성, 기본 보안 및 검증 옵션을 사용한 PostgreSQL XA 데이터 소스 구성의 예입니다.

PostgreSQL XA 데이터 소스 구성 예
<datasources>
  <xa-datasource jndi-name="java:jboss/PostgresXADS" pool-name="PostgresXADS">
    <xa-datasource-property name="ServerName">
      localhost
    </xa-datasource-property>
    <xa-datasource-property name="PortNumber">
      5432
    </xa-datasource-property>
    <xa-datasource-property name="DatabaseName">
      postgresdb
    </xa-datasource-property>
    <driver>postgresql</driver>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
    </validation>
  </xa-datasource>
  <drivers>
    <driver name="postgresql" module="com.postgresql">
      <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
PostgreSQL JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.postgresql">
  <resources>
    <resource-root path="postgresql-9.3-1102.jdbc4.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. PostgreSQL JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.postgresql --resources=/path/to/postgresql-9.3-1102.jdbc4.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. PostgreSQL JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=com.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
    Copy to Clipboard Toggle word wrap
  3. PostgreSQL XA 데이터 소스를 추가합니다.

    xa-data-source add --name=PostgresXADS --jndi-name=java:jboss/PostgresXADS --driver-name=postgresql --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter --xa-datasource-properties={"ServerName"=>"localhost","PortNumber"=>"5432","DatabaseName"=>"postgresdb"}
    Copy to Clipboard Toggle word wrap

13.13.5. Oracle Datasource의 예

이는 연결 정보, 기본 보안 및 검증 옵션이 포함된 Oracle 데이터 소스 구성의 예입니다.

Oracle Datasource 구성의 예
<datasources>
  <datasource jndi-name="java:jboss/OracleDS" pool-name="OracleDS">
    <connection-url>jdbc:oracle:thin:@localhost:1521:XE</connection-url>
    <driver>oracle</driver>
    <security>
        <user-name>admin</user-name>
        <password>admin</password>
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
        <validate-on-match>true</validate-on-match>
        <background-validation>false</background-validation>
        <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
    </validation>
  </datasource>
  <drivers>
    <driver name="oracle" module="com.oracle">
        <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
Oracle JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle">
    <resources>
        <resource-root path="ojdbc7.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. Oracle JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.oracle --resources=/path/to/misc/jdbc_drivers/oracle/ojdbc7.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. Oracle JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=oracle:add(driver-name=oracle,driver-module-name=com.oracle,driver-xa-datasource-class-name=oracle.jdbc.xa.client.OracleXADataSource)
    Copy to Clipboard Toggle word wrap
  3. Oracle 데이터 소스를 추가합니다.

    data-source add --name=OracleDS --jndi-name=java:jboss/OracleDS --driver-name=oracle --connection-url=jdbc:oracle:thin:@localhost:1521:XE --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter --stale-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker
    Copy to Clipboard Toggle word wrap

13.13.6. Oracle XA Datasource의 예

중요

XA 복구가 올바르게 작동하려면 Oracle XA 데이터 소스에 액세스하는 사용자에게 다음 설정을 적용해야 합니다. value 사용자는 JBoss EAP에서 Oracle으로 연결하기 위해 정의된 사용자입니다.

  • GRANT SELECT ON sys.dba_pending_ Cryostats TO 사용자;
  • GRANT SELECT ON sys.pending_trans$ TO user;
  • GRANT SELECT ON sys.dba_2pc_pending TO 사용자;
  • sys.dbms_xa TO 사용자 시 EXECUTE ON sys.dbms_xa

다음은 XA 데이터 소스 속성, 기본 보안 및 검증 옵션을 사용한 Oracle XA 데이터 소스 구성의 예입니다.

Oracle XA 데이터 소스 구성의 예
<datasources>
  <xa-datasource jndi-name="java:jboss/OracleXADS" pool-name="OracleXADS">
    <xa-datasource-property name="URL">
      jdbc:oracle:thin:@oracleHostName:1521:orcl
    </xa-datasource-property>
    <driver>oracle</driver>
    <xa-pool>
      <is-same-rm-override>false</is-same-rm-override>
    </xa-pool>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
    </validation>
  </xa-datasource>
  <drivers>
    <driver name="oracle" module="com.oracle">
      <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
Oracle JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle">
    <resources>
        <resource-root path="ojdbc7.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. Oracle JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.oracle --resources=/path/to/misc/jdbc_drivers/oracle/ojdbc7.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. Oracle JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=oracle:add(driver-name=oracle,driver-module-name=com.oracle,driver-xa-datasource-class-name=oracle.jdbc.xa.client.OracleXADataSource)
    Copy to Clipboard Toggle word wrap
  3. Oracle XA 데이터 소스를 추가합니다.

    xa-data-source add --name=OracleXADS --jndi-name=java:jboss/OracleXADS --driver-name=oracle --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter --stale-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker --same-rm-override=false --xa-datasource-properties={"URL"=>"jdbc:oracle:thin:@oracleHostName:1521:orcl"}
    Copy to Clipboard Toggle word wrap

13.13.7. Microsoft SQL Server Datasource의 예

연결 정보, 기본 보안 및 검증 옵션이 포함된 Microsoft SQL Server 데이터 소스 구성의 예입니다.

Microsoft SQL Server 데이터 소스 구성의 예
<datasources>
  <datasource jndi-name="java:jboss/MSSQLDS" pool-name="MSSQLDS">
    <connection-url>jdbc:sqlserver://localhost:1433;DatabaseName=MyDatabase</connection-url>
    <driver>sqlserver</driver>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter"/>
    </validation>
  </datasource>
  <drivers>
    <driver name="sqlserver" module="com.microsoft">
      <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
Microsoft SQL Server JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.microsoft">
  <resources>
    <resource-root path="sqljdbc41.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. Microsoft SQL Server JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.microsoft --resources=/path/to/sqljdbc41.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. Microsoft SQL Server JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=sqlserver:add(driver-name=sqlserver,driver-module-name=com.microsoft,driver-xa-datasource-class-name=com.microsoft.sqlserver.jdbc.SQLServerXADataSource)
    Copy to Clipboard Toggle word wrap
  3. Microsoft SQL Server 데이터 소스를 추가합니다.

    data-source add --name=MSSQLDS --jndi-name=java:jboss/MSSQLDS --driver-name=sqlserver --connection-url=jdbc:sqlserver://localhost:1433;DatabaseName=MyDatabase --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter
    Copy to Clipboard Toggle word wrap

13.13.8. Microsoft SQL Server XA Datasource의 예

다음은 XA 데이터 소스 속성, 기본 보안 및 유효성 검사 옵션을 사용하는 Microsoft SQL Server XA 데이터 소스 구성의 예입니다.

Microsoft SQL Server XA 데이터 소스 구성의 예
<datasources>
  <xa-datasource jndi-name="java:jboss/MSSQLXADS" pool-name="MSSQLXADS">
    <xa-datasource-property name="ServerName">
      localhost
    </xa-datasource-property>
    <xa-datasource-property name="DatabaseName">
      mssqldb
    </xa-datasource-property>
    <xa-datasource-property name="SelectMethod">
      cursor
    </xa-datasource-property>
    <driver>sqlserver</driver>
    <xa-pool>
      <is-same-rm-override>false</is-same-rm-override>
    </xa-pool>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter"/>
    </validation>
  </xa-datasource>
  <drivers>
    <driver name="sqlserver" module="com.microsoft">
      <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
Microsoft SQL Server JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.microsoft">
  <resources>
    <resource-root path="sqljdbc41.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. Microsoft SQL Server JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.microsoft --resources=/path/to/sqljdbc41.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. Microsoft SQL Server JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=sqlserver:add(driver-name=sqlserver,driver-module-name=com.microsoft,driver-xa-datasource-class-name=com.microsoft.sqlserver.jdbc.SQLServerXADataSource)
    Copy to Clipboard Toggle word wrap
  3. Microsoft SQL Server XA 데이터 소스를 추가합니다.

    xa-data-source add --name=MSSQLXADS --jndi-name=java:jboss/MSSQLXADS --driver-name=sqlserver --user-name=admin --password=admin --validate-on-match=true --background-validation=false --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter --same-rm-override=false --xa-datasource-properties={"ServerName"=>"localhost","DatabaseName"=>"mssqldb","SelectMethod"=>"cursor"}
    Copy to Clipboard Toggle word wrap

13.13.9. IBM DB2 Datasource의 예

이는 연결 정보, 기본 보안 및 검증 옵션이 포함된 IBM DB2 데이터 소스 구성의 예입니다.

IBM DB2 데이터 소스 구성의 예
<datasources>
  <datasource jndi-name="java:jboss/DB2DS" pool-name="DB2DS">
    <connection-url>jdbc:db2://localhost:50000/ibmdb2db</connection-url>
    <driver>ibmdb2</driver>
    <pool>
      <min-pool-size>0</min-pool-size>
      <max-pool-size>50</max-pool-size>
    </pool>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker"/>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter"/>
    </validation>
  </datasource>
  <drivers>
    <driver name="ibmdb2" module="com.ibm">
        <xa-datasource-class>com.ibm.db2.jcc.DB2XADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
IBM DB2 JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.ibm">
  <resources>
    <resource-root path="db2jcc4.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. IBM DB2 JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.ibm --resources=/path/to/db2jcc4.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. IBM DB2 JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=ibmdb2:add(driver-name=ibmdb2,driver-module-name=com.ibm,driver-xa-datasource-class-name=com.ibm.db2.jcc.DB2XADataSource)
    Copy to Clipboard Toggle word wrap
  3. IBM DB2 데이터 소스를 추가합니다.

    data-source add --name=DB2DS --jndi-name=java:jboss/DB2DS --driver-name=ibmdb2 --connection-url=jdbc:db2://localhost:50000/ibmdb2db --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter --stale-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker --min-pool-size=0 --max-pool-size=50
    Copy to Clipboard Toggle word wrap

13.13.10. IBM DB2 XA Datasource의 예

다음은 XA 데이터 소스 속성, 기본 보안 및 검증 옵션이 포함된 IBM DB2 XA 데이터 소스 구성의 예입니다.

IBM DB2 XA Datasource Configuration의 예
<datasources>
  <xa-datasource jndi-name="java:jboss/DB2XADS" pool-name="DB2XADS">
    <xa-datasource-property name="ServerName">
      localhost
    </xa-datasource-property>
    <xa-datasource-property name="DatabaseName">
      ibmdb2db
    </xa-datasource-property>
    <xa-datasource-property name="PortNumber">
      50000
    </xa-datasource-property>
    <xa-datasource-property name="DriverType">
      4
    </xa-datasource-property>
    <driver>ibmdb2</driver>
    <xa-pool>
      <is-same-rm-override>false</is-same-rm-override>
    </xa-pool>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <recovery>
      <recover-plugin class-name="org.jboss.jca.core.recovery.ConfigurableRecoveryPlugin">
        <config-property name="EnableIsValid">
          false
        </config-property>
        <config-property name="IsValidOverride">
          false
        </config-property>
        <config-property name="EnableClose">
          false
        </config-property>
      </recover-plugin>
    </recovery>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker"/>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter"/>
    </validation>
  </xa-datasource>
  <drivers>
    <driver name="ibmdb2" module="com.ibm">
        <xa-datasource-class>com.ibm.db2.jcc.DB2XADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
IBM DB2 JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.ibm">
  <resources>
    <resource-root path="db2jcc4.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. IBM DB2 JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.ibm --resources=/path/to/db2jcc4.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. IBM DB2 JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=ibmdb2:add(driver-name=ibmdb2,driver-module-name=com.ibm,driver-xa-datasource-class-name=com.ibm.db2.jcc.DB2XADataSource)
    Copy to Clipboard Toggle word wrap
  3. IBM DB2 XA 데이터 소스를 추가합니다.

    xa-data-source add --name=DB2XADS --jndi-name=java:jboss/DB2XADS --driver-name=ibmdb2 --user-name=admin --password=admin --validate-on-match=true --background-validation=false --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter --stale-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker --same-rm-override=false --recovery-plugin-class-name=org.jboss.jca.core.recovery.ConfigurableRecoveryPlugin --recovery-plugin-properties={"EnableIsValid"=>"false","IsValidOverride"=>"false","EnableClose"=>"false"} --xa-datasource-properties={"ServerName"=>"localhost","DatabaseName"=>"ibmdb2db","PortNumber"=>"50000","DriverType"=>"4"}
    Copy to Clipboard Toggle word wrap

13.13.11. Sybase Datasource의 예

다음은 연결 정보, 기본 보안 및 검증 옵션이 포함된 Sybase 데이터 소스 구성의 예입니다.

Sybase Datasource 구성의 예
<datasources>
  <datasource jndi-name="java:jboss/SybaseDB" pool-name="SybaseDB">
    <connection-url>jdbc:sybase:Tds:localhost:5000/DATABASE?JCONNECT_VERSION=6</connection-url>
    <driver>sybase</driver>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter"/>
    </validation>
  </datasource>
  <drivers>
    <driver name="sybase" module="com.sybase">
      <xa-datasource-class>com.sybase.jdbc4.jdbc.SybXADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
Sybase JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.sybase">
    <resources>
      <resource-root path="jconn4.jar"/>
    </resources>
    <dependencies>
      <module name="javax.api"/>
      <module name="javax.transaction.api"/>
    </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. Sybase JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.sybase --resources=/path/to/jconn4.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. Sybase JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=sybase:add(driver-name=sybase,driver-module-name=com.sybase,driver-xa-datasource-class-name=com.sybase.jdbc4.jdbc.SybXADataSource)
    Copy to Clipboard Toggle word wrap
  3. Sybase 데이터 소스를 추가합니다.

    data-source add --name=SybaseDB --jndi-name=java:jboss/SybaseDB --driver-name=sybase --connection-url=jdbc:sybase:Tds:localhost:5000/DATABASE?JCONNECT_VERSION=6 --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter
    Copy to Clipboard Toggle word wrap

13.13.12. Sybase XA Datasource의 예

다음은 XA 데이터 소스 속성, 기본 보안 및 검증 옵션을 사용한 Sybase XA 데이터 소스 구성의 예입니다.

Sybase XA 데이터 소스 구성의 예
<datasources>
  <xa-datasource jndi-name="java:jboss/SybaseXADS" pool-name="SybaseXADS">
    <xa-datasource-property name="ServerName">
      localhost
    </xa-datasource-property>
    <xa-datasource-property name="DatabaseName">
      mydatabase
    </xa-datasource-property>
    <xa-datasource-property name="PortNumber">
      4100
    </xa-datasource-property>
    <xa-datasource-property name="NetworkProtocol">
      Tds
    </xa-datasource-property>
    <driver>sybase</driver>
    <xa-pool>
      <is-same-rm-override>false</is-same-rm-override>
    </xa-pool>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter"/>
    </validation>
  </xa-datasource>
  <drivers>
    <driver name="sybase" module="com.sybase">
      <xa-datasource-class>com.sybase.jdbc4.jdbc.SybXADataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
Sybase JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.sybase">
    <resources>
      <resource-root path="jconn4.jar"/>
    </resources>
    <dependencies>
      <module name="javax.api"/>
      <module name="javax.transaction.api"/>
    </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. Sybase JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=com.sybase --resources=/path/to/jconn4.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. Sybase JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=sybase:add(driver-name=sybase,driver-module-name=com.sybase,driver-xa-datasource-class-name=com.sybase.jdbc4.jdbc.SybXADataSource)
    Copy to Clipboard Toggle word wrap
  3. Sybase XA 데이터 소스를 추가합니다.

    xa-data-source add --name=SybaseXADS --jndi-name=java:jboss/SybaseXADS --driver-name=sybase --user-name=admin --password=admin --validate-on-match=true --background-validation=false --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter --same-rm-override=false --xa-datasource-properties={"ServerName"=>"localhost","DatabaseName"=>"mydatabase","PortNumber"=>"4100","NetworkProtocol"=>"Tds"}
    Copy to Clipboard Toggle word wrap

13.13.13. MariaDB 데이터 소스 예

다음은 연결 정보, 기본 보안 및 검증 옵션이 포함된 MariaDB 데이터 소스 구성의 예입니다.

MariaDB 데이터 소스 구성 예
<datasources>
  <datasource jndi-name="java:jboss/MariaDBDS" pool-name="MariaDBDS">
    <connection-url>jdbc:mariadb://localhost:3306/jbossdb</connection-url>
    <driver>mariadb</driver>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
    </validation>
  </datasource>
  <drivers>
    <driver name="mariadb" module="org.mariadb">
      <driver-class>org.mariadb.jdbc.Driver</driver-class>
      <xa-datasource-class>org.mariadb.jdbc.MySQLDataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
MariaDB JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="org.mariadb">
  <resources>
    <resource-root path="mariadb-java-client-1.2.3.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. MariaDB JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=org.mariadb --resources=/path/to/mariadb-java-client-1.2.3.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. MariaDB JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=mariadb:add(driver-name=mariadb,driver-module-name=org.mariadb,driver-xa-datasource-class-name=org.mariadb.jdbc.MySQLDataSource, driver-class-name=org.mariadb.jdbc.Driver)
    Copy to Clipboard Toggle word wrap
  3. MariaDB 데이터 소스를 추가합니다.

    data-source add --name=MariaDBDS --jndi-name=java:jboss/MariaDBDS --driver-name=mariadb --connection-url=jdbc:mariadb://localhost:3306/jbossdb --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter
    Copy to Clipboard Toggle word wrap

13.13.14. MariaDB XA Datasource의 예

다음은 XA 데이터 소스 속성, 기본 보안 및 검증 옵션을 사용한 MariaDB XA 데이터 소스 구성의 예입니다.

MariaDB XA 데이터 소스 구성 예
<datasources>
  <xa-datasource jndi-name="java:jboss/MariaDBXADS" pool-name="MariaDBXADS">
    <xa-datasource-property name="ServerName">
      localhost
    </xa-datasource-property>
    <xa-datasource-property name="DatabaseName">
      mariadbdb
    </xa-datasource-property>
    <driver>mariadb</driver>
    <security>
      <user-name>admin</user-name>
      <password>admin</password>
    </security>
    <validation>
      <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
      <validate-on-match>true</validate-on-match>
      <background-validation>false</background-validation>
      <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
    </validation>
  </xa-datasource>
  <drivers>
    <driver name="mariadb" module="org.mariadb">
      <driver-class>org.mariadb.jdbc.Driver</driver-class>
      <xa-datasource-class>org.mariadb.jdbc.MySQLDataSource</xa-datasource-class>
    </driver>
  </drivers>
</datasources>
Copy to Clipboard Toggle word wrap
MariaDB JDBC Driver module.xml 파일의 예
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="org.mariadb">
  <resources>
    <resource-root path="mariadb-java-client-1.2.3.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap
관리 CLI 명령 예

이 예제 구성은 다음 관리 CLI 명령을 사용하여 수행할 수 있습니다.

  1. MariaDB JDBC 드라이버를 코어 모듈로 추가합니다.

    module add --name=org.mariadb --resources=/path/to/mariadb-java-client-1.2.3.jar --dependencies=javax.api,javax.transaction.api
    Copy to Clipboard Toggle word wrap
    중요

    모듈 관리 CLI 명령을 사용하여 모듈을 추가 및 제거하는 것은 기술 프리뷰로 만 제공됩니다. 이 명령은 관리형 도메인에서 사용하거나 관리 CLI에 원격으로 연결할 때 적합하지 않습니다. 모듈은 프로덕션 환경에서 수동으로 추가제거해야 합니다.

  2. MariaDB JDBC 드라이버를 등록합니다.

    /subsystem=datasources/jdbc-driver=mariadb:add(driver-name=mariadb,driver-module-name=org.mariadb,driver-xa-datasource-class-name=org.mariadb.jdbc.MySQLDataSource, driver-class-name=org.mariadb.jdbc.Driver)
    Copy to Clipboard Toggle word wrap
  3. MariaDB XA 데이터 소스를 추가합니다.

    xa-data-source add --name=MariaDBXADS --jndi-name=java:jboss/MariaDBXADS --driver-name=mariadb --user-name=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter --xa-datasource-properties={"ServerName"=>"localhost","DatabaseName"=>"mariadbdb"}
    Copy to Clipboard Toggle word wrap

14장. 트랜잭션 구성

14.1. 트랜잭션 Cryostat 구성

14.1.1. 트랜잭션 관리자 구성

웹 기반 관리 콘솔 또는 명령줄 관리 CLI를 사용하여 트랜잭션 관리자를 구성할 수 있습니다.

관리 콘솔을 사용하여 트랜잭션 관리자 구성

다음 단계에서는 웹 기반 관리 콘솔을 사용하여 트랜잭션 관리자를 구성하는 방법을 설명합니다.

  1. 화면 상단에서 구성 탭을 선택합니다.
  2. JBoss EAP를 관리형 도메인으로 실행하는 경우 원하는 프로필을 선택하여 수정합니다.
  3. Cryo stat 목록에서 트랜잭션 을 선택하고 보기를 클릭합니다.
  4. 복구 옵션 복구 와 같이 편집하려는 설정에 대해 적절한 탭에서 편집을 클릭합니다.
  5. 필요한 변경 사항을 수행하고 저장을 클릭하여 변경 사항을 저장합니다.
  6. 도움말이 필요하십니까? 를 클릭합니다.
관리 CLI를 사용하여 트랜잭션 관리자 구성

관리 CLI를 사용하여 일련의 명령을 사용하여 트랜잭션 관리자를 구성할 수 있습니다. 모든 명령은 관리형 도메인의 기본 프로필 경우 모두 독립 실행형 서버의 /subsystem= Cryostats 또는 /profile= default / subsystem= Cryostats/로 시작합니다.

모든 트랜잭션 관리자 구성 옵션의 자세한 목록은 JBoss EAP의 트랜잭션 관리자 구성 옵션을 참조하십시오.

14.1.2. JTA를 사용하도록 데이터 소스 구성

이 작업에서는 데이터 소스에서 JTA(Java Transaction API)를 활성화하는 방법을 보여줍니다.

사전 요구 사항
Java Transaction API를 사용하도록 데이터 소스 구성
  1. 다음 관리 CLI 명령을 사용하여 jta 속성을 true 로 설정합니다.

    /subsystem=datasources/data-source=DATASOURCE_NAME:write-attribute(name=jta,value=true)
    Copy to Clipboard Toggle word wrap
    참고

    관리형 도메인에서 이 명령 앞에 /profile=PROFILE_NAME.

  2. 변경 사항을 적용하려면 서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap

이제 데이터 소스가 JTA를 사용하도록 구성되어 있습니다.

14.1.3. 트랜잭션 로그 메시지 정보

트랜잭션 로거에 대한 DEBUG 로그 수준을 사용하여 로그 파일을 읽을 수 있는 동안 트랜잭션 상태를 추적할 수 있습니다. 자세한 디버깅은 TRACE 로그 수준을 사용합니다. 트랜잭션 로거 구성에 대한 정보는 트랜잭션의 로깅 구성 을 참조하십시오.

트랜잭션 관리자(TM)는 TRACE 로그 수준에 로그인하도록 구성된 경우 많은 로깅 정보를 생성할 수 있습니다. 다음은 가장 일반적으로 사용되는 메시지 중 일부입니다. 이 목록은 포괄적이지 않으므로 이 목록 이외의 메시지가 표시될 수 있습니다.

Expand
표 14.1. 트랜잭션 상태 변경

트랜잭션 시작

트랜잭션이 시작되면 메서드 com.arjuna.ats.arjuna.coordinator.BasicAction 이 실행되고 작업 ID <uid>에 대한 BasicAction:: Begin () 메시지와 함께 로그에 표시됩니다.

트랜잭션 커밋

트랜잭션 커밋 시 com.arjuna.ats.arjuna.coordinator.BasicAction.BasicAction이 실행되고 action-id < Cryostat uid>에 대한 BasicAction:: Commit () 메시지와 함께 로그에 표시됩니다.

트랜잭션 롤백

트랜잭션이 롤백되면 com.arjuna.ats.arjuna.coordinator.BasicAction.BasicAction의 메서드 Rollback 이 실행되고 action-id < Cryostat uid>에 대한 BasicAction::Rollback() 이라는 메시지와 함께 로그에 표시됩니다.

트랜잭션 시간 초과

트랜잭션이 시간 초과될 때, com.arjuna.ats.arjuna.coordinator.TransactionReaper트랜잭션 doCancellations 가 실행되고 <#159 uid>를 취소하려는 Reaper Worker <thread id >로 로그에 표시됩니다. 그런 다음 위에 표시된 것과 동일한 스레드가 트랜잭션을 롤백하는 것을 확인할 수 있습니다.

14.1.4. 트랜잭션에 대한 로깅 구성

JBoss EAP의 다른 로깅 설정과 관계없이 트랜잭션에 대해 로깅된 정보의 양을 제어할 수 있습니다. 관리 콘솔 또는 관리 CLI를 사용하여 로깅 설정을 구성할 수 있습니다.

관리 콘솔을 사용하여 트랜잭션 로거 구성
  1. 로깅 하위 시스템 구성으로 이동합니다.

    1. 관리 콘솔에서 구성 탭을 클릭합니다. 관리형 도메인을 사용하는 경우 먼저 적절한 서버 프로필을 선택해야 합니다.
    2. 로깅 하위 시스템을 선택하고 View 를 클릭합니다.
  2. com.arjuna 속성을 편집합니다.

    로그 범주 탭을 선택합니다. com.arjuna 항목이 이미 있습니다. com.arjuna 를 선택하고 특성 섹션에서 편집을 클릭합니다. 로그 수준을 변경하고 상위 처리기를 사용할지 여부를 선택할 수 있습니다.

    • 로그 수준:

      트랜잭션에서 많은 로깅 출력을 생성할 수 있으므로 기본 로깅 수준은 WARN 으로 설정되어 트랜잭션 출력에서 서버 로그를 압도하지 않습니다. 트랜잭션 처리 세부 정보를 확인해야 하는 경우 트랜잭션 ID가 표시되도록 TRACE 로그 수준을 사용합니다.

    • 상위 핸들러 사용:

      상위 처리기는 로거가 해당 출력을 상위 로거에 보내야 하는지 여부를 나타냅니다. 기본 동작은 true 입니다.

  3. 저장을 클릭하여 변경 사항을 저장합니다.
관리 CLI를 사용하여 트랜잭션 로거 구성

다음 명령을 사용하여 관리 CLI에서 로깅 수준을 설정합니다. 독립 실행형 서버의 경우 명령에서 /profile=default 를 제거합니다.

/profile=default/subsystem=logging/logger=com.arjuna:write-attribute(name=level,value=VALUE)
Copy to Clipboard Toggle word wrap

14.2. 트랜잭션 관리

14.2.1. 트랜잭션 검색 및 관리

관리 CLI는 트랜잭션 레코드를 검색하고 조작하는 기능을 지원합니다. 이 기능은 JBoss EAP의 관리 API와 TM 간의 상호 작용에 의해 제공됩니다.

TM은 오브젝트 저장소라는 영구 스토리지에 있는 각 보류 중인 트랜잭션 및 트랜잭션에 대한 정보를 저장합니다. 관리 API는 오브젝트 저장소를 log-store 라는 리소스로 노출합니다. 프로브 작업은 트랜잭션 로그를 읽고 각 레코드에 대한 노드 경로를 생성합니다. 로그 저장소를 새로 고쳐야 할 때마다 프로브 작업을 수동으로 호출할 수 있습니다. 트랜잭션 로그가 표시되고 빠르게 사라지는 것은 정상입니다.

로그 저장소 새로 고침

다음 명령은 관리형 도메인에서 프로필 기본값 을 사용하는 서버 그룹의 로그 저장소를 새로 고칩니다. 독립 실행형 서버의 경우 명령에서 profile=default 를 제거합니다.

/profile=default/subsystem=transactions/log-store=log-store:probe
Copy to Clipboard Toggle word wrap
모든 준비 트랜잭션 보기

준비된 트랜잭션을 모두 보려면 먼저 로그 저장소를 새로 고칩니다( 로그 저장소 새로 고침참조) 파일 시스템 ls 명령과 유사하게 작동하는 다음 명령을 실행합니다.

ls /profile=default/subsystem=transactions/log-store=log-store/transactions
Copy to Clipboard Toggle word wrap

또는

/host=master/server=server-one/subsystem=transactions/log-store=log-store:read-children-names(child-type=transactions)
Copy to Clipboard Toggle word wrap

각 트랜잭션이 고유 식별자와 함께 표시됩니다. 개별 트랜잭션에 대해 개별 작업을 실행할 수 있습니다( Transaction 관리참조).

14.2.1.1. 트랜잭션 관리
트랜잭션의 속성 보기

JNDI 이름, EIS 제품 이름 및 버전 또는 해당 상태와 같은 트랜잭션에 대한 정보를 보려면 read-resource 작업을 사용합니다.

/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:read-resource
Copy to Clipboard Toggle word wrap
거래 참여자의 세부 정보 보기

각 트랜잭션 로그에는 참가자 라는 하위 요소가 포함되어 있습니다. 이 요소에 대한 읽기 리소스 작업을 사용하여 트랜잭션 참가자의 세부 정보를 확인합니다. 참가자가 JNDI 이름으로 식별됩니다.

/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=java\:\/JmsXA:read-resource
Copy to Clipboard Toggle word wrap

결과는 다음과 유사할 수 있습니다.

{
   "outcome" => "success",
   "result" => {
       "eis-product-name" => "ActiveMQ",
       "eis-product-version" => "2.0",
       "jndi-name" => "java:/JmsXA",
       "status" => "HEURISTIC",
       "type" => "/StateManager/AbstractRecord/XAResourceRecord"
   }
}
Copy to Clipboard Toggle word wrap

여기에 표시된 결과 상태는 HEURISTIC 상태로 되어 복구할 수 있습니다. 자세한 내용은 트랜잭션 참여자 복구를 참조하십시오.

특수한 경우 오브젝트 저장소에 고립된 레코드, 즉 로그에 해당 트랜잭션 레코드가 없는 XAResourceRecords를 만들 수 있습니다. 예를 들어 TM이 기록되기 전에 준비되었지만 중단된 XA 리소스는 도메인 관리 API에 액세스할 수 없습니다. 이러한 레코드에 액세스하려면 관리 옵션 expose-all-logstrue 로 설정해야 합니다. 이 옵션은 관리 모델에 저장되지 않으며 서버를 다시 시작할 때 false 로 복원됩니다.

/profile=default/subsystem=transactions/log-store=log-store:write-attribute(name=expose-all-logs, value=true)
Copy to Clipboard Toggle word wrap

이 대체 명령을 사용하면 집계된 트랜잭션의 참여자 ID를 표시할 수 있습니다.

/host=master/server=server-one/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:read-children-names(child-type=participants)
Copy to Clipboard Toggle word wrap
트랜잭션 삭제

각 트랜잭션 로그는 트랜잭션을 나타내는 트랜잭션 로그를 삭제하기 위한 삭제 작업을 지원합니다.

/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:delete
Copy to Clipboard Toggle word wrap

이는 거래의 모든 참가자도 삭제됩니다.

거래 참여자 복구

각 거래 참여자는 복구 작업을 사용하여 복구를 지원합니다.

/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=2:recover
Copy to Clipboard Toggle word wrap

트랜잭션 참여자의 상태가 HEURISTIC 인 경우 복구 작업에서 상태를 PREPARE 로 전환하고 주기적으로 복구 프로세스를 수행하여 커밋을 재생하도록 요청합니다.

커밋이 성공하면 참가자가 트랜잭션 로그에서 제거됩니다. 로그 저장소 에서 프로브 작업을 실행하고 참여자가 더 이상 나열되지 않았는지 확인하여 이를 확인할 수 있습니다. 이것이 마지막 참가자인 경우 거래도 삭제됩니다.

트랜잭션 참가자의 상태 새로 고침

복구가 필요한 경우 복구를 시도하기 전에 새로 고침 작업을 사용하여 복구가 계속 필요한지 확인할 수 있습니다.

/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=2:refresh
Copy to Clipboard Toggle word wrap

14.2.2. 트랜잭션 통계 보기

트랜잭션 관리자 통계가 활성화된 경우 트랜잭션 관리자가 처리된 트랜잭션에 대한 통계를 볼 수 있습니다. 트랜잭션 관리자 통계를 활성화하는 방법에 대한 자세한 내용은 트랜잭션 관리자 구성 을 참조하십시오.

관리 콘솔 또는 관리 CLI를 사용하여 통계를 볼 수 있습니다. 관리 콘솔에서 런타임 탭에서 트랜잭션 하위 시스템으로 이동하여 트랜잭션 통계를 사용할 수 있습니다. 관리 CLI에서 include-runtime=true 를 사용하여 읽기-리소스 작업에 통계를 볼 수 있습니다. 예를 들면 다음과 같습니다.

/subsystem=transactions:read-resource(include-runtime=true)
Copy to Clipboard Toggle word wrap

다음 표에서는 사용 가능한 각 통계 및 해당 설명을 보여줍니다.

Expand
표 14.2. 트랜잭션 Cryostat 통계
통계설명

number-of- Cryostats

이 서버에서 트랜잭션 관리자가 처리하는 총 트랜잭션 수입니다.

number-of-committed- Cryostats

이 서버에서 트랜잭션 관리자가 처리하는 커밋된 트랜잭션 수입니다.

number-of-aborted- Cryostats

이 서버의 트랜잭션 관리자가 처리하는 중단된 트랜잭션 수입니다.

number-of-timed-out- Cryostats

이 서버에서 트랜잭션 관리자가 처리하는 시간 초과 트랜잭션 수입니다. 시간 초과 트랜잭션 수는 중단된 트랜잭션 수로 계산됩니다.

number-of-heuristics

heuristic 상태의 트랜잭션 수입니다.

number-of-inflight-transactions

시작되었지만 아직 종료되지 않은 트랜잭션 수입니다.

number-of-application-rollbacks

실패가 애플리케이션인 실패한 트랜잭션 수입니다.

number-of-resource-rollbacks

실패가 리소스인 실패한 트랜잭션 수입니다.

14.2.3. 트랜잭션 오브젝트 저장소

트랜잭션에는 개체를 저장할 위치가 필요합니다. 오브젝트 스토리지 옵션 중 하나는 JDBC 데이터 소스입니다. 성능이 특별한 문제가 있는 경우 JDBC 오브젝트 저장소는 파일 시스템 또는 ActiveMQ 저널 오브젝트 저장소보다 느릴 수 있습니다.

중요

트랜잭션 하위 시스템이 트랜잭션 로그의 스토리지 유형으로 Apache ActiveMQ Artemis 저널을 사용하도록 구성된 경우 JBoss EAP의 두 인스턴스는 동일한 디렉터리를 사용하여 저널을 저장할 수 없습니다. 애플리케이션 서버 인스턴스는 동일한 위치를 공유할 수 없으며 각각 고유 위치를 구성해야 합니다.

참고

트랜잭션 오브젝트 저장소를 손실하면 데이터 일관성이 손실될 수 있습니다. 따라서 오브젝트 저장소를 안전한 드라이브에 배치해야 합니다.

JDBC Datasource를 트랜잭션 오브젝트 저장소로 사용

다음 단계에 따라 JDBC 데이터 소스를 트랜잭션 오브젝트 저장소로 사용합니다.

  1. 예를 들어 TransDS 와 같은 데이터 소스를 만듭니다. 자세한 내용은 Create a non-XA 데이터 소스 만들기를 참조하십시오. 오브젝트 저장소가 제대로 작동하려면 데이터 소스의 JDBC 드라이버 가 JAR 배포가 아닌 코어 모듈로 설치해야 합니다.
  2. 데이터 소스의 jta 속성을 false 로 설정합니다.

    /subsystem=datasources/data-source=TransDS:write-attribute(name=jta, value=false)
    Copy to Clipboard Toggle word wrap
  3. jdbc-store-datasource 속성을 사용할 데이터 소스 이름으로 설정합니다(예: java:jboss/datasources/TransDS ).

    /subsystem=transactions:write-attribute(name=jdbc-store-datasource, value=java:jboss/datasources/TransDS)
    Copy to Clipboard Toggle word wrap
  4. use-jdbc-store 속성을 true 로 설정합니다.

    /subsystem=transactions:write-attribute(name=use-jdbc-store, value=true)
    Copy to Clipboard Toggle word wrap
  5. 변경 사항을 적용하려면 JBoss EAP 서버를 다시 시작합니다.
트랜잭션 JDBC 저장소 속성

다음 표는 JDBC 개체 스토리지와 관련된 모든 사용 가능한 속성을 식별합니다.

Expand
표 14.3. 트랜잭션 JDBC 저장소 속성
속성설명

use-jdbc-store

트랜잭션에 대한 JDBC 저장소를 활성화하려면 이 값을 true 로 설정합니다.

jdbc-store-datasource

스토리지에 사용되는 JDBC 데이터 소스의 JNDI 이름입니다.

jdbc-action-store-drop-table

시작 시 작업 저장소 테이블을 삭제하고 다시 생성할지 여부입니다. 기본값은 false입니다.

jdbc-action-store-table-prefix

작업 저장소 테이블 이름의 접두사입니다.

jdbc-communication-store-drop-table

시작 시 통신 저장소 테이블을 삭제하고 다시 생성할지 여부입니다. 기본값은 false입니다.

jdbc-communication-store-table-prefix

통신 저장소 테이블 이름의 접두사입니다.

jdbc-state-store-drop-table

시작 시 상태 저장소 테이블을 삭제하고 다시 생성할지 여부입니다. 기본값은 false입니다.

jdbc-state-store-table-prefix

상태 저장소 테이블 이름의 접두사입니다.

ActiveMQ Journal Object Store 사용

다음 단계에 따라 ActiveMQ 저널 오브젝트 저장소를 사용합니다.

  1. use-journal-store 속성을 true 로 설정합니다.

    /subsystem=transactions:write-attribute(name=use-journal-store,value=true)
    Copy to Clipboard Toggle word wrap
  2. 변경 사항을 적용하려면 JBoss EAP 서버를 다시 시작합니다.

15장. ORB 설정

15.1. CORBA(Common Object Request Broker Architecture) 정보

CORBA(Common Object Request Broker Architecture)는 서로 다른 여러 언어로 작성된 경우에도 애플리케이션 및 서비스가 함께 작동할 수 있는 표준입니다. CORBA 요청은 Object Request Broker(ORB)라는 서버 측 구성 요소에 의해 중개됩니다. JBoss EAP는 Open JDK ORB 구성 요소를 통해 ORB 인스턴스를 제공합니다.

ORB는 JTS(Java Transaction Service) 트랜잭션에 내부적으로 사용되며 자체 애플리케이션에서 사용할 수도 있습니다.

15.2. JTS 트랜잭션에 대한 ORB 구성

JBoss EAP의 기본 설치에서는 트랜잭션에 대한 ORB 지원이 비활성화됩니다. 관리 CLI 또는 관리 콘솔을 사용하여 iiop-openjdk 하위 시스템에서 ORB 설정을 구성할 수 있습니다.

참고

iiop-openjdk 하위 시스템은 관리형 도메인에서 full 또는 full-ha 프로필을 사용하거나 독립 실행형 서버에 대해 standalone-full.xml 또는 standalone-full-ha.xml 구성 파일을 사용할 때 사용할 수 있습니다.

iiop-openjdk 하위 시스템에 사용 가능한 구성 옵션 목록은 IIOP Cryostat 특성을 참조하십시오.

관리 CLI를 사용하여 ORB 구성

관리 CLI를 사용하여 ORB의 각 측면을 구성할 수 있습니다. ORB를 JTS와 함께 사용할 최소 구성입니다.

다음 관리 CLI 명령은 full 프로필을 사용하여 관리형 도메인에 대해 구성됩니다. 필요한 경우 구성해야 하는 프로필에 맞게 프로필을 변경합니다. 독립 실행형 서버를 사용하는 경우 명령의 /profile=full 부분을 생략합니다.

보안 인터셉터 활성화

값을 identity 로 설정하여 보안 속성을 활성화합니다.

/profile=full/subsystem=iiop-openjdk:write-attribute(name=security,value=identity)
Copy to Clipboard Toggle word wrap
IIOP에서 트랜잭션 활성화

JTS에 대해 ORB를 활성화하려면 transactions 속성 값을 기본 사양이 아닌 full 로 설정합니다.

/profile=full/subsystem=iiop-openjdk:write-attribute(name=transactions, value=full)
Copy to Clipboard Toggle word wrap
트랜잭션에서 JTS 활성화
/profile=full/subsystem=transactions:write-attribute(name=jts,value=true)
Copy to Clipboard Toggle word wrap
참고

JTS 활성화의 경우 다시 로드가 충분하지 않으므로 서버를 다시 시작해야 합니다.

관리 콘솔을 사용하여 ORB 구성
  1. 관리 콘솔 상단에서 구성 탭을 선택합니다.
  2. Cryostat 선택합니다. 관리형 도메인에서 적절한 프로필을 먼저 선택해야 합니다.
  3. IIOP 하위 시스템을 선택하고 View 를 클릭합니다.
  4. 편집 버튼을 클릭하고 필요에 따라 속성을 수정합니다. 각 필드에 대한 자세한 설명은 필요 도움말? 링크를 클릭합니다.
  5. 저장을 클릭하여 변경 사항을 저장합니다.

16장. Java Connector Architecture (JCA) 관리

16.1. JCA(Java Connector Architecture) 정보

Java EE Connector Architecture(JCA)는 이기종 엔터프라이즈 정보 시스템(EIS)에 대한 Java EE 시스템의 표준 아키텍처를 정의합니다. EIS의 예로는 ERP(Enterprise Resource Planning) 시스템, TP(Transaction Processing), 데이터베이스 및 메시징 시스템이 있습니다. 리소스 어댑터 는 Java EE Connector API 아키텍처를 구현하는 구성 요소입니다.

JCA 1.7은 다음을 관리하기 위한 기능을 제공합니다.

  • 연결
  • 트랜잭션
  • 보안
  • life-cycle
  • 작업 인스턴스
  • 트랜잭션 흐름
  • 메시지 흐름

JCA 1.7은 Java Community Process as Cryostat -322 에서 개발되었습니다.

16.2. 리소스 어댑터 정보

리소스 어댑터는 Java Connector Architecture (JCA) 사양을 사용하여 Java EE 애플리케이션과 EIS(Enterprise Information System) 간에 통신을 제공하는 배포 가능한 Java EE 구성 요소입니다. EIS 공급업체는 Java EE 애플리케이션과 제품을 쉽게 통합할 수 있도록 리소스 어댑터가 제공되는 경우가 많습니다.

엔터프라이즈 정보 시스템은 조직 내의 다른 모든 소프트웨어 시스템이 될 수 있습니다. 예를 들면 ERP(Enterprise Resource Planning) 시스템, 데이터베이스 시스템, 이메일 서버 및 독점 메시징 시스템이 있습니다.

리소스 어댑터는 JBoss EAP에 배포할 수 있는 RAR(Resource Adapter Archive) 파일에 패키지됩니다. RAR 파일은 Enterprise Archive(EAR) 배포에 포함될 수도 있습니다.

16.3. JCA Cryostat 구성

jca 하위 시스템은 JCA 컨테이너 및 리소스 어댑터 배포에 대한 일반 설정을 제어합니다. 관리 콘솔 또는 관리 CLI를 사용하여 jca 하위 시스템을 구성할 수 있습니다.

구성할 주요 JCA 요소는 다음과 같습니다.

관리 콘솔에서 JCA 설정 구성

jca 하위 시스템은 구성 → Cryostat → JCA 로 이동하여 관리 콘솔에서 구성할 수 있습니다. 그런 다음 적절한 탭을 선택합니다.

  • Common Config - 캐시된 연결 관리자, 아카이브 검증 및 8080 유효성 검사를 위한 설정이 포함되어 있습니다. 이러한 각 항목은 자신의 탭에도 포함되어 있습니다. 적절한 탭을 열고 편집 버튼을 클릭하여 이러한 설정을 수정합니다.
  • 부트스트랩 컨텍스트 - 구성된 부트스트랩 컨텍스트 목록을 포함합니다. 새 부트스트랩 컨텍스트 오브젝트를 추가, 제거 및 구성할 수 있습니다. 각 부트스트랩 컨텍스트는 작업 관리자를 할당해야 합니다.
  • 작업 관리자 - 구성된 작업 관리자 목록을 포함합니다. 새로운 작업 관리자는 여기에 구성된 해당 스레드 풀을 추가, 제거, 제거할 수 있습니다. 각 작업 관리자는 하나의 단기 실행 스레드 풀과 선택적인 장기 실행 스레드 풀을 가질 수 있습니다.

    선택한 작업 관리자에서 보기를 클릭하여 스레드 풀 특성을 구성할 수 있습니다.

관리 CLI에서 JCA 설정 구성
jca 하위 시스템은 /subsystem=jca 주소의 관리 CLI에서 구성할 수 있습니다. 관리형 도메인에서 명령 앞에 /profile=PROFILE_NAME 이어야 합니다.
아카이브 유효성 검사

배포 단위에서 아카이브 유효성 검사를 수행할지 여부를 결정합니다. 다음 표에서는 아카이브 검증을 위해 설정할 수 있는 특성에 대해 설명합니다.

Expand
표 16.1. 아카이브 유효성 검사 속성
속성기본값설명

enabled

true

아카이브 유효성 검사가 활성화되었는지 여부를 지정합니다.

fail-on-error

true

아카이브 검증 오류 보고서가 배포에 실패하는지 여부를 지정합니다.

fail-on-warn

false

아카이브 검증 경고 보고서가 배포에 실패하는지 여부를 지정합니다.

아카이브에서 JCA 사양을 올바르게 구현하지 않고 아카이브 유효성 검사가 활성화된 경우 문제를 설명하는 배포 중에 오류 메시지가 표시됩니다. 예를 들면 다음과 같습니다.

Severity: ERROR
Section: 19.4.2
Description: A ResourceAdapter must implement a "public int hashCode()" method.
Code: com.mycompany.myproject.ResourceAdapterImpl

Severity: ERROR
Section: 19.4.2
Description: A ResourceAdapter must implement a "public boolean equals(Object)" method.
Code: com.mycompany.myproject.ResourceAdapterImpl
Copy to Clipboard Toggle word wrap

아카이브 유효성 검사를 지정하지 않으면 present로 간주되며 enabled 속성은 기본적으로 true 로 설정됩니다.

Cryostat 유효성 검사

이 설정은 placement 검증( Cryostat-303)이 배포 단위에서 수행되는지 여부를 결정합니다. 다음 표에서는 hieradata 유효성 검사를 위해 설정할 수 있는 특성에 대해 설명합니다.

Expand
표 16.2. Cryostat 유효성 검사 속성
속성기본값설명

enabled

true

Cryostat 유효성 검사가 활성화되었는지 여부를 지정합니다.

Cryostat 유효성 검사를 지정하지 않으면 존재하는 것으로 간주되며 enabled 속성은 기본적으로 true 로 설정됩니다.

작업 관리자

작업 관리자는 다음 두 가지 유형이 있습니다.

기본 작업 관리자
기본 작업 관리자 및 해당 스레드 풀입니다.
사용자 정의 작업 관리자
사용자 지정 작업 관리자 정의 및 해당 스레드 풀.

다음 표에서는 작업 관리자에게 설정할 수 있는 특성에 대해 설명합니다.

Expand
표 16.3. 작업 관리자 속성
속성설명

name

작업 관리자의 이름을 지정합니다.

short-running-threads

표준 작업 인스턴스의 스레드 풀입니다. 각 작업 관리자에게는 하나의 단기 실행 스레드 풀이 있습니다.

long-running-threads

LONG_RUNNING 힌트를 설정하는 JCA 1.7 작업 인스턴스의 스레드 풀입니다. 각 작업 관리자에게는 선택적 장기 실행 스레드 풀이 하나만 있을 수 있습니다.

다음 표에서는 작업 관리자 스레드 풀에 설정할 수 있는 특성에 대해 설명합니다.

Expand
표 16.4. 스레드 풀 속성
속성기본값설명

name

default

스레드 풀의 이름을 지정합니다.

keepalive-time

10초

작업을 수행한 후 풀 스레드를 유지해야 하는 시간을 지정합니다.

allow-core-timeout

false

코어 스레드가 시간 초과될 수 있는지 여부를 결정하는 부울 설정입니다. 기본값은 false입니다.

thread-factory

 

스레드 팩토리에 대한 참조입니다.

max-thread

50

최대 스레드 풀 크기입니다.

core-threads

50

코어 스레드 풀 크기입니다. 이는 최대 스레드 풀 크기보다 크거나 같아야 합니다.

queue-length

50

최대 큐 길이입니다.

부트스트랩 컨텍스트

이는 사용자 지정 부트스트랩 컨텍스트를 정의하는 데 사용됩니다. 다음 표에서는 부트스트랩 컨텍스트에 대해 설정할 수 있는 특성을 설명합니다.

Expand
표 16.5. 부트스트랩 컨텍스트 속성
속성설명

name

부트스트랩 컨텍스트의 이름을 지정합니다.

WorkManager

이 컨텍스트에 사용할 작업 관리자의 이름을 지정합니다.

캐시된 연결 관리자

이는 연결을 디버깅하고 트랜잭션에서 연결 지연을 지원하여 애플리케이션에서 올바르게 사용 및 해제되었는지 여부를 추적하는 데 사용됩니다. 다음 표에서는 캐시된 연결 관리자에 대해 설정할 수 있는 특성에 대해 설명합니다.

Expand
표 16.6. 캐시된 연결 관리자 속성
속성기본값설명

debug

false

연결을 명시적으로 종료하지 못한 경우 경고를 출력합니다.

error

false

연결을 명시적으로 닫지 못하는 경우 예외를 throw합니다.

ignore-unknown-connections

false

알 수 없는 연결이 캐시되지 않도록 지정합니다.

16.4. 리소스 어댑터 구성

16.4.1. 리소스 어댑터 배포

리소스 어댑터는 관리 CLI 또는 관리 콘솔을 사용하여 다른 배포와 마찬가지로 배포할 수 있습니다. 독립 실행형 서버를 실행할 때 배포 스캐너에서 선택할 배포 디렉터리에 아카이브를 복사할 수도 있습니다.

관리 CLI를 사용하여 리소스 어댑터 배포

독립 실행형 서버에 리소스 어댑터를 배포하려면 다음 관리 CLI 명령을 입력합니다.

deploy /path/to/resource-adapter.rar
Copy to Clipboard Toggle word wrap

관리형 도메인의 모든 서버 그룹에 리소스 어댑터를 배포하려면 다음 관리 CLI 명령을 입력합니다.

deploy /path/to/resource-adapter.rar --all-server-groups
Copy to Clipboard Toggle word wrap
관리 콘솔을 사용하여 리소스 어댑터 배포
  1. 관리 콘솔에 로그인하고 Deployments 탭을 클릭합니다.
  2. 추가를 클릭합니다. 관리형 도메인에서 먼저 Content Repository 를 선택해야 합니다.
  3. Upload a new deployment 옵션을 선택하고 Next 를 클릭합니다.
  4. 리소스 어댑터 아카이브로 이동하여 다음을 클릭합니다.
  5. 업로드를 확인한 다음 완료 를 클릭합니다.
  6. 관리형 도메인에서 적절한 서버 그룹에 배포를 할당하고 배포를 활성화합니다.
배포 스캐너를 사용하여 리소스 어댑터 배포

독립 실행형 서버에 리소스 어댑터를 수동으로 배포하려면 리소스 어댑터 아카이브를 서버 배포 디렉터리(예: EAP_HOME/standalone/deployments/ )에 복사합니다. 이는 배포 스캐너에 의해 선택 및 배포됩니다.

참고

이 옵션은 관리형 도메인에서 사용할 수 없습니다. 관리 콘솔 또는 관리 CLI를 사용하여 리소스 어댑터를 서버 그룹에 배포해야 합니다.

16.4.2. 리소스 어댑터 구성

관리 인터페이스를 사용하여 리소스 어댑터를 구성할 수 있습니다. 다음 예제에서는 관리 CLI를 사용하여 리소스 어댑터를 구성하는 방법을 보여줍니다. 지원되는 속성 및 기타 중요한 정보는 리소스 어댑터 벤더 설명서를 참조하십시오.

리소스 어댑터 구성 추가

리소스 어댑터 구성을 추가합니다.

/subsystem=resource-adapters/resource-adapter=eis.rar:add(archive=eis.rar, transaction-support=XATransaction)
Copy to Clipboard Toggle word wrap
Resource Adapter 설정 구성

필요에 따라 다음 설정을 구성합니다.

  • config-properties 를 구성합니다.

    서버 구성 속성을 추가합니다.

    /subsystem=resource-adapters/resource-adapter=eis.rar/config-properties=server:add(value=localhost)
    Copy to Clipboard Toggle word wrap

    포트 구성 속성을 추가합니다.

    /subsystem=resource-adapters/resource-adapter=eis.rar/config-properties=port:add(value=9000)
    Copy to Clipboard Toggle word wrap
  • admin-objects 를 구성합니다.

    관리자 오브젝트를 추가합니다.

    /subsystem=resource-adapters/resource-adapter=eis.rar/admin-objects=aoName:add(class-name=com.acme.eis.ra.EISAdminObjectImpl, jndi-name=java:/eis/AcmeAdminObject)
    Copy to Clipboard Toggle word wrap

    admin 오브젝트 구성 속성을 구성합니다.

    /subsystem=resource-adapters/resource-adapter=eis.rar/admin-objects=aoName/config-properties=threshold:add(value=10)
    Copy to Clipboard Toggle word wrap
  • connection-definitions 를 구성합니다.

    관리되는 연결 팩토리에 대한 연결 정의를 추가합니다.

    /subsystem=resource-adapters/resource-adapter=eis.rar/connection-definitions=cfName:add(class-name=com.acme.eis.ra.EISManagedConnectionFactory, jndi-name=java:/eis/AcmeConnectionFactory)
    Copy to Clipboard Toggle word wrap

    관리형 연결 팩토리 구성 속성을 구성합니다.

    /subsystem=resource-adapters/resource-adapter=eis.rar/connection-definitions=cfName/config-properties=name:add(value=Acme Inc)
    Copy to Clipboard Toggle word wrap

    등록 추적을 기록할지 여부를 구성합니다. enlistment-trace 특성을 false 로 설정하여 Enlistmentment 추적 기록을 비활성화할 수 있습니다.

    /subsystem=resource-adapters/resource-adapter=eis.rar/connection-definitions=cfName:write-attribute(name=enlistment-trace,value=false)
    Copy to Clipboard Toggle word wrap
    주의

    등록 추적을 비활성화하면 트랜잭션 등록 중에 오류를 추적하기가 더 어려워집니다.

리소스 어댑터에 사용 가능한 모든 구성 옵션에 대한 리소스 어댑터 특성을 참조하십시오.

리소스 어댑터 활성화

리소스 어댑터를 활성화합니다.

/subsystem=resource-adapters/resource-adapter=eis.rar:activate
Copy to Clipboard Toggle word wrap
참고

리소스 어댑터에 대한 용량 정책을 정의할 수도 있습니다. 자세한 내용은 용량 정책 섹션을 참조하십시오.

16.4.3. Websphere MQ 리소스 어댑터 배포 및 구성

Websphere MQ 리소스 어댑터 배포 지침은 JBoss EAP용 메시징 구성에서 확인할 수 있습니다.

16.4.4. 일반 JMS 리소스 어댑터 배포 및 구성

JBoss EAP에 대한 메시징 구성에서 일반 JMS 리소스 어댑터를 구성하는 지침을 찾을 수 있습니다.

16.5. 관리형 연결 풀 구성

JBoss EAP는 ManagedConnectionPool 인터페이스의 세 가지 구현을 제공합니다.

org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedQueueManagedConnectionPool
JBoss EAP 7의 기본 연결 풀이며 최상의 성능을 제공합니다.
org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool
이는 이전 JBoss EAP 버전의 기본 연결 풀입니다.
org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool
이 연결 풀은 디버깅 목적으로만 사용되며 종료 시 또는 풀이 플러시될 때 누수를 보고합니다.

다음 관리 CLI 명령을 사용하여 데이터 소스에 대한 관리형 연결 풀 구현을 설정할 수 있습니다.

/subsystem=datasources/data-source=DATA_SOURCE:write-attribute(name=mcp,value=MCP_CLASS)
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령을 사용하여 리소스 어댑터에 대한 관리 연결 풀 구현을 설정할 수 있습니다.

/subsystem=resource-adapters/resource-adapter=RESOURCE_ADAPTER/connection-definitions=CONNECTION_DEFINITION:write-attribute(name=mcp,value=MCP_CLASS)
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령을 사용하여 메시징 서버에 대한 관리 연결 풀 구현을 설정할 수 있습니다.

/subsystem=messaging-activemq/server=SERVER/pooled-connection-factory=CONNECTION_FACTORY:write-attribute(name=managed-connection-pool,value=MCP_CLASS)
Copy to Clipboard Toggle word wrap

16.6. 연결 통계 보기

/deployment=NAME.rar 하위 트리에서 정의된 연결에 대한 통계를 읽을 수 있습니다. 따라서 standalone.xml 또는 domain.xml 구성에 정의되지 않은 경우에도 RAR의 통계에 액세스할 수 있습니다.

/deployment=NAME.rar/subsystem=resource-adapters/statistics=statistics/connection-definitions=java\:\/testMe:read-resource(include-runtime=true)
Copy to Clipboard Toggle word wrap
참고

모든 통계가 런타임 전용 정보이므로 include-runtime=true 인수를 지정해야 합니다.

사용 가능한 통계에 대한 자세한 내용은 리소스 어댑터 통계를 참조하십시오.

17장. 웹 서버 구성 (Undertow)

17.1. Cryostat의 개요

중요

JBoss EAP 7에서 undertow 하위 시스템은 이전 버전의 JBoss EAP에서 하위 시스템을 대신합니다.

undertow 하위 시스템을 사용하면 웹 서버 및 서블릿 컨테이너 설정을 구성할 수 있습니다. Java Servlet 3.1 Specification 과 websocket을 구현하고 HTTP Upgrade를 지원하며 서블릿 배포에서 고성능 비차단 처리기를 사용합니다. undertow 하위 시스템에는 mod_cluster를 지원하는 고성능 역방향 프록시 역할을 할 수 있습니다.

undertow 하위 시스템 내에는 다음과 같은 5가지 기본 구성 요소가 있습니다.

참고

JBoss EAP는 이러한 각 구성 요소에 대한 구성을 업데이트하는 기능을 제공하지만 기본 구성은 대부분의 사용 사례에 적합하며 적절한 성능 설정을 제공합니다.

기본 Cryostat Cryostat 구성
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
  <buffer-cache name="default"/>
  <server name="default-server">
      <http-listener name="default" socket-binding="http" redirect-socket="https"/>
      <host name="default-host" alias="localhost">
          <location name="/" handler="welcome-content"/>
          <filter-ref name="server-header"/>
          <filter-ref name="x-powered-by-header"/>
      </host>
  </server>
  <servlet-container name="default">
      <jsp-config/>
      <websockets/>
  </servlet-container>
  <handlers>
      <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
  </handlers>
  <filters>
      <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
      <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
  </filters>
</subsystem>
Copy to Clipboard Toggle word wrap
중요

undertow 하위 시스템은 io 하위 시스템을 사용하여 XNIO 작업자 및 버퍼 풀을 제공합니다. io 하위 시스템은 별도로 구성되며 대부분의 경우 최적의 성능을 제공해야 하는 기본 구성을 제공합니다.

참고

이전 JBoss EAP 릴리스의 하위 시스템과 비교했을 때 JBoss EAP 7의 undertow 하위 시스템은 HTTP 메서드의 기본 동작이 다릅니다.

17.2. 버퍼 캐시 구성

버퍼 캐시는 정적 리소스를 캐시하는 데 사용됩니다. JBoss EAP를 사용하면 배포에서 여러 캐시를 구성하고 참조할 수 있으므로 다양한 배포가 다른 캐시 크기를 사용할 수 있습니다. 버퍼는 지역에 할당되며 고정된 크기입니다. 사용된 총 공간 크기는 버퍼 크기와 영역당 버퍼 수와 최대 영역 수를 곱하여 계산할 수 있습니다. 버퍼 캐시의 기본 크기는 10MB입니다.

JBoss EAP는 기본적으로 단일 캐시를 제공합니다.

기본 Cryostat Cryostat 구성
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
  <buffer-cache name="default"/>
  ....
</subsystem>
Copy to Clipboard Toggle word wrap
기존 버퍼 캐시 업데이트

기존 버퍼 캐시를 업데이트하려면 다음을 수행합니다.

/subsystem=undertow/buffer-cache=default/:write-attribute(name=buffer-size,value=2048)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
새 버퍼 캐시 생성

새 버퍼 캐시를 생성하려면 다음을 수행합니다.

/subsystem=undertow/buffer-cache=new-buffer:add
Copy to Clipboard Toggle word wrap
버퍼 캐시 삭제

버퍼 캐시를 삭제하려면 다음을 수행합니다.

/subsystem=undertow/buffer-cache=new-buffer:remove
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap

버퍼 캐시 구성에 사용할 수 있는 속성의 전체 목록은 Cryostat Cryostat 속성 섹션을 참조하십시오.

17.3. 서버 구성

서버는 Cryostat의 인스턴스를 나타내며 다음과 같은 여러 요소로 구성됩니다.

  • host
  • http-listener
  • https-listener
  • ajp-listener

host 요소는 가상 호스트 구성을 제공하는 반면 3개의 리스너는 해당 유형의 연결을 Cryostat 인스턴스에 제공합니다.

참고

배포 및 서버를 완전히 분리할 수 있도록 여러 서버를 구성할 수 있습니다. 이는 다중 테넌트 환경과 같은 특정 시나리오에서 유용할 수 있습니다.

JBoss EAP는 기본적으로 서버를 제공합니다.

기본 Cryostat Cryostat 구성
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
  <buffer-cache name="default"/>
  <server name="default-server">
      <http-listener name="default" socket-binding="http" redirect-socket="https"/>
      <host name="default-host" alias="localhost">
          <location name="/" handler="welcome-content"/>
          <filter-ref name="server-header"/>
          <filter-ref name="x-powered-by-header"/>
      </host>
  </server>
  ...
</subsystem>
Copy to Clipboard Toggle word wrap
기존 서버 업데이트

기존 서버를 업데이트하려면 다음을 수행합니다.

/subsystem=undertow/server=default-server:write-attribute(name=default-host,value=default-host)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
새 서버 만들기

새 서버를 생성하려면 다음을 수행합니다.

/subsystem=undertow/server=new-server:add
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
서버 삭제

서버를 삭제하려면 다음을 수행합니다.

/subsystem=undertow/server=new-server:remove
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap

서버 구성에 사용할 수 있는 속성의 전체 목록은 Cryostat Cryostat 속성 섹션을 참조하십시오.

17.4. Servlet 컨테이너 구성

서블릿 컨테이너는 세션 관련 구성을 포함하여 모든 서블릿, JSP 및 웹 소켓 관련 구성을 제공합니다. 대부분의 서버는 단일 서블릿 컨테이너만 필요하지만 서블릿 컨테이너를 추가하여 여러 서블릿 컨테이너를 구성할 수 있습니다. 여러 서블릿 컨테이너를 사용하면 여러 배포가 다른 가상 호스트의 동일한 컨텍스트 경로에 배포되도록 허용하는 등의 동작이 가능합니다.

참고

서블릿 컨테이너에서 제공되는 대부분의 구성은 web.xml 파일을 사용하여 배포된 애플리케이션에 의해 개별적으로 재정의할 수 있습니다.

JBoss EAP는 기본적으로 서블릿 컨테이너를 제공합니다.

기본 Cryostat Cryostat 구성
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
  <buffer-cache name="default"/>
  <server name="default-server">
    ...
  </server>
  <servlet-container name="default">
      <jsp-config/>
      <websockets/>
  </servlet-container>
...
</subsystem>
Copy to Clipboard Toggle word wrap
기존 Servlet 컨테이너 업데이트

기존 서블릿 컨테이너를 업데이트하려면 다음을 수행합니다.

/subsystem=undertow/servlet-container=default:write-attribute(name=ignore-flush,value=true)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
새 Servlet 컨테이너 생성

새 서블릿 컨테이너를 생성하려면 다음을 수행합니다.

/subsystem=undertow/servlet-container=new-servlet-container:add
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
Servlet 컨테이너 삭제

서블릿 컨테이너를 삭제하려면 다음을 수행합니다.

/subsystem=undertow/servlet-container=new-servlet-container:remove
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap

서블릿 컨테이너 구성에 사용할 수 있는 속성의 전체 목록은 Cryostat Cryostat 속성 섹션을 참조하십시오.

17.5. 처리기 구성

JBoss EAP를 사용하면 두 가지 유형의 핸들러를 구성할 수 있습니다.

  • 파일 처리기
  • reverse-proxy 처리기

파일 처리기는 정적 파일을 제공합니다. 각 파일 처리기는 가상 호스트의 위치에 연결되어 있어야 합니다. reverse-proxy 핸들러를 사용하면 JBoss EAP가 고성능 역방향 프록시 역할을 할 수 있습니다.

JBoss EAP는 기본적으로 파일 처리기를 제공합니다.

기본 Cryostat Cryostat 구성
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
  <buffer-cache name="default"/>
  <server name="default-server">
      ...
  </server>
  <servlet-container name="default">
      ...
  </servlet-container>
  <handlers>
      <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
  </handlers>
  ...
</subsystem>
Copy to Clipboard Toggle word wrap
정적 리소스에 Cryostat 사용

이전 버전의 JBoss EAP는 WebdavServlet 을 통해 하위 시스템에서 Cryostat를 사용하여 정적 리소스를 호스팅하고 해당 파일에 액세스하고 조작하기 위한 추가 HTTP 메서드를 활성화할 수 있었습니다. JBoss EAP 7에서 undertow 하위 시스템은 파일 핸들러를 사용하여 정적 파일을 제공하는 메커니즘을 제공하지만 undertow 하위 시스템은 Cryostat를 지원하지 않습니다. JBoss EAP 7과 함께 Cryostat를 사용하려면 사용자 지정 Cryostat 서블릿을 작성할 수 있습니다.

기존 파일 처리기 업데이트

기존 파일 처리기를 업데이트하려면 다음을 수행합니다.

/subsystem=undertow/configuration=handler/file=welcome-content:write-attribute(name=case-sensitive,value=true)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
새 파일 처리기 생성

새 파일 처리기를 생성하려면 다음을 수행합니다.

/subsystem=undertow/configuration=handler/file=new-file-handler:add(path="${jboss.home.dir}/welcome-content")
Copy to Clipboard Toggle word wrap
파일 처리기 삭제

파일 처리기를 삭제하려면 다음을 수행합니다.

/subsystem=undertow/configuration=handler/file=new-file-handler:remove
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap

처리기 구성에 사용할 수 있는 속성의 전체 목록은 Cryostat Cryostat 속성 섹션을 참조하십시오.

17.6. 필터 구성

필터를 사용하면 요청의 일부 측면을 수정하고 서술자를 사용하여 필터가 실행되는 시기를 제어할 수 있습니다. 필터의 몇 가지 일반적인 사용 사례에는 헤더 설정 또는 GZIP 압축이 포함됩니다.

참고

필터는 이전 버전의 JBoss EAP에서 사용되는 글로벌 벨브와 기능적으로 동일합니다.

다음 유형의 필터를 정의할 수 있습니다.

  • custom-filter
  • 오류 페이지
  • expression-filter
  • gzip
  • MOD-cluster
  • request-limit
  • response-header
  • 재작성

JBoss EAP는 기본적으로 두 개의 필터를 제공합니다.

기본 Cryostat Cryostat 구성
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
  <buffer-cache name="default"/>
  <server name="default-server">
    ...
  </server>
  <servlet-container name="default">
    ...
  </servlet-container>
  <handlers>
      ...
  </handlers>
  <filters>
      <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
      <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
  </filters>
</subsystem>
Copy to Clipboard Toggle word wrap
기존 필터 업데이트

기존 필터를 업데이트하려면 다음을 수행합니다.

/subsystem=undertow/configuration=filter/response-header=server-header:write-attribute(name=header-value,value="JBoss-EAP")
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
새 필터 생성

새 필터를 생성하려면 다음을 수행합니다.

/subsystem=undertow/configuration=filter/response-header=new-response-header:add(header-name=new-response-header,header-value="My Value")
Copy to Clipboard Toggle word wrap
필터 삭제

필터를 삭제하려면 다음을 수행합니다.

/subsystem=undertow/configuration=filter/response-header=new-response-header:remove
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap

필터 구성에 사용할 수 있는 속성의 전체 목록은 Cryostat Cryostat 속성 섹션을 참조하십시오.

17.7. 기본 welcome 웹 애플리케이션 구성

JBoss EAP에는 기본적으로 포트 8080의 루트 컨텍스트에 표시되는 기본 welcome 애플리케이션이 포함되어 있습니다.

welcome 콘텐츠를 제공하는 Cryostat에는 기본 서버가 사전 구성되어 있습니다.

기본 Cryostat Cryostat 구성
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
  ...
  <server name="default-server">
      <http-listener name="default" socket-binding="http" redirect-socket="https"/>
      <host name="default-host" alias="localhost">
          <location name="/" handler="welcome-content"/>
          <filter-ref name="server-header"/>
          <filter-ref name="x-powered-by-header"/>
      </host>
  </server>
  ...
  <handlers>
      <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
  </handlers>
  ...
</subsystem>
Copy to Clipboard Toggle word wrap

기본 서버(default-server)에는 기본 호스트(default-host)가 구성되어 있습니다. 기본 호스트는 welcome-content 파일 처리기와 함께 < location > 요소를 사용하여 서버의 루트에 대한 요청을 처리하도록 구성되어 있습니다. welcome-content 핸들러는 경로 속성에 지정된 위치의 콘텐츠를 제공합니다.

이 기본 welcome 애플리케이션은 자체 웹 애플리케이션으로 교체할 수 있습니다. 다음 두 가지 방법 중 하나로 구성할 수 있습니다.

시작 콘텐츠를 비활성화할 수도 있습니다.

welcome-content 파일 핸들러 변경

새 배포를 가리키도록 기존 welcome-content 파일 핸들러의 경로를 수정합니다.

/subsystem=undertow/configuration=handler/file=welcome-content:write-attribute(name=path,value="/path/to/content")
Copy to Clipboard Toggle word wrap
참고

또는 서버의 루트에서 사용할 다른 파일 핸들러를 생성할 수 있습니다.

/subsystem=undertow/configuration=handler/file=NEW_FILE_HANDLER:add(path="/path/to/content")
/subsystem=undertow/server=default-server/host=default-host/location=\/:write-attribute(name=handler,value=NEW_FILE_HANDLER)
Copy to Clipboard Toggle word wrap

변경 사항을 적용하려면 서버를 다시 로드합니다.

reload
Copy to Clipboard Toggle word wrap
default-web-module 변경

배포된 웹 애플리케이션을 서버의 루트에 매핑합니다.

/subsystem=undertow/server=default-server/host=default-host:write-attribute(name=default-web-module,value=hello.war)
Copy to Clipboard Toggle word wrap

변경 사항을 적용하려면 서버를 다시 로드합니다.

reload
Copy to Clipboard Toggle word wrap
기본 welcome 웹 애플리케이션 비활성화

default-host위치 항목(/)을 제거하여 시작 애플리케이션을 비활성화합니다.

/subsystem=undertow/server=default-server/host=default-host/location=\/:remove
Copy to Clipboard Toggle word wrap

변경 사항을 적용하려면 서버를 다시 로드합니다.

reload
Copy to Clipboard Toggle word wrap

17.8. HTTPS 구성

웹 애플리케이션 및 관리 인터페이스와 함께 사용할 HTTPS 구성에 대한 자세한 내용은 How to Configure Server Security Guide 를 참조하십시오.

17.9. HTTP 세션 시간 초과 구성

HTTP 세션 시간 초과는 HTTP 세션을 잘못 선언하는 데 필요한 비활성 시간을 정의합니다. 예를 들어, 사용자는 HTTP 세션을 생성하는 JBoss EAP에 배포된 애플리케이션에 액세스합니다. 그런 다음 HTTP 세션 시간이 초과된 후 해당 사용자가 해당 애플리케이션에 다시 액세스하려고 하면 원래 HTTP 세션이 무효화되고 사용자가 새 HTTP 세션을 생성해야 합니다. 이로 인해 의도하지 않은 데이터가 손실되거나 사용자가 다시 인증해야 할 수 있습니다.

HTTP 세션 시간 제한은 애플리케이션의 web.xml 파일에 구성되지만 JBoss EAP 내에서 기본 HTTP 세션 시간 초과를 지정할 수 있습니다. 서버의 시간 초과 값은 배포된 모든 애플리케이션에 적용되지만 애플리케이션의 web.xml 은 서버의 값을 재정의합니다.

server 값은 undertow 하위 시스템의 서블릿 컨테이너 섹션에 있는 default-session- timeout 속성에 지정됩니다. default-session-timeout 값은 분 및 기본값 30으로 지정됩니다.

기본 세션 시간 제한 구성

default-session-timeout 을 구성하려면 다음을 수행합니다.

/subsystem=undertow/servlet-container=default:write-attribute(name=default-session-timeout, value=60)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
중요

HTTP 세션 시간 제한을 변경하려면 영향을 받는 모든 JBoss EAP 인스턴스를 다시 시작해야 합니다. 이 작업이 완료될 때까지 원래 HTTP 세션 시간 초과 값이 적용됩니다.

17.10. HTTP 전용 세션 관리 쿠키 구성

세션 관리 쿠키는 HTTP API 및 JavaScript와 같은 HTTP 이외의 API에서 액세스할 수 있습니다. JBoss EAP는 Set-Cookie 응답 헤더의 일부로 Cryostat Only 헤더를 클라이언트(일반적으로 브라우저)로 전송하는 기능을 제공합니다. 지원되는 브라우저에서 이 헤더를 사용하면 HTTP 이외의 API를 통해 세션 관리 쿠키 액세스를 금지해야 함을 브라우저에 알립니다. 세션 관리 쿠키를 HTTP API로만 제한하면 사이트 간 스크립팅 공격을 통해 세션 쿠키 도난 위협을 완화하는 데 도움이 될 수 있습니다. 이 동작을 활성화하려면 http-only 속성을 true 로 설정해야 합니다.

중요

Cryo statOnly 헤더를 사용하면 실제로 사이트 간 스크립팅 공격을 자체적으로 방지하는 것은 아니며 브라우저에만 알립니다. 브라우저에서도 이 동작이 영향을 미치는 경우 Cryostat Only 를 지원해야 합니다.

중요

http 전용 속성을 사용하면 세션 관리 쿠키에만 제한 사항이 적용되며 다른 브라우저 쿠키는 적용되지 않습니다.

http-only 속성은 undertow 하위 시스템의 두 위치에 설정됩니다.

  • 세션 쿠키 설정으로 서블릿 컨테이너에서
  • 서버의 호스트 섹션에서 Single Sign-On 속성으로

서블릿 컨테이너 세션 쿠키의 호스트 전용 속성을 구성하려면 다음을 수행합니다.

/subsystem=undertow/servlet-container=default/setting=session-cookie:add
Copy to Clipboard Toggle word wrap
/subsystem=undertow/servlet-container=default/setting=session-cookie:write-attribute(name=http-only,value=true)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
호스트 Single Sign-On에 대한 호스트 전용 구성

호스트 Single Sign-On에 대한 host-only 속성을 구성하려면 다음을 수행합니다.

/subsystem=undertow/server=default-server/host=default-host/setting=single-sign-on:add
Copy to Clipboard Toggle word wrap
/subsystem=undertow/server=default-server/host=default-host/setting=single-sign-on:write-attribute(name=http-only,value=true)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap

17.11. HTTP/2 구성

Cryostat를 사용하면 HTTP/2 표준을 사용할 수 있으므로 헤더를 압축하고 동일한 TCP 연결을 통해 많은 스트림을 멀티플렉싱하여 대기 시간을 줄일 수 있습니다. 또한 서버가 리소스를 요청하기 전에 클라이언트에 리소스를 푸시하여 페이지 로드 속도가 빨라질 수 있는 기능도 제공합니다. Cryostat는 새 사양으로 아직 업데이트되지 않은 클라이언트를 지원하기 위해 HTTP/2의 표준인 SPDY 와도 호환됩니다.

중요

HTTP/2는 JBoss EAP 7.0에서만 기술 프리뷰로 지원되며 HTTP/2 표준을 지원하는 브라우저에서만 작동합니다.

중요

HTTP/2를 사용하려면 Java 8을 사용하고 classpath에서 ALPN 을 설정해야 합니다. HTTP/2에는 ALPN을 지원하는 TLS 스택이 필요하기 때문에 Java 8의 기본 설치에서 제공되지 않습니다.

17.11.1. HTTP/2를 사용하도록 Cryostat 구성

HTTP/2를 사용하도록 Cryostat를 구성하려면 다음을 수행해야 합니다.

HTTPS를 사용하도록 Cryostat 구성

웹 애플리케이션에 HTTPS 를 사용하도록 Cryostat 구성을 위한 서버 보안 가이드 구성 방법을 참조하십시오.

참고

HTTPS를 사용하지 않고 HTTP/2를 사용할 수 있습니다. 즉 HTTP 업그레이드를 사용하는 일반 HTTP만 사용할 수 있습니다. 이 경우 ALPN을 설치할 필요가 없으며 Cryostat에서 HTTP/2를 간단히 활성화할 수 있습니다.

/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=enable-http2,value=true)
Copy to Clipboard Toggle word wrap
ALPN JAR 다운로드

먼저 보유하고 있는 Java의 특정 버전을 확인합니다. 터미널에서 다음 명령을 실행하여 설치한 Java 버전을 출력합니다.

java -version
Copy to Clipboard Toggle word wrap

버전에 따라 이 페이지에서 다운로드할 ALPN JAR의 올바른 버전을 확인하려면 이 페이지를 참조하십시오. 예를 들어 Java 버전 1.8.0_51 을 실행하는 경우 ALPN 버전 8.1.4.v20150727 을 사용하고 alpn-boot-8.1.4.v20150727.jar 를 다운로드합니다.

ALPN JAR을 Boot Classpath에 추가

ALPN JAR의 올바른 버전을 다운로드한 후 EAP_HOME/bin 에 복사합니다. 또한 $JBOSS_HOME$ALPN_VERSION 을 적절한 값으로 교체하는 bin/standalone.conf (또는 관리형 도메인에서 실행 중인 경우 bin/domain.conf)에 다음을 추가해야 합니다.

JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:$JBOSS_HOME/bin/alpn-boot-$ALPN_VERSION.jar"
Copy to Clipboard Toggle word wrap
중요

클래스 경로 변경 사항을 적용하려면 JBoss EAP를 다시 시작해야 합니다.

HTTPS Listener에서 HTTP/2 활성화

Cryostat에서 HTTP/2를 사용하도록 HTTPS 리스너를 활성화하려면 enable-http2 속성을 true 로 설정해야 합니다.

/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enable-http2,value=true)
Copy to Clipboard Toggle word wrap
HTTP/2가 사용 중인지 확인

Cryostat가 HTTP/2를 사용하고 있는지 확인하려면 Cryostat에서 들어오는 헤더를 검사해야 합니다. https를 사용하여 JBoss EAP 인스턴스로 이동하고(예 : https://localhost:8443) 브라우저의 개발자 툴을 사용하여 헤더를 검사합니다. 일부 브라우저(예: Google Chrome)는 HTTP/2를 사용할 때 HTTP/2 의사 헤더(:path,:authority,:method:scheme)를 표시하지만 다른 브라우저(예: Firefox 및 Safari)는 헤더의 상태 또는 버전을 HTTP/2.0 으로 보고합니다.

17.12. RequestDumping Handler 구성

RequestDumping 처리기(io.undertow.server.handlers.RequestDumpingHandler)는 JBoss EAP에서 처리한 요청 및 해당 응답 오브젝트의 세부 정보를 기록합니다.

중요

이 처리기는 디버깅에 유용할 수 있지만 중요한 정보를 기록할 수도 있습니다. 이 처리기를 활성화할 때 이 점을 유념하십시오.

참고

RequestDumping 핸들러는 이전 버전의 JBoss EAP의 RequestDumperValve 를 대체합니다.

JBoss EAP에서 직접 또는 개별 애플리케이션 내에서 서버 수준에서 RequestDumping 핸들러를 구성할 수 있습니다.

17.12.1. 서버에서 요청 요청 처리기 구성

RequestDumping 처리기는 표현식 필터로 구성해야 합니다. RequestDumping 처리기를 표현식 필터로 구성하려면 다음을 수행해야 합니다.

RequestDumping Handler를 사용하여 새 표현식 필터 만들기
/subsystem=undertow/configuration=filter/expression-filter=requestDumperExpression:add(expression="dump-request")
Copy to Clipboard Toggle word wrap
Cryostat 웹 서버에서 표현식 필터 활성화
/subsystem=undertow/server=default-server/host=default-host/filter-ref=requestDumperExpression:add
Copy to Clipboard Toggle word wrap
중요

이러한 방식으로 RequestDumping 처리기를 표현식 필터로 활성화할 때 Cryostat 웹 서버에서 처리하는 모든 요청 및 해당 응답은 기록됩니다.

특정 URL에 대한 요청 덤프 처리기 구성

모든 요청을 기록하는 것 외에도 표현식 필터를 사용하여 특정 URL에 대한 요청 및 해당 응답만 로깅할 수 있습니다. 이는 경로 , 경로접두사 또는 path - suffix 와 같은 표현식의 서술자를 사용하여 수행할 수 있습니다. 예를 들어 모든 요청을 기록하고 /myApplication/test 에 대한 해당 응답을 기록하려면 표현식 필터를 생성할 때 " dump-request" 표현식 대신 "path(/myApplication/test) - > dump-request" 표현식을 사용할 수 있습니다. 이렇게 하면 /myApplication/test 와 정확히 일치하는 경로가 있는 요청만 RequestDumping 처리기에 연결됩니다.

17.12.2. 애플리케이션 내에서 요청 처리기 구성

서버에서 RequestDumping 처리기를 구성하는 것 외에도 개별 애플리케이션 내에서 구성할 수도 있습니다. 이렇게 하면 처리기의 범위가 해당 특정 애플리케이션으로만 제한됩니다. RequestDumping 처리기는 website -INF/undertow-handlers.conf 에서 구성해야 합니다.

이 애플리케이션에 대한 모든 요청 및 해당 응답을 기록하도록 WEB-INF/undertow-handlers.conf 에서 RequestDumping 처리기를 구성하려면 다음 표현식을 article-INF/undertow-handlers.conf에 추가합니다.

: web-INF/undertow-handlers.conf

dump-request
Copy to Clipboard Toggle word wrap

이 애플리케이션 내의 특정 URL 및 해당 URL에 대한 해당 응답만 기록 요청 및 해당 URL에 대한 해당 응답만 위해 webpage -INF/undertow-handlers.conf 에서 RequestDumping 처리기를 구성하려면 경로 , path -prefix 또는 path- suffix 와 같은 표현식에서 서술자를 사용할 수 있습니다. 예를 들어 애플리케이션에서 테스트 할 모든 요청과 해당 응답을 로깅하려면 경로 서술자와 함께 다음 표현식을 사용할 수 있습니다.

: web-INF/undertow-handlers.conf

path(/test) -> dump-request
Copy to Clipboard Toggle word wrap

참고

애플리케이션의 article- INF/undertow-handlers.conf .conf에 정의된 표현식에서 path -prefix, path- suffix 와 같은 서술자를 사용하는 경우 사용되는 값은 애플리케이션의 컨텍스트 루트와 관련이 있습니다. 예를 들어 애플리케이션의 컨텍스트 루트가 myApplication 이고 표현식 path(/test) -> WEB-INF/undertow-handlers.conf 에 구성된 덤프 요청 인 경우 /myApplication/test 에 대한 요청 및 해당 응답만 기록합니다.

18장. Remoting 구성

18.1. Remoting Cryostat 정보

원격 하위 시스템을 사용하면 로컬 및 원격 서비스에 대한 인바운드 및 아웃바운드 연결 및 해당 연결에 대한 설정을 구성할 수 있습니다.

JBoss Remoting에는 끝점, 커넥터, 일련의 로컬 및 원격 연결 URI와 같은 구성 가능한 요소가 포함되어 있습니다. 대부분의 사용자는 자체 애플리케이션에 사용자 지정 커넥터를 사용하지 않는 한 원격 하위 시스템을 전혀 구성할 필요가 없습니다. EventListener와 같은 클라이언트 리모팅 역할을 하는 애플리케이션은 특정 커넥터에 연결하기 위해 별도의 구성이 필요합니다.

기본 Remoting Cryostat 구성
<subsystem xmlns="urn:jboss:domain:remoting:3.0">
    <endpoint/>
    <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/>
</subsystem>
Copy to Clipboard Toggle word wrap

원격 하위 시스템에 사용할 수 있는 전체 속성 목록은 Remoting Cryostat Attributes 참조하십시오.

Remoting Endpoint

remoting 엔드포인트는 io 하위 시스템에서 선언하고 구성한 XNIO 작업자를 사용합니다.

원격 끝점 구성 방법에 대한 자세한 내용은 끝점 구성을 참조하십시오.

커넥터

커넥터는 주요 구성 요소 리모팅 구성 요소입니다. 여러 커넥터를 사용할 수 있습니다. 각 커넥터는 여러 하위 요소와 몇 가지 다른 속성이 있는 < connector > 요소로 구성됩니다. 기본 커넥터는 여러 JBoss EAP 하위 시스템에서 사용합니다. 사용자 지정 커넥터의 요소 및 속성에 대한 특정 설정은 애플리케이션에 따라 다릅니다. 자세한 내용은 Red Hat 글로벌 지원 서비스에 문의하십시오.

커넥터 구성 방법에 대한 자세한 내용은 커넥터 구성을 참조하십시오.

아웃바운드 연결

세 가지 유형의 아웃바운드 연결을 지정할 수 있습니다.

추가 구성

리모팅은 네트워크 인터페이스 및 IO 작업자와 같이 원격 하위 시스템 외부에서 구성된 여러 요소에 따라 달라집니다.

자세한 내용은 추가 구성 제거를 참조하십시오.

18.2. 끝점 구성

중요

JBoss EAP 6에서 작업자 스레드 풀은 원격 하위 시스템에서 직접 구성되었습니다. JBoss EAP 7에서 리모팅 엔드포인트 구성은 io 하위 시스템의 작업자를 참조합니다.

JBoss EAP는 기본적으로 다음 엔드포인트 구성을 제공합니다.

<subsystem xmlns="urn:jboss:domain:remoting:3.0">
  <endpoint/>
  ...
</subsystem>
Copy to Clipboard Toggle word wrap
기존 끝점 구성 업데이트
/subsystem=remoting/configuration=endpoint:write-attribute(name=authentication-retries,value=2)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
새 끝점 구성 생성
/subsystem=remoting/configuration=endpoint:add
Copy to Clipboard Toggle word wrap
끝점 구성 삭제
/subsystem=remoting/configuration=endpoint:remove
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap

엔드포인트 구성에 사용할 수 있는 속성의 전체 목록은 끝점 특성을 참조하십시오.

18.3. 커넥터 구성

커넥터는 리모팅과 관련된 주요 구성 요소이며 추가 구성을 위한 몇 가지 하위 요소를 포함합니다.

기존 커넥터 구성 업데이트
/subsystem=remoting/connector=new-connector:write-attribute(name=socket-binding,value=my-socket-binding)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
새 커넥터 만들기
/subsystem=remoting/connector=new-connector:add(socket-binding=my-socket-binding)
Copy to Clipboard Toggle word wrap
커넥터 삭제
/subsystem=remoting/connector=new-connector:remove
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap

커넥터 구성에 사용할 수 있는 속성의 전체 목록은 Remoting Cryostat 특성 섹션을 참조하십시오.

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>
Copy to Clipboard Toggle word wrap

기본적으로 이 HTTP 커넥터는 undertow 하위 시스템에서 구성된 default 라는 HTTP 리스너에 연결합니다. 자세한 내용은 웹 서버(Undertow) 구성을 참조하십시오.

기존 HTTP 커넥터 구성 업데이트
/subsystem=remoting/http-connector=new-connector:write-attribute(name=connector-ref,value=new-connector-ref)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
새 HTTP 커넥터 만들기
/subsystem=remoting/http-connector=new-connector:add(connector-ref=default)
Copy to Clipboard Toggle word wrap
HTTP 커넥터 삭제
/subsystem=remoting/http-connector=new-connector:remove
Copy to Clipboard Toggle word wrap

HTTP 커넥터 구성에 사용할 수 있는 속성의 전체 목록은 커넥터 특성을 참조하십시오.

18.5. 아웃 바운드 연결 구성

아웃바운드 연결은 URI로 완전히 지정된 일반적인 원격 아웃바운드 연결입니다.

기존 아웃 바운드 연결 업데이트
/subsystem=remoting/outbound-connection=new-outbound-connection:write-attribute(name=uri,value=http://example.com)
Copy to Clipboard Toggle word wrap
새 아웃 바운드 연결 생성
/subsystem=remoting/outbound-connection=new-outbound-connection:add(uri=http://example.com)
Copy to Clipboard Toggle word wrap
아웃 바운드 연결 삭제
/subsystem=remoting/outbound-connection=new-outbound-connection:remove
Copy to Clipboard Toggle word wrap

아웃바운드 연결을 구성하는 데 사용할 수 있는 속성의 전체 목록은 아웃 바운드 연결 속성을 참조하십시오.

18.6. 원격 아웃 바운드 연결 구성

원격 아웃바운드 연결은 프로토콜, 아웃바운드 소켓 바인딩, 사용자 이름 및 보안 영역에 의해 지정됩니다. 프로토콜은 원격,http-remoting 또는 https-remoting 일 수 있습니다.

기존 원격 아웃 바운드 연결 업데이트

/subsystem=remoting/remote-outbound-connection=new-remote-outbound-connection:write-attribute(name=outbound-socket-binding-ref,value=outbound-socket-binding)
Copy to Clipboard Toggle word wrap

새 원격 아웃 바운드 연결 생성

/subsystem=remoting/remote-outbound-connection=new-remote-outbound-connection:add(outbound-socket-binding-ref=outbound-socket-binding)
Copy to Clipboard Toggle word wrap

원격 아웃 바운드 연결 삭제

/subsystem=remoting/remote-outbound-connection=new-remote-outbound-connection:remove
Copy to Clipboard Toggle word wrap

원격 아웃바운드 연결을 구성하는 데 사용할 수 있는 속성의 전체 목록은 Remote Outbound Connection Attributes 를 참조하십시오.

18.7. 로컬 아웃 바운드 연결 구성

로컬 아웃 바운드 연결은 아웃 바운드 소켓 바인딩에서만 지정된 로컬 프로토콜을 사용하는 아웃바운드 연결입니다.

기존 로컬 아웃 바운드 연결 업데이트
/subsystem=remoting/local-outbound-connection=new-local-outbound-connection:write-attribute(name=outbound-socket-binding-ref,value=outbound-socket-binding)
Copy to Clipboard Toggle word wrap
새 로컬 아웃 바운드 연결 생성
/subsystem=remoting/local-outbound-connection=new-local-outbound-connection:add(outbound-socket-binding-ref=outbound-socket-binding)
Copy to Clipboard Toggle word wrap
로컬 아웃 바운드 연결 삭제
/subsystem=remoting/local-outbound-connection=new-local-outbound-connection:remove
Copy to Clipboard Toggle word wrap

로컬 아웃바운드 연결을 구성하는 데 사용할 수 있는 속성의 전체 목록은 로컬 아웃 바운드 연결 속성을 참조하십시오.

18.8. 추가 삭제 구성

원격 하위 시스템 외부에서 구성된 여러 리모팅 요소가 있습니다.

IO 작업자

다음 명령을 사용하여 재배치할 IO 작업자를 설정합니다.

/subsystem=remoting/configuration=endpoint:write-attribute(name=worker, value=WORKER_NAME)
Copy to Clipboard Toggle word wrap

IO 작업자 구성 방법에 대한 자세한 내용은 작업자 구성을 참조하십시오.

네트워크 인터페이스

remoting 하위 시스템에서 사용하는 네트워크 인터페이스는 공용 인터페이스입니다. 이 인터페이스는 다른 여러 하위 시스템에서도 사용하므로 수정할 때는 주의하십시오.

<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>
Copy to Clipboard Toggle word wrap

관리형 도메인에서 공용 인터페이스는 host.xml 파일에 호스트별로 정의됩니다.

소켓 바인딩

remoting 하위 시스템에서 사용하는 기본 소켓 바인딩은 포트 8080 에 바인딩됩니다.

소켓 바인딩 및 소켓 바인딩 그룹에 대한 자세한 내용은 소켓 바인딩을 참조하십시오.

Manila에 대한 커넥터 참조

Cryo stat3 하위 시스템에는 원격 메서드 호출을 위한 원격 커넥터에 대한 참조가 포함되어 있습니다. 다음은 기본 구성입니다.

<remote connector-ref="remoting-connector" thread-pool-name="default"/>
Copy to Clipboard Toggle word wrap
보안 전송 구성

리모팅 전송은 STARTTLS를 사용하여 클라이언트가 요청하는 경우 HTTPS, Secure Servlet과 같은 보안 연결을 사용합니다. 보안 및 비보안 연결에 동일한 소켓 바인딩(네트워크 포트)을 사용하므로 추가 서버 측 구성이 필요하지 않습니다. 클라이언트는 필요에 따라 보안 또는 비보안 전송을 요청합니다. migrations, ORB 및 JMS 공급자와 같은 원격을 사용하는 JBoss EAP 구성 요소는 기본적으로 보안 인터페이스를 요청합니다.

주의

STARTTLS는 클라이언트가 요청하는 경우 보안 연결을 활성화하여 작동합니다. 그렇지 않으면 기본값은 비보안 연결입니다. 기본적으로 공격자가 클라이언트 요청을 가로채고 보안되지 않은 연결을 요청하도록 수정하는 중간자 익스플로잇에 취약합니다. 비보안 연결이 적절한 대체 연결이 아닌 경우 클라이언트가 보안 연결을 수신하지 못하면 적절하게 실패하도록 작성해야 합니다.

19장. IO Cryostat 구성

19.1. IO Cryostat 개요

io 하위 시스템은 Cryostat 및 Remoting과 같은 다른 하위 시스템에서 사용하는 XNIO 작업자버퍼 풀 을 정의합니다. 이러한 작업자 및 버퍼 풀은 io 하위 시스템의 다음 구성 요소 내에 정의됩니다.

기본 IO Cryostat 구성
<subsystem xmlns="urn:jboss:domain:io:1.1">
    <worker name="default"/>
    <buffer-pool name="default"/>
</subsystem>
Copy to Clipboard Toggle word wrap

19.2. 작업자 구성

작업자는 XNIO 작업자 인스턴스입니다. XNIO 작업자 인스턴스는 SSL 지원뿐만 아니라 IO 및 작업자 스레드 관리와 같은 기능을 제공하는 Java NIO API의 추상화 계층입니다. 기본적으로 JBoss EAP는 default 라는 단일 작업자를 제공하지만 더 많은 작업자를 정의할 수 있습니다.

기존 작업자 업데이트

기존 작업자를 업데이트하려면 다음을 수행합니다.

/subsystem=io/worker=default:write-attribute(name=io-threads,value=10)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
새 작업자 만들기

새 작업자를 생성하려면 다음을 수행합니다.

/subsystem=io/worker=newWorker:add
Copy to Clipboard Toggle word wrap
작업자 삭제

작업자를 삭제하려면 다음을 수행합니다.

/subsystem=io/worker=newWorker:remove
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap

작업자 구성에 사용할 수 있는 속성의 전체 목록은 IO Cryostat 속성 섹션을 참조하십시오.

19.3. 버퍼 풀 구성

버퍼 풀은 풀링된 NIO 버퍼 인스턴스입니다.

중요

버퍼 크기를 변경하면 애플리케이션 성능에 큰 영향을 미칩니다. 대부분의 서버에서 이상적인 크기는 일반적으로 16k입니다.

기존 버퍼 풀 업데이트

기존 버퍼 풀을 업데이트하려면 다음을 수행합니다.

/subsystem=io/buffer-pool=default:write-attribute(name=direct-buffers,value=true)
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap
버퍼 풀 생성

새 버퍼 풀을 생성하려면 다음을 수행합니다.

/subsystem=io/buffer-pool=newBuffer:add
Copy to Clipboard Toggle word wrap
버퍼 풀 삭제

버퍼 풀을 삭제하려면 다음을 수행합니다.

/subsystem=io/buffer-pool=newBuffer:remove
Copy to Clipboard Toggle word wrap
reload
Copy to Clipboard Toggle word wrap

버퍼 풀 구성에 사용할 수 있는 속성의 전체 목록은 IO Cryostat 특성 섹션을 참조하십시오.

20장. 배치 애플리케이션 구성

JBoss EAP 7에서는 Cryostat -352에서 정의한 Java 배치 애플리케이션을 지원했습니다. batch-jberet 하위 시스템을 사용하여 배치 애플리케이션을 실행하고 배치 작업을 관리하는 환경을 구성할 수 있습니다.

배치 애플리케이션 개발에 대한 자세한 내용은 JBoss EAP 개발 가이드의 Java Batch Application Development 를 참조하십시오.

20.1. 배치 작업 구성

JBeret 구현을 기반으로 하는 batch-jberet 하위 시스템을 사용하여 배치 작업에 대한 설정을 구성할 수 있습니다.

기본 batch-jberet 하위 시스템 구성은 메모리 내 작업 리포지토리 및 기본 스레드 풀 설정을 정의합니다.

<subsystem xmlns="urn:jboss:domain:batch-jberet:1.0">
    <default-job-repository name="in-memory"/>
    <default-thread-pool name="batch"/>
    <job-repository name="in-memory">
        <in-memory/>
    </job-repository>
    <thread-pool name="batch">
        <max-threads count="10"/>
        <keepalive-time time="30" unit="seconds"/>
    </thread-pool>
</subsystem>
Copy to Clipboard Toggle word wrap

기본적으로 서버 일시 중단 중에 중지된 배치 작업은 서버를 다시 시작할 때 다시 시작됩니다. restart-jobs-on-resume 속성을 false 로 설정하여 대신 작업을 STOPPED 상태로 유지할 수 있습니다.

/subsystem=batch-jberet:write-attribute(name=restart-jobs-on-resume,value=false)
Copy to Clipboard Toggle word wrap

배치 작업 리포지토리스레드 풀에 대한 설정을 구성할 수도 있습니다.

20.1.1. 배치 작업 리포지토리 구성

이 섹션에서는 관리 CLI를 사용하여 배치 작업 정보를 저장하기 위해 메모리 내 및 JDBC 작업 리포지토리를 구성하는 방법을 보여줍니다. 또한 구성 탭에서 Batch 하위 시스템으로 이동하고 왼쪽 메뉴에서 In Memory 또는 JDBC 를 선택하여 관리 콘솔을 사용하여 작업 리포지토리를 구성할 수도 있습니다.

메모리 내 작업 리포지토리 추가

메모리에 배치 작업 정보를 저장하는 작업 리포지토리를 추가할 수 있습니다.

/subsystem=batch-jberet/in-memory-job-repository=REPOSITORY_NAME:add
Copy to Clipboard Toggle word wrap
JDBC 작업 리포지토리 추가

데이터베이스에 배치 작업 정보를 저장하는 작업 리포지토리를 추가할 수 있습니다. 데이터베이스에 연결하기 위한 데이터 소스의 이름을 지정해야 합니다.

/subsystem=batch-jberet/jdbc-job-repository=REPOSITORY_NAME:add(data-source=DATASOURCE)
Copy to Clipboard Toggle word wrap
기본 작업 리포지토리 설정

in-memory 또는 JDBC 작업 리포지토리를 배치 애플리케이션의 기본 작업 리포지토리로 설정할 수 있습니다.

/subsystem=batch-jberet:write-attribute(name=default-job-repository,value=REPOSITORY_NAME)
Copy to Clipboard Toggle word wrap

이 경우 서버를 다시 로드해야 합니다.

reload
Copy to Clipboard Toggle word wrap

20.1.2. 배치 스레드 풀 구성

이 섹션에서는 관리 CLI를 사용하여 배치 작업에 사용할 스레드 풀 및 스레드 팩토리를 구성하는 방법을 보여줍니다. 또한 구성 탭에서 Batch 하위 시스템으로 이동하고 왼쪽 메뉴에서 스레드 풀 또는 스레드 요인을 선택하여 관리 콘솔을 사용하여 스레드 풀스레드 팩토리를 구성할 수도 있습니다.

스레드 풀 구성

스레드 풀을 추가할 때 파티션 작업이 예상대로 실행되도록 예약되므로 항상 3 보다 커야 하는 max-threads 를 지정해야 합니다.

  1. 스레드 풀을 추가합니다.

    /subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:add(max-threads=10)
    Copy to Clipboard Toggle word wrap
  2. 필요한 경우 keepalive-time 값을 설정합니다.

    /subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:write-attribute(name=keepalive-time,value={time=60,unit=SECONDS})
    Copy to Clipboard Toggle word wrap
스레드 팩토리 사용
  1. 스레드 팩토리를 추가합니다.

    /subsystem=batch-jberet/thread-factory=THREAD_FACTORY_NAME:add
    Copy to Clipboard Toggle word wrap
  2. 스레드 팩토리에 대해 원하는 특성을 구성합니다.

    • group-name - 이 스레드 팩토리에 대해 생성할 스레드 그룹의 이름입니다.
    • priority - 생성된 스레드의 스레드 우선 순위입니다.
    • thread-name-pattern - 스레드 이름을 만드는 데 사용되는 템플릿입니다. 다음 패턴을 사용할 수 있습니다.

      • %% - 백분율 기호
      • %t - 요소별 스레드 시퀀스 번호
      • % G - 글로벌 스레드 시퀀스 번호
      • % F - 팩토리 순서 번호
      • % I - 스레드 ID
  3. 스레드 팩토리를 스레드 풀에 할당합니다.

    /subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:write-attribute(name=thread-factory,value=THREAD_FACTORY_NAME)
    Copy to Clipboard Toggle word wrap

    이 경우 서버를 다시 로드해야 합니다.

    reload
    Copy to Clipboard Toggle word wrap
기본 스레드 풀 설정

다른 스레드 풀을 기본 스레드 풀로 설정할 수 있습니다.

/subsystem=batch-jberet:write-attribute(name=default-thread-pool,value=THREAD_POOL_NAME)
Copy to Clipboard Toggle word wrap

이 경우 서버를 다시 로드해야 합니다.

reload
Copy to Clipboard Toggle word wrap
스레드 풀 통계 보기

read-resource 관리 CLI 작업을 사용하여 배치 스레드 풀에 대한 런타임 정보를 볼 수 있습니다. 이 런타임 정보를 보려면 include-runtime=true 매개변수를 사용해야 합니다.

/subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:read-resource(include-runtime=true)
{
    "outcome" => "success",
    "result" => {
        "active-count" => 0,
        "completed-task-count" => 0L,
        "current-thread-count" => 0,
        "keepalive-time" => undefined,
        "largest-thread-count" => 0,
        "max-threads" => 15,
        "name" => "THREAD_POOL_NAME",
        "queue-size" => 0,
        "rejected-count" => 0,
        "task-count" => 0L,
        "thread-factory" => "THREAD_FACTORY_NAME"
    }
}
Copy to Clipboard Toggle word wrap

런타임 탭에서 배치 하위 시스템으로 이동하여 관리 콘솔을 사용하여 배치 스레드 풀에 대한 런타임 정보를 볼 수도 있습니다.

20.2. 배치 작업 관리

배포를 위한 batch-jberet 하위 시스템 리소스를 사용하면 배치 작업을 시작, 중지 및 다시 시작할 수 있습니다. 작업 실행 세부 정보를 볼 수도 있습니다.

배치 작업 다시 시작

실행 ID와 배치 작업을 다시 시작할 때 사용할 속성을 제공하여 STOPPED 또는 FAILED 상태인 작업을 다시 시작할 수 있습니다.

/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:restart-job(execution-id=EXECUTION_ID,properties={PROPERTY=VALUE})
Copy to Clipboard Toggle word wrap

실행 ID는 작업 인스턴스의 최신 실행이어야 합니다.

배치 작업 시작

작업 XML 파일과 배치 작업을 시작할 때 사용할 모든 속성을 제공하여 배치 작업을 시작할 수 있습니다.

/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:start-job(job-xml-name=JOB_XML_NAME,properties={PROPERTY=VALUE})
Copy to Clipboard Toggle word wrap
배치 작업 중지

실행 ID를 제공하여 실행 중인 배치 작업을 중지할 수 있습니다.

/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:stop-job(execution-id=EXECUTION_ID)
Copy to Clipboard Toggle word wrap
배치 작업 실행 세부 정보 보기

배치 작업 실행의 세부 정보를 볼 수 있습니다. 이 런타임 정보를 보려면 include-runtime=true 매개변수를 사용해야 합니다.

/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:read-resource(recursive=true,include-runtime=true)
{
    "outcome" => "success",
    "result" => {"job" => {"import-file" => {
        "instance-count" => 2,
        "running-executions" => 0,
        "execution" => {
            "2" => {
                "batch-status" => "COMPLETED",
                "create-time" => "2016-04-11T22:03:12.708-0400",
                "end-time" => "2016-04-11T22:03:12.718-0400",
                "exit-status" => "COMPLETED",
                "instance-id" => 58L,
                "last-updated-time" => "2016-04-11T22:03:12.719-0400",
                "start-time" => "2016-04-11T22:03:12.708-0400"
            },
            "1" => {
                "batch-status" => "FAILED",
                "create-time" => "2016-04-11T21:57:17.567-0400",
                "end-time" => "2016-04-11T21:57:17.596-0400",
                "exit-status" => "Error : org.hibernate.exception.ConstraintViolationException: could not execute statement",
                "instance-id" => 15L,
                "last-updated-time" => "2016-04-11T21:57:17.597-0400",
                "start-time" => "2016-04-11T21:57:17.567-0400"
            }
        }
    }}}
}
Copy to Clipboard Toggle word wrap

21장. 이름 지정 구성

21.1. 이름 지정 정보

이름 지정 하위 시스템은 JBoss EAP에 대한 JNDI 구현을 제공합니다. 글로벌 JNDI 네임스페이스의 항목을 바인딩 하도록 이 하위 시스템을 구성할 수 있습니다. 원격 JNDI 인터페이스를 활성화하거나 비활성화하도록 구성할 수도 있습니다.

다음은 모든 요소 및 특성이 지정된 이름 지정 하위 시스템 XML 구성 예의 예입니다.

<subsystem xmlns="urn:jboss:domain:naming:2.0">
    <bindings>
        <simple name="java:global/simple-integer-binding" value="100" type="int" />
        <simple name="java:global/jboss.org/docs/url" value="https://docs.jboss.org" type="java.net.URL" />
        <object-factory name="java:global/foo/bar/factory" module="org.foo.bar" class="org.foo.bar.ObjectFactory" />
        <external-context name="java:global/federation/ldap/example" class="javax.naming.directory.InitialDirContext" cache="true">
            <environment>
                <property name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory" />
                <property name="java.naming.provider.url" value="ldap://ldap.example.com:389" />
                <property name="java.naming.security.authentication" value="simple" />
                <property name="java.naming.security.principal" value="uid=admin,ou=system" />
                <property name="java.naming.security.credentials" value="secret" />
            </environment>
        </external-context>
        <lookup name="java:global/new-alias-name" lookup="java:global/original-name" />
    </bindings>
    <remote-naming/>
</subsystem>
Copy to Clipboard Toggle word wrap

21.2. 글로벌 바인딩 구성

이름 지정 하위 시스템을 사용하면 java:global,java:jboss 또는 java 글로벌 JNDI 네임스페이스에 항목을 바인딩할 수 있지만 표준 이식 가능한 java:global 네임스페이스를 사용하는 것이 좋습니다.

글로벌 바인딩은 이름 지정 하위 시스템의 <bindings > 요소에서 구성됩니다. 다음 네 가지 유형의 바인딩이 지원됩니다.

간단한 바인딩 구성

간단한 XML 구성 요소는 기본 또는 java.net.URL 항목을 바인딩합니다.

  • name 속성은 필수이며 항목의 대상 JNDI 이름을 지정합니다.
  • value 속성은 필수이며 항목의 값을 정의합니다.
  • 기본값은 java.lang.String 이며 선택적 type 속성은 항목의 값 유형을 지정합니다. java.lang.String 외에도 기본 유형 및 해당 오브젝트 래퍼 클래스(예: int 또는 java.lang.Integer, java.net.URL )를 지정할 수 있습니다.

다음은 간단한 바인딩을 생성하는 관리 CLI 명령의 예입니다.

/subsystem=naming/binding=java\:global\/simple-integer-binding:add(binding-type=simple, type=int, value=100)
Copy to Clipboard Toggle word wrap

결과 XML 구성

<subsystem xmlns="urn:jboss:domain:naming:2.0">
    <bindings>
        <simple name="java:global/simple-integer-binding" value="100" type="int"/>
    </bindings>
    <remote-naming/>
</subsystem>
Copy to Clipboard Toggle word wrap

다음 명령을 사용하여 바인딩을 제거합니다.

/subsystem=naming/binding=java\:global\/simple-integer-binding:remove
Copy to Clipboard Toggle word wrap
바인딩 오브젝트 요인

object-factory XML 구성 요소는 javax.naming.spi.ObjectFactory 항목을 바인딩합니다.

  • name 속성은 필수이며 항목의 대상 JNDI 이름을 지정합니다.
  • class 속성은 필수이며 오브젝트 팩토리의 Java 유형을 정의합니다.
  • module 속성은 필수이며 오브젝트 팩토리 Java 클래스를 로드할 수 있는 JBoss 모듈 ID를 지정합니다.
  • 선택적 환경 하위 요소는 오브젝트 팩토리에 사용자 지정 환경을 제공하는 데 사용할 수 있습니다.

다음은 오브젝트 팩토리 바인딩을 생성하는 관리 CLI 명령의 예입니다.

/subsystem=naming/binding=java\:global\/foo\/bar\/factory:add(binding-type=object-factory, module=org.foo.bar, class=org.foo.bar.ObjectFactory, environment=[p1=v1, p2=v2])
Copy to Clipboard Toggle word wrap

결과 XML 구성

<subsystem xmlns="urn:jboss:domain:naming:2.0">
    <bindings>
        <object-factory name="java:global/foo/bar/factory" module="org.foo.bar" class="org.foo.bar.ObjectFactory">
            <environment>
                <property name="p1" value="v1" />
                <property name="p2" value="v2" />
            </environment>
        </object-factory>
    </bindings>
  </subsystem>
Copy to Clipboard Toggle word wrap

다음 명령을 사용하여 바인딩을 제거합니다.

/subsystem=naming/binding=java\:global\/foo\/bar\/factory:remove
Copy to Clipboard Toggle word wrap
외부 컨텍스트 바인딩

LDAP 컨텍스트와 같은 외부 JNDI 컨텍스트 통합은 external-context XML 구성 요소를 사용하여 수행됩니다.

  • name 속성은 필수이며 항목의 대상 JNDI 이름을 지정합니다.
  • class 속성은 필수이며 페더레이션 컨텍스트를 생성하는 데 사용되는 Java 초기 이름 지정 컨텍스트 유형을 나타냅니다. 이러한 유형에는 단일 환경 맵 인수가 있는 생성자가 있어야 합니다.
  • 선택적 모듈 속성은 외부 JNDI 컨텍스트에 필요한 모든 클래스를 로드할 수 있는 JBoss 모듈 ID를 지정합니다.
  • 기본값은 false 인 선택적 cache 속성은 외부 컨텍스트 인스턴스를 캐시해야 하는지 여부를 나타냅니다.
  • 선택적 환경 하위 요소를 사용하여 외부 컨텍스트를 조회하는 데 필요한 사용자 지정 환경을 제공할 수 있습니다.

다음은 외부 컨텍스트 바인딩을 생성하는 관리 CLI 명령의 예입니다.

/subsystem=naming/binding=java\:global\/federation\/ldap\/example:add(binding-type=external-context, cache=true, class=javax.naming.directory.InitialDirContext, module=org.jboss.as.naming, environment=[java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory, java.naming.provider.url="ldap://ldap.example.com:389", java.naming.security.authentication=simple, java.naming.security.principal="uid=admin,ou=system", java.naming.security.credentials=secret]
Copy to Clipboard Toggle word wrap

결과 XML 구성

<subsystem xmlns="urn:jboss:domain:naming:2.0">
  <bindings>
    <external-context name="java:global/federation/ldap/example" module="org.jboss.as.naming" class="javax.naming.directory.InitialDirContext" cache="true">
      <environment>
        <property name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
        <property name="java.naming.provider.url" value="ldap://ldap.example.com:389"/>
        <property name="java.naming.security.authentication" value="simple"/>
        <property name="java.naming.security.principal" value="uid=admin,ou=system"/>
        <property name="java.naming.security.credentials" value="secret"/>
      </environment>
    </external-context>
  </bindings>
</subsystem>
Copy to Clipboard Toggle word wrap

다음 명령을 사용하여 바인딩을 제거합니다.

/subsystem=naming/binding=java\:global\/federation\/ldap\/example:remove
Copy to Clipboard Toggle word wrap
참고

lookup(Name) 메서드를 제대로 구현하지 않는 JNDI 공급자를 위한 리소스는 "javax.naming.InvalidNameException: only support CompoundName names" 오류가 발생할 수 있습니다.

외부 컨텍스트 환경이 다음 속성을 추가하여 대신 lookup(String) 메서드를 사용하도록 지정하여 이 문제를 해결할 수 있지만 이로 인해 성능이 저하될 수 있습니다.

<property name="org.jboss.as.naming.lookup.by.string" value="true"/>
Copy to Clipboard Toggle word wrap
바인딩 조회 별칭

lookup 요소를 사용하면 기존 항목을 추가 이름 또는 별칭에 바인딩할 수 있습니다.

  • name 속성은 필수이며 항목의 대상 JNDI 이름을 지정합니다.
  • lookup 속성은 필수이며 소스 JNDI 이름을 나타냅니다.

다음은 기존 항목을 별칭에 바인딩하는 관리 CLI 명령의 예입니다.

/subsystem=naming/binding=java\:global\/new-alias-name:add(binding-type=lookup, lookup=java\:global\/original-name)
Copy to Clipboard Toggle word wrap

결과 XML 구성

<lookup name="java:global/new-alias-name" lookup="java:global/original-name" />
Copy to Clipboard Toggle word wrap

다음 명령을 사용하여 바인딩을 제거합니다.

/subsystem=naming/binding=java\:global\/c:remove
Copy to Clipboard Toggle word wrap

21.3. 원격 JNDI 인터페이스 구성

원격 JNDI 인터페이스를 사용하면 클라이언트가 원격 JBoss EAP 인스턴스에서 항목을 검색할 수 있습니다. 이 인터페이스를 비활성화하거나 활성화하도록 이름 지정 하위 시스템을 구성할 수 있습니다. 이 인터페이스는 기본적으로 활성화됩니다. 원격 JNDI 인터페이스는 < remote-naming> 요소를 사용하여 구성됩니다.

다음 관리 CLI 명령을 사용하여 원격 JNDI 인터페이스를 활성화하거나 다시 활성화합니다.

/subsystem=naming/service=remote-naming:add
Copy to Clipboard Toggle word wrap

다음 관리 CLI 명령을 사용하여 원격 JNDI 인터페이스를 비활성화합니다.

/subsystem=naming/service=remote-naming:remove
Copy to Clipboard Toggle word wrap
참고

java:jboss/exported 컨텍스트 내의 항목만 원격 JNDI를 통해 액세스할 수 있습니다.

22장. 고가용성 구성

22.1. 고가용성 소개

JBoss EAP는 배포된 Java EE 애플리케이션의 가용성을 보장하기 위해 다음과 같은 고가용성 서비스를 제공합니다.

로드 밸런싱
이를 통해 서비스는 여러 서버에 워크로드를 분배하여 많은 수의 요청을 처리할 수 있습니다. 클라이언트는 대량의 요청이 있는 경우에도 서비스에서 적시에 응답할 수 있습니다.
페일오버
이를 통해 하드웨어 또는 네트워크 오류가 발생한 경우에도 클라이언트가 서비스에 대한 중단 없이 액세스할 수 있습니다. 서비스가 실패하면 다른 클러스터 멤버가 클라이언트의 요청을 처리하여 계속 처리할 수 있습니다.

클러스터링 은 이러한 모든 기능을 포함하는 용어입니다. 클러스터 멤버는 워크로드(부하 밸런싱)를 공유하고 다른 클러스터 구성원(failover)이 실패할 경우 클라이언트 처리를 선택하도록 구성할 수 있습니다.

참고

선택한 JBoss EAP 운영 모드(독립 실행형 서버 또는 관리형 도메인)와 서버 관리 방법 관련 사항을 고려해야 합니다. 고가용성 서비스는 운영 모드에 관계없이 JBoss EAP에서 구성할 수 있습니다.

JBoss EAP는 다양한 구성 요소를 사용하여 다양한 수준에서 고가용성을 지원합니다. 런타임 및 애플리케이션의 일부 구성 요소는 고가용성을 수행할 수 있습니다.

  • 애플리케이션 서버의 인스턴스
  • 웹 애플리케이션은 내부 JBoss Web Server, Apache HTTP Server, Microsoft 14 또는 Oracle iPlanet Web Server와 함께 사용되는 경우
  • 상태 저장 및 상태 비저장 세션 Enterprise JavaBeans(EJB)
  • SSO(Single Sign-On) 메커니즘
  • HTTP 세션
  • JMS 서비스 및 메시지 중심 빈(MDB)
  • 싱글톤 MSC 서비스
  • Singleton 배포

클러스터링은 jgroups, infinispanmodcluster 하위 시스템에서 JBoss EAP에서 사용할 수 있습니다. hafull-ha 프로필에는 이러한 시스템이 활성화되어 있습니다. JBoss EAP에서 이러한 서비스는 요청 시 시작 및 종료되지만 배포 가능 으로 구성된 애플리케이션이 서버에 배포된 경우에만 시작됩니다.

애플리케이션을 배포 가능으로 표시하는 방법은 JBoss EAP 개발 가이드를 참조하십시오.

22.2. Cryostat와 클러스터 통신

22.2.1. Cryostat 정보

Cryostat는 안정적인 메시징을 위한 툴킷이며 노드가 서로 메시지를 보낼 수 있는 클러스터를 만드는 데 사용할 수 있습니다.

jgroups 하위 시스템은 JBoss EAP에서 고가용성 서비스에 대한 그룹 통신 지원을 제공합니다. 이를 통해 이름이 지정된 채널 및 프로토콜 스택을 구성하고 채널에 대한 런타임 통계를 볼 수 있습니다. jgroups 하위 시스템은 관리형 도메인에서 ha 또는 full-ha 프로필 또는 독립 실행형 서버의 standalone-ha.xml 또는 standalone-full-ha.xml 구성 파일과 같은 고가용성 기능을 제공하는 구성을 사용할 때 사용할 수 있습니다.

JBoss EAP는 두 개의 Cryostat 스택으로 사전 구성되어 있습니다.

udp
클러스터의 노드는 UDP(User Datagram Protocol) 멀티 캐스트를 사용하여 서로 통신합니다. 기본 스택입니다.
tcp
클러스터의 노드는 TCP(Transmission Control Protocol)를 사용하여 서로 통신합니다.

사전 구성된 스택을 사용하거나 시스템의 특정 요구 사항에 맞게 자체적으로 정의할 수 있습니다.

참고

TCP는 더 많은 오버헤드를 가지며 오류 검사, 패킷 순서 및 정체 제어 자체를 처리하기 때문에 UDP보다 느리게 간주됩니다. Cryostat는 UDP용 이러한 기능을 처리하는 반면 TCP는 자체적으로 기능을 보장합니다. 신뢰할 수 없거나 높은 혼잡 네트워크에서 Cryostat를 사용하거나 멀티 캐스트를 사용할 수 없는 경우 TCP를 선택하는 것이 좋습니다.

22.2.2. 기본 Cryostat 채널을 TCP를 사용하도록 전환

기본적으로 클러스터 노드는 UDP 프로토콜을 사용하여 통신합니다. 기본 ee Cryostat 채널은 사전 정의된 udp 프로토콜 스택을 사용합니다.

<channels default="ee">
  <channel name="ee" stack="udp"/>
</channels>
<stacks>
  <stack name="udp">
    <transport type="UDP" socket-binding="jgroups-udp"/>
    <protocol type="PING"/>
    ...
  </stack>
  <stack name="tcp">
    <transport type="TCP" socket-binding="jgroups-tcp"/>
    <protocol type="MPING" socket-binding="jgroups-mping"/>
    ...
  </stack>
</stacks>
Copy to Clipboard Toggle word wrap

일부 네트워크는 TCP만 사용할 수 있습니다. 다음 관리 CLI 명령을 사용하여 사전 구성된 tcp 스택을 사용하도록 ee 채널을 전환합니다.

/subsystem=jgroups/channel=ee:write-attribute(name=stack,value=tcp)
Copy to Clipboard Toggle word wrap

이 기본 tcp 스택은 IP 멀티 캐스트를 사용하여 초기 클러스터 멤버십을 검색하는 MPING 프로토콜을 사용합니다. 대체 멤버십 검색 프로토콜의 스택 구성은 다음 섹션을 참조하십시오.

  • TCPPING 프로토콜을 사용하여 정적 클러스터 멤버십 목록을 정의합니다.
  • TCPGOSSIP 프로토콜을 사용하여 외부 gossip 라우터를 사용하여 클러스터 멤버를 검색합니다.

22.2.3. TCPPING 구성

이 절차에서는 TCPPING 프로토콜을 사용하여 정적 클러스터 멤버십 목록을 정의하는 새 Cryostat 스택을 생성합니다. tcpping 스택을 생성하고 이 새 스택을 사용하도록 기본 ee 채널을 설정하는 기본 스크립트가 제공됩니다. 이 스크립트의 관리 CLI 명령은 환경에 맞게 사용자 지정해야 하며 일괄 처리로 처리됩니다.

  1. 다음 스크립트를 텍스트 편집기에 복사하여 로컬 파일 시스템에 저장합니다.

    batch
    # Add the tcpping stack
    /subsystem=jgroups/stack=tcpping:add
    /subsystem=jgroups/stack=tcpping/transport=TCP:add(socket-binding=jgroups-tcp)
    /subsystem=jgroups/stack=tcpping/protocol=TCPPING:add
    # Set the properties for the TCPPING protocol
    /subsystem=jgroups/stack=tcpping/protocol=TCPPING:write-attribute(name=properties,value={initial_hosts="HOST_A[7600],HOST_B[7600]",port_range=0,timeout=3000})
    /subsystem=jgroups/stack=tcpping/protocol=MERGE3:add
    /subsystem=jgroups/stack=tcpping/protocol=FD_SOCK:add(socket-binding=jgroups-tcp-fd)
    /subsystem=jgroups/stack=tcpping/protocol=FD:add
    /subsystem=jgroups/stack=tcpping/protocol=VERIFY_SUSPECT:add
    /subsystem=jgroups/stack=tcpping/protocol=pbcast.NAKACK2:add
    /subsystem=jgroups/stack=tcpping/protocol=UNICAST3:add
    /subsystem=jgroups/stack=tcpping/protocol=pbcast.STABLE:add
    /subsystem=jgroups/stack=tcpping/protocol=pbcast.GMS:add
    /subsystem=jgroups/stack=tcpping/protocol=MFC:add
    /subsystem=jgroups/stack=tcpping/protocol=FRAG2:add
    # Set tcpping as the stack for the ee channel
    /subsystem=jgroups/channel=ee:write-attribute(name=stack,value=tcpping)
    run-batch
    reload
    Copy to Clipboard Toggle word wrap

    정의된 프로토콜 순서가 중요합니다.

  2. 환경에 대한 스크립트를 수정합니다.

    • 관리형 도메인에서 실행 중인 경우 /subsystem=jgroups 명령 앞에 /profile=PROFILE_NAME 을 사용하여 업데이트할 프로필을 지정해야 합니다.
    • 사용자 환경에 대해 선택 사항인 TCPPING 속성을 조정합니다.

      • initial_hosts: host [PORT] 구문을 사용하여 쉼표로 구분된 호스트 목록입니다. 이 구문은 잘 알려져 있으며 초기 멤버십을 조회할 수 있습니다.
      • port_range: 필요한 경우 포트 범위를 할당할 수 있습니다. 포트 범위를 2 로 할당하고 호스트의 초기 포트가 7600 인 경우 TCPPING은 포트 7600-7602 의 호스트에 연결을 시도합니다. 포트 범위는 initial_hosts 에 지정된 각 주소에 적용됩니다.
      • timeout: 클러스터 멤버에 대한 시간 초과 값(밀리초)입니다.
  3. 스크립트 파일을 관리 CLI에 전달하여 스크립트를 실행합니다.

    $ EAP_HOME/bin/jboss-cli.sh --connect --file=/path/to/SCRIPT_NAME
    Copy to Clipboard Toggle word wrap

이제 TCPPING 스택을 사용할 수 있으며 TCP가 네트워크 통신에 사용됩니다.

22.2.4. TCPGOSSIP 구성

이 절차에서는 TCPGOSSIP 프로토콜을 사용하여 외부 gossip 라우터를 사용하여 클러스터 멤버를 검색하는 새 Cryostat 스택을 생성합니다. tcpgossip 스택을 생성하고 이 새 스택을 사용하도록 기본 ee 채널을 설정하는 기본 스크립트가 제공됩니다. 이 스크립트의 관리 CLI 명령은 환경에 맞게 사용자 지정해야 하며 일괄 처리로 처리됩니다.

  1. 다음 스크립트를 텍스트 편집기에 복사하여 로컬 파일 시스템에 저장합니다.

    batch
    # Add the tcpgossip stack
    /subsystem=jgroups/stack=tcpgossip:add
    /subsystem=jgroups/stack=tcpgossip/transport=TCP:add(socket-binding=jgroups-tcp)
    /subsystem=jgroups/stack=tcpgossip/protocol=TCPGOSSIP:add
    # Set the properties for the TCPGOSSIP protocol
    /subsystem=jgroups/stack=tcpgossip/protocol=TCPGOSSIP:write-attribute(name=properties,value={initial_hosts="HOST_A[13001]"})
    /subsystem=jgroups/stack=tcpgossip/protocol=MERGE3:add
    /subsystem=jgroups/stack=tcpgossip/protocol=FD_SOCK:add(socket-binding=jgroups-tcp-fd)
    /subsystem=jgroups/stack=tcpgossip/protocol=FD:add
    /subsystem=jgroups/stack=tcpgossip/protocol=VERIFY_SUSPECT:add
    /subsystem=jgroups/stack=tcpgossip/protocol=pbcast.NAKACK2:add
    /subsystem=jgroups/stack=tcpgossip/protocol=UNICAST3:add
    /subsystem=jgroups/stack=tcpgossip/protocol=pbcast.STABLE:add
    /subsystem=jgroups/stack=tcpgossip/protocol=pbcast.GMS:add
    /subsystem=jgroups/stack=tcpgossip/protocol=MFC:add
    /subsystem=jgroups/stack=tcpgossip/protocol=FRAG2:add
    # Set tcpgossip as the stack for the ee channel
    /subsystem=jgroups/channel=ee:write-attribute(name=stack,value=tcpgossip)
    run-batch
    reload
    Copy to Clipboard Toggle word wrap

    정의된 프로토콜 순서가 중요합니다.

  2. 환경에 대한 스크립트를 수정합니다.

    • 관리형 도메인에서 실행 중인 경우 /subsystem=jgroups 명령 앞에 /profile=PROFILE_NAME 을 사용하여 업데이트할 프로필을 지정해야 합니다.
    • 환경에 대해 선택 사항인 TCPGOSSIP 속성을 조정합니다.

      • initial_hosts: host [PORT] 구문을 사용하여 쉼표로 구분된 호스트 목록입니다. 이 구문은 잘 알려져 있으며 초기 멤버십을 조회할 수 있습니다.
      • reconnect_interval: 연결이 끊긴 스텁이 gossip 라우터에 다시 연결하려고 시도하는 간격(밀리초)입니다.
      • sock_conn_timeout: 소켓 생성의 최대 시간입니다. 기본값은 1000 밀리초입니다.
      • sock_read_timeout: 읽기를 차단할 최대 시간(밀리초)입니다. 값이 0 이면 무기한 차단됩니다.
  3. 스크립트 파일을 관리 CLI에 전달하여 스크립트를 실행합니다.

    $ EAP_HOME/bin/jboss-cli.sh --connect --file=/path/to/SCRIPT_NAME
    Copy to Clipboard Toggle word wrap

TCPGOSSIP 스택을 사용할 수 있으며 TCP는 네트워크 통신에 사용됩니다. 이 스택은 gossip 라우터와 함께 사용하도록 구성되어 있어 Cryostat 클러스터 멤버가 다른 클러스터 멤버를 찾을 수 있습니다.

22.2.5. 네트워크 인터페이스에 Cryostat 바인딩

기본적으로 Cryostat는 기본 구성에서 localhost를 가리키는 프라이빗 네트워크 인터페이스에만 바인딩됩니다. 보안상의 이유로, Cryostat는 JBoss EAP 시작 중에 지정된 -b 인수에 의해 정의된 네트워크 인터페이스에 바인딩되지 않습니다. 클러스터링 트래픽은 공용 네트워크 인터페이스에 노출되지 않아야 합니다.

네트워크 인터페이스 구성 방법에 대한 자세한 내용은 이 가이드의 네트워크 및 포트 구성 장을 참조하십시오.

중요

보안상의 이유로 Cryostat는 공용이 아닌 네트워크 인터페이스에만 바인딩해야 합니다. 성능상의 이유로 Cryostat 트래픽의 네트워크 인터페이스는 전용 VLAN(Virtual Local Area Network)의 일부여야 합니다.

22.2.6. 클러스터 보안

클러스터를 안전하게 실행하기 위해 해결해야 할 몇 가지 문제가 있습니다.

  • 권한이 없는 노드가 클러스터에 참여하지 못하도록 합니다. 이 문제는 인증이 필요하므로 처리됩니다.
  • 멤버가 클러스터 멤버와 통신하지 못하도록 합니다. 이 문제는 메시지를 암호화 하여 처리됩니다.
인증 구성

Cryostat 인증은 AUTH 프로토콜에 의해 수행됩니다. 이는 인증된 노드만 클러스터에 참여할 수 있도록 하는 것입니다.

해당 서버 구성 파일에서 적절한 속성 설정으로 AUTH 프로토콜을 추가합니다. AUTH 프로토콜은 pbcast.GMS 프로토콜 바로 전에 구성해야 합니다.

<subsystem xmlns="urn:jboss:domain:jgroups:4.0">
  <stacks>
    <stack name="udp">
      <transport type="UDP" socket-binding="jgroups-udp"/>
      <protocol type="PING"/>
      <protocol type="MERGE3"/>
      <protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/>
      <protocol type="FD_ALL"/>
      <protocol type="VERIFY_SUSPECT"/>
      <protocol type="pbcast.NAKACK2"/>
      <protocol type="UNICAST3"/>
      <protocol type="pbcast.STABLE"/>
      <protocol type="AUTH">
        <property name="auth_class">org.jgroups.auth.MD5Token</property>
        <property name="auth_value">mytoken</property> <!-- Change this password -->
        <property name="token_hash">MD5</property>
      </protocol>
      <protocol type="pbcast.GMS"/>
      <protocol type="UFC"/>
      <protocol type="MFC"/>
      <protocol type="FRAG2"/>
    </stack>
  </stacks>
</subsystem>
Copy to Clipboard Toggle word wrap
암호화 구성

메시지를 암호화하기 위해 Cryostat는 클러스터 멤버가 공유하는 시크릿 키를 사용합니다. 발신자는 공유 비밀 키를 사용하여 메시지를 암호화하고 수신자는 동일한 비밀 키를 사용하여 메시지를 해독합니다. SYM_ENCRYPT 프로토콜을 사용하여 구성된 대칭 암호화 에서 노드는 공유 키 저장소를 사용하여 시크릿 키를 검색합니다. ASYM_ENCRYPT 프로토콜을 사용하여 구성된 비대칭 암호화 에서 노드는 AUTH 를 사용하여 인증한 후 클러스터의 코디네이터에서 시크릿 키를 검색합니다.

중요

SYM_ENCRYPTASYM_ENCRYPT 프로토콜에 액세스하려면 Red Hat JBoss Enterprise Application Platform 7.0 Update 01 또는 최신 누적 패치를 JBoss EAP 설치에 적용해야 합니다.

누적 패치 적용에 대한 자세한 내용은 JBoss EAP 패치 패치 및 업그레이드 가이드를 참조하십시오.

Symmetric Encryption 사용

SYM_ENCRYPT 를 사용하려면 각 노드의 Cryostat 구성에서 참조될 키 저장소를 설정해야 합니다.

  1. 키 저장소를 생성합니다.

    다음 명령에서 VERSION 을 적절한 Cryostat JAR 버전으로 바꾸고 PASSWORD 를 키 저장소 암호로 바꿉니다.

    $ java -cp EAP_HOME/modules/system/layers/base/org/jgroups/main/jgroups-VERSION.jar org.jgroups.demos.KeyStoreGenerator --alg AES --size 128 --storeName defaultStore.keystore --storepass PASSWORD --alias mykey
    Copy to Clipboard Toggle word wrap

    그러면 Cryostat 구성에서 참조될 defaultStore.keystore 파일이 생성됩니다.

  2. jgroups 하위 시스템에서 SYM_ENCRYPT 프로토콜을 구성합니다.

    해당 서버 구성 파일에서 적절한 속성 설정으로 SYM_ENCRYPT 프로토콜을 추가합니다. SYM_ENCRYPT 프로토콜은 pbcast.NAKACK2 프로토콜 바로 전에 구성해야 합니다.

    <subsystem xmlns="urn:jboss:domain:jgroups:4.0">
      <stacks>
        <stack name="udp">
          <transport type="UDP" socket-binding="jgroups-udp"/>
          <protocol type="PING"/>
          <protocol type="MERGE3"/>
          <protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/>
          <protocol type="FD_ALL"/>
          <protocol type="VERIFY_SUSPECT"/>
          <protocol type="SYM_ENCRYPT">
            <property name="provider">SunJCE</property>
            <property name="sym_algorithm">AES</property>
            <property name="encrypt_entire_message">true</property>
            <property name="keystore_name">/path/to/defaultStore.keystore</property>
            <property name="store_password">PASSWORD</property>
            <property name="alias">mykey</property>
          </protocol>
          <protocol type="pbcast.NAKACK2"/>
          <protocol type="UNICAST3"/>
          <protocol type="pbcast.STABLE"/>
          <protocol type="pbcast.GMS"/>
          <protocol type="UFC"/>
          <protocol type="MFC"/>
          <protocol type="FRAG2"/>
        </stack>
      </stacks>
    </subsystem>
    Copy to Clipboard Toggle word wrap
참고

SYM_ENCRYPT 를 사용하는 경우 AUTH 를 구성하는 것은 선택 사항입니다.

Asymmetric Encryption 사용
  1. jgroups 하위 시스템에서 ASYM_ENCRYPT 프로토콜을 구성합니다.

    해당 서버 구성 파일에서 적절한 속성 설정으로 ASYM_ENCRYPT 프로토콜을 추가합니다. ASYM_ENCRYPT 프로토콜은 pbcast.NAKACK2 프로토콜 바로 전에 구성해야 합니다.

    <subsystem xmlns="urn:jboss:domain:jgroups:4.0">
      <stacks>
        <stack name="udp">
          <transport type="UDP" socket-binding="jgroups-udp"/>
          <protocol type="PING"/>
          <protocol type="MERGE3"/>
          <protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/>
          <protocol type="FD_ALL"/>
          <protocol type="VERIFY_SUSPECT"/>
          <protocol type="ASYM_ENCRYPT">
            <property name="encrypt_entire_message">true</property>
            <property name="sym_keylength">128</property>
            <property name="sym_algorithm">AES/ECB/PKCS5Padding</property>
            <property name="asym_keylength">512</property>
            <property name="asym_algorithm">RSA</property>
          </protocol>
          <protocol type="pbcast.NAKACK2"/>
          <protocol type="UNICAST3"/>
          <protocol type="pbcast.STABLE"/>
          <!-- Configure AUTH protocol here -->
          <protocol type="pbcast.GMS"/>
          <protocol type="UFC"/>
          <protocol type="MFC"/>
          <protocol type="FRAG2"/>
        </stack>
      </stacks>
    </subsystem>
    Copy to Clipboard Toggle word wrap
  2. jgroups 하위 시스템에서 AUTH 프로토콜을 구성합니다.

    AUTHASYM_ENCRYPT 에 필요합니다. 자세한 내용은 인증 구성 섹션을 참조하십시오.

22.2.7. Cryostat 스레드 풀 구성

jgroups 하위 시스템에는 기본,internal,oobtimer 스레드 풀이 포함되어 있습니다. 이러한 풀은 모든 Cryostat 스택에 대해 구성할 수 있습니다.

다음 표에는 각 스레드 풀에 구성할 수 있는 특성과 각각에 대한 기본값이 나열되어 있습니다.

Expand
스레드 풀 이름keepalive-timemax-threadsmin-threadsqueue-length

default

60000L

300

20

100

internal

60000L

4

2

100

cnfB

60000L

300

20

0

타이머

5000L

4

2

500

다음 구문을 사용하여 관리 CLI를 사용하여 Cryostat 스레드 풀을 구성합니다.

/subsystem=jgroups/stack=STACK_TYPE/transport=TRANSPORT_TYPE/thread-pool=THREAD_POOL_NAME:write-attribute(name=ATTRIBUTE_NAME, value=ATTRIBUTE_VALUE)
Copy to Clipboard Toggle word wrap

다음은 udp 스택의 기본 스레드 풀에서 max-threads 값을 500 으로 설정하는 관리 CLI 명령의 예입니다.

/subsystem=jgroups/stack=udp/transport=UDP/thread-pool=default:write-attribute(name="max-threads", value="500")
Copy to Clipboard Toggle word wrap

22.2.8. Cryostat Send 및 Receive Buffers 구성

버퍼 크기 경고 해결

기본적으로 Cryostat는 특정 전송 및 수신 버퍼 값으로 구성됩니다. 그러나 운영 체제는 사용 가능한 버퍼 크기를 제한할 수 있으며 JBoss EAP는 구성된 버퍼 값을 사용하지 못할 수 있습니다. 이 경우 다음과 유사한 JBoss EAP 로그에 경고가 표시됩니다.

WARNING [org.jgroups.protocols.UDP] (ServerService Thread Pool -- 68)
JGRP000015: the send buffer of socket DatagramSocket was set to 640KB, but the OS only allocated 212.99KB.
This might lead to performance problems. Please set your max send buffer in the OS correctly (e.g. net.core.wmem_max on Linux)
WARNING [org.jgroups.protocols.UDP] (ServerService Thread Pool -- 68)
JGRP000015: the receive buffer of socket DatagramSocket was set to 20MB, but the OS only allocated 212.99KB.
This might lead to performance problems. Please set your max receive buffer in the OS correctly (e.g. net.core.rmem_max on Linux)
Copy to Clipboard Toggle word wrap

이 문제를 해결하려면 버퍼 크기를 늘리는 방법에 대한 지침은 운영 체제 설명서를 참조하십시오. Red Hat Enterprise Linux 시스템의 경우 root 사용자로 /etc/sysctl.conf 를 편집하여 시스템을 다시 시작할 수 있는 버퍼 크기에 대한 최대 값을 구성합니다. 예를 들면 다음과 같습니다.

# Allow a 25MB UDP receive buffer for JGroups
net.core.rmem_max = 26214400
# Allow a 1MB UDP send buffer for JGroups
net.core.wmem_max = 1048576
Copy to Clipboard Toggle word wrap

/etc/sysctl.conf 를 수정한 후 sysctl -p 를 실행하여 변경 사항을 적용합니다.

Cryostat 버퍼 크기 구성

UDP 및 TCP Cryostat 스택에서 다음 전송 속성을 설정하여 JBoss EAP에서 사용하는 Cryostat 버퍼 크기를 구성할 수 있습니다.

UDP 스택
  • ucast_recv_buf_size
  • ucast_send_buf_size
  • mcast_recv_buf_size
  • mcast_send_buf_size
TCP 스택
  • recv_buf_size
  • send_buf_size

Cryostat 버퍼 크기는 관리 콘솔 또는 관리 CLI를 사용하여 구성할 수 있습니다.

다음 구문을 사용하여 관리 CLI를 사용하여 Cryostat 버퍼 크기 속성을 설정합니다.

/subsystem=jgroups/stack=STACK_NAME/transport=TRANSPORT/property=PROPERTY_NAME:add(value=BUFFER_SIZE)
Copy to Clipboard Toggle word wrap

다음은 tcp 스택에서 recv_buf_size 속성을 20000000 으로 설정하는 관리 CLI 명령 예제입니다.

/subsystem=jgroups/stack=tcp/transport=TRANSPORT/property=recv_buf_size:add(value=20000000)
Copy to Clipboard Toggle word wrap

Cryostat 버퍼 크기는 구성 탭에서 Cryostat 하위 시스템으로 이동하고, 관련 스택을 보고, 전송을 선택하고, 전송 속성 탭을 선택하여 관리 콘솔을 사용하여 구성할 수도 있습니다.

22.2.9. Cryostat 문제 해결

22.2.9.1. 노드가 클러스터를 형성하지 않음

IP 멀티 캐스트에 대해 시스템이 올바르게 설정되었는지 확인합니다. IP 멀티캐스트를 테스트하는 데 사용할 수 있는 JBoss EAP에는 McastReceiverTestMcastSenderTest 의 두 가지 테스트 프로그램이 있습니다.

터미널에서 McastReceiverTest 를 시작합니다.

$ java -cp EAP_HOME/bin/client/jboss-client.jar org.jgroups.tests.McastReceiverTest -mcast_addr 230.11.11.11 -port 5555
Copy to Clipboard Toggle word wrap

그런 다음 다른 터미널 창에서 McastSenderTest 를 시작합니다.

$ java -cp EAP_HOME/bin/client/jboss-client.jar org.jgroups.tests.McastSenderTest -mcast_addr 230.11.11.11 -port 5555
Copy to Clipboard Toggle word wrap

특정 네트워크 인터페이스 카드(NIC)에 바인딩하려면 -bind_addr Cryostat_BIND_ADDRESS 를 사용합니다. 여기서 Cryostat _BIND_ADDRESS 는 바인딩하려는 NIC의 IP 주소입니다. 발신자와 수신자 모두에서 이 매개변수를 사용합니다.

McastSenderTest 터미널 창을 입력하면 McastReceiverTest 창에 출력이 표시됩니다. 그렇지 않은 경우 다음 단계를 시도합니다.

  • sender 명령에 -ttl VALUE 를 추가하여 멀티 캐스트 패킷의 time-to-live를 늘립니다. 이 테스트 프로그램에서 사용하는 기본값은 32 이고 VALUE255 를 초과해서는 안 됩니다.
  • 시스템에 여러 인터페이스가 있는 경우 올바른 인터페이스를 사용하고 있는지 확인합니다.
  • 시스템 관리자에게 문의하여 선택한 인터페이스에서 멀티 캐스트가 작동하는지 확인하십시오.

클러스터의 각 시스템에서 멀티 캐스트가 올바르게 작동하고 있으면 위의 테스트를 반복하여 네트워크를 테스트하여 발신자를 한 시스템에 배치하고 수신자를 다른 시스템에 배치할 수 있습니다.

22.2.9.2. 실패 탐지에서 Missing Heartbeats의 원인

하트비트 승인이 시간 초과max_tries 로 정의되는 T( T ) 동안 수신되지 않았기 때문에 클러스터 멤버가 FD(실패 탐지)로 의심되는 경우가 있습니다.

예를 들어 A Pings B, B pings C, C pings D 및 D pings A, B, C, D ping 노드 클러스터의 경우 다음과 같은 이유로 C가 의심될 수 있습니다.

  • B 또는 C는 T 초 이상 100 % CPU에서 실행됩니다. 따라서 C가 하트비트 승인을 B에 전송하더라도 B는 100 % CPU 사용량에 있기 때문에 처리하지 못할 수 있습니다.
  • B 또는 C는 가비지 수집 중이므로 위와 동일한 상황이 발생합니다.
  • 위의 두 사례의 조합입니다.
  • 네트워크가 패킷을 손실됩니다. 이 문제는 일반적으로 네트워크에 트래픽이 많이 있고 스위치가 패킷 삭제 시작, 일반적으로 먼저 브로드캐스트를 시작한 다음 IP 멀티캐스트 및 TCP 패킷이 마지막으로 수행됩니다.
  • B 또는 C는 콜백을 처리하고 있습니다. 예를 들어, C가 T + 1초를 처리하는 채널을 통해 원격 방법 호출을 수신한 경우, 이 시간 동안 C는 하트비트를 포함한 다른 메시지를 처리하지 않습니다. 따라서 B는 하트비트 승인을 받지 못하고 C를 의심할 것입니다.

22.3. Infinispan

22.3.1. Infinispan 정보

Infinispan은 캐시된 데이터를 관리하는 데 필요한 Java -107호환 캐시 인터페이스를 제공하는 Java 데이터 그리드 플랫폼입니다. Infinispan 기능 및 구성 옵션에 대한 자세한 내용은 Infinispan 문서를 참조하십시오.

infinispan 하위 시스템은 JBoss EAP에 대한 캐싱 지원을 제공합니다. 이를 통해 이름이 지정된 캐시 컨테이너 및 캐시에 대한 런타임 지표를 구성하고 볼 수 있습니다.

관리형 도메인의 ha 또는 full-ha 프로필 또는 독립 실행형 서버의 standalone-ha.xml 또는 standalone-full-ha.xml 구성 파일과 같은 고가용성 기능을 제공하는 구성을 사용하는 경우 infinispan 하위 시스템은 캐싱, 상태 복제 및 상태 배포 지원을 제공합니다. 고가용성이 아닌 구성에서 infinispan 하위 시스템은 로컬 캐싱 지원을 제공합니다.

중요

Infinispan은 JBoss EAP의 캐싱 기능을 제공하기 위해 JBoss EAP에서 프라이빗 모듈로 제공됩니다. Infinispan은 애플리케이션에서 직접 사용할 수 없습니다.

22.3.2. 캐시 컨테이너

캐시 컨테이너는 하위 시스템에서 사용하는 캐시의 리포지토리입니다. 각 캐시 컨테이너는 사용할 기본 캐시를 정의합니다.

JBoss EAP 7은 다음과 같은 기본 Infinispan 캐시 컨테이너를 정의합니다.

  • Singleton 캐싱을 위한 서버
  • 세션 클러스터링을 위한 웹
  • 상태 저장 세션 빈 클러스터링을 위한 binary
  • 엔티티 캐싱을 위한 Hibernate

예: 기본 Infinispan 구성

<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
  <cache-container name="server" aliases="singleton cluster" default-cache="default" module="org.wildfly.clustering.server">
    <transport lock-timeout="60000"/>
    <replicated-cache name="default" mode="SYNC">
      <transaction mode="BATCH"/>
    </replicated-cache>
  </cache-container>
  <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan">
    <transport lock-timeout="60000"/>
    <distributed-cache name="dist" mode="ASYNC" l1-lifespan="0" owners="2">
      <locking isolation="REPEATABLE_READ"/>
      <transaction mode="BATCH"/>
      <file-store/>
    </distributed-cache>
  </cache-container>
  <cache-container name="ejb" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan">
    <transport lock-timeout="60000"/>
    <distributed-cache name="dist" mode="ASYNC" l1-lifespan="0" owners="2">
      <locking isolation="REPEATABLE_READ"/>
      <transaction mode="BATCH"/>
      <file-store/>
    </distributed-cache>
  </cache-container>
  <cache-container name="hibernate" default-cache="local-query" module="org.hibernate.infinispan">
    <transport lock-timeout="60000"/>
    <local-cache name="local-query">
      <eviction strategy="LRU" max-entries="10000"/>
      <expiration max-idle="100000"/>
    </local-cache>
    <invalidation-cache name="entity" mode="SYNC">
      <transaction mode="NON_XA"/>
      <eviction strategy="LRU" max-entries="10000"/>
      <expiration max-idle="100000"/>
    </invalidation-cache>
    <replicated-cache name="timestamps" mode="ASYNC"/>
  </cache-container>
</subsystem>
Copy to Clipboard Toggle word wrap

각 캐시 컨테이너에 정의된 기본 캐시를 확인합니다. 예를 들어 캐시 컨테이너는 dist distributed cache를 기본값으로 정의합니다. 따라서 웹 세션을 클러스터링할 때 dist 캐시가 사용됩니다.

중요

HTTP 세션, 상태 저장 세션 빈 또는 싱글톤 서비스 또는 배포와 같은 추가 캐시 및 캐시 컨테이너를 추가할 수 있습니다. 이러한 캐시는 사용자 애플리케이션에서 직접 사용할 수 없습니다.

22.3.2.1. 캐시 컨테이너 구성

캐시 컨테이너 및 캐시 속성은 관리 콘솔 또는 관리 CLI를 사용하여 구성할 수 있습니다.

주의

구성의 다른 구성 요소가 참조할 수 있으므로 캐시 또는 캐시 컨테이너 이름을 변경하지 않아야 합니다.

관리 콘솔을 사용하여 캐시 구성

관리 콘솔의 Configuration 탭에서 Infinispan 하위 시스템으로 이동하면 캐시 및 캐시 컨테이너를 구성할 수 있습니다. 관리형 도메인에서 구성할 적절한 프로필을 선택해야 합니다.

  • 캐시 컨테이너를 추가합니다.

    캐시 컨테이너 제목 옆에 있는 추가 버튼을 클릭하고 새 캐시 컨테이너의 설정을 입력합니다.

  • 캐시 컨테이너 설정을 업데이트합니다.

    적절한 캐시 컨테이너를 선택하고 드롭다운에서 컨테이너 설정을 선택합니다. 필요에 따라 캐시 컨테이너 설정을 구성합니다.

  • 캐시 컨테이너 전송 설정을 업데이트합니다.

    적절한 캐시 컨테이너를 선택하고 드롭다운 에서 전송 설정을 선택합니다. 필요에 따라 캐시 컨테이너 전송 설정을 구성합니다.

  • 캐시 구성.

    적절한 캐시 컨테이너를 선택하고 View 를 선택합니다. 적절한 캐시 탭(예: 복제된 캐시)에서 캐시를 추가, 업데이트 및 제거할 수 있습니다.

관리 CLI를 사용하여 캐시 구성

관리 CLI를 사용하여 캐시 및 캐시 컨테이너를 구성할 수 있습니다. 관리형 도메인에서 이러한 명령 앞에 /profile=PROFILE_NAME 을 사용하여 업데이트할 프로필을 지정해야 합니다.

  • 캐시 컨테이너를 추가합니다.

    /subsystem=infinispan/cache-container=CACHE_CONTAINER:add
    Copy to Clipboard Toggle word wrap
  • 복제된 캐시를 추가합니다.

    /subsystem=infinispan/cache-container=CACHE_CONTAINER/replicated-cache=CACHE:add(mode=MODE)
    Copy to Clipboard Toggle word wrap
  • 캐시 컨테이너의 기본 캐시를 설정합니다.

    /subsystem=infinispan/cache-container=CACHE_CONTAINER:write-attribute(name=default-cache,value=CACHE)
    Copy to Clipboard Toggle word wrap
  • 복제된 캐시에 대한 일괄 처리를 구성합니다.

    /subsystem=infinispan/cache-container=CACHE_CONTAINER/replicated-cache=CACHE/component=transaction:write-attribute(name=mode,value=BATCH)
    Copy to Clipboard Toggle word wrap
기본 handler 캐시 컨테이너 변경

아래 설명된 대로 Cryostat 3 하위 시스템에서 캐시 컨테이너를 사용할 수 있습니다.

  • migration 세션 빈의 활성화를 지원하려면 infinispan 하위 시스템에 정의된 Cryostat 캐시 컨테이너를 사용하여 세션을 저장할 수 있습니다.
  • 서버에서 클러스터형 배포에 연결하는 원격 migration 클라이언트의 경우 상호 작용하는 노드가 실패하는 경우 클러스터 토폴로지 정보를 이러한 클라이언트에 제공해야 클러스터의 다른 노드로 장애 조치될 수 있습니다.

아래 예제와 같이 전달 및 토폴로지 정보 프로비저닝을 지원하는 기본 캐시 컨테이너를 변경하거나 이름을 변경하는 경우 cache-container 특성을 passivation-stores 요소에 추가하고 cluster 속성을 원격 요소에 추가해야 합니다. 자체 사용을 위해 새 캐시를 추가하는 경우 이러한 변경을 수행할 필요가 없습니다.

<subsystem xmlns="urn:jboss:domain:ejb3:4.0">
    <passivation-stores>
        <passivation-store name="infinispan" cache-container="ejb-cltest" max-size="10000"/>
    </passivation-stores>

    <remote cluster="ejb-cltest" connector-ref="http-remoting-connector" thread-pool-name="default"/>
</subsystem>

<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
    ...
    <cache-container name="ejb-cltest" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan">
</subsystem>
Copy to Clipboard Toggle word wrap

22.3.3. 클러스터링 모드

클러스터링은 Infinispan을 사용하여 JBoss EAP에서 두 가지 방법으로 구성할 수 있습니다. 애플리케이션에 가장 적합한 방법은 요구 사항에 따라 다릅니다. 각 모드에서는 가용성, 일관성, 안정성 및 확장성 간에 절충이 있습니다. 클러스터링 모드를 선택하기 전에 네트워크에서 가장 중요한 기능을 식별하고 이러한 요구 사항을 균형 있게 조정해야 합니다.

캐시 모드
복제됨
복제 모드에서는 클러스터에서 새 인스턴스를 자동으로 감지하고 추가합니다. 이러한 인스턴스에 대한 변경 사항은 클러스터의 모든 노드에 복제됩니다. 복제 모드는 네트워크를 통해 복제해야 하는 정보의 양 때문에 일반적으로 소규모 클러스터에서 가장 잘 작동합니다. Infinispan은 UDP 멀티 캐스트를 사용하도록 구성할 수 있으므로 네트워크 트래픽 혼잡을 어느 정도 완화합니다.
분산

분산 모드를 사용하면 Infinispan이 클러스터를 선형으로 확장할 수 있습니다. 분산 모드는 일관된 해시 알고리즘을 사용하여 클러스터에서 새 노드를 배치해야 하는 위치를 결정합니다. 보관해야 하는 정보의 사본(소유자) 수를 구성할 수 있습니다. 보존된 복사본 수, 데이터의 지속성 및 성능 간의 절충이 있습니다. 유지되는 복사본이 많을수록 성능에 더 많은 영향을 미치지만 서버 장애 시 데이터가 손실될 가능성이 적습니다. 또한 해시 알고리즘은 메타데이터 멀티 캐스트 또는 저장 없이 항목을 찾아 네트워크 트래픽을 줄이기 위해 작동합니다.

클러스터 크기가 6-8 노드를 초과하면 분산 모드를 캐싱 전략으로 사용해야 합니다. 분산 모드를 사용하면 모든 노드와 달리 데이터가 클러스터 내의 노드 하위 집합에만 배포됩니다.

동기 및 비동기 복제

동기화 또는 비동기 모드에서 복제를 수행할 수 있으며 선택한 모드는 요구 사항과 애플리케이션에 따라 다릅니다.

동기 복제
동기 복제를 사용하면 사용자 요청을 처리하는 스레드가 복제에 성공할 때까지 차단됩니다. 복제에 성공하면 응답이 클라이언트로 다시 전송되고 스레드만 해제됩니다. 동기 복제는 클러스터의 각 노드의 응답이 필요하기 때문에 네트워크 트래픽에 영향을 미칩니다. 그러나 클러스터의 모든 노드에 모든 수정 사항이 적용되었는지 확인하는 이점이 있습니다.
비동기 복제
비동기 복제를 통해 Infinispan은 스레드 풀을 사용하여 백그라운드에서 복제를 수행합니다. 발신자는 클러스터의 다른 노드에서 응답을 기다리지 않습니다. 그러나 캐시 읽기는 이전 복제가 완료될 때까지 차단되므로 오래된 데이터를 읽지 않습니다. 복제는 시간에 따라 또는 큐 크기에 따라 트리거됩니다. 실패한 복제 시도는 실시간으로 알림을 받지 않고 로그에 기록됩니다.
22.3.3.1. 캐시 모드 구성

관리 CLI를 사용하여 기본 캐시를 변경할 수 있습니다.

참고

이 섹션에서는 기본적으로 분산 모드인 웹 세션 캐시 구성 관련 지침을 보여줍니다. 단계 및 관리 CLI 명령은 다른 캐시 컨테이너에 적용되도록 쉽게 조정할 수 있습니다.

복제된 캐시 모드로 변경

웹 세션 캐시의 기본 JBoss EAP 7 구성에는 repl 복제 캐시가 포함되어 있지 않습니다. 이 캐시를 먼저 추가해야 합니다.

참고

아래 관리 CLI 명령은 독립 실행형 서버에 대한 것입니다. 관리형 도메인에서 실행하는 경우 /subsystem=infinispan 명령 앞에 /profile=PROFILE_NAME 을 추가하여 업데이트할 프로필을 지정해야 합니다.

  1. repl 복제 캐시를 추가합니다.

    /subsystem=infinispan/cache-container=web/replicated-cache=repl:add(mode=ASYNC)
    /subsystem=infinispan/cache-container=web/replicated-cache=repl/component=transaction:write-attribute(name=mode,value=BATCH)
    /subsystem=infinispan/cache-container=web/replicated-cache=repl/component=locking:write-attribute(name=isolation, value=REPEATABLE_READ)
    /subsystem=infinispan/cache-container=web/replicated-cache=repl/store=file:add
    Copy to Clipboard Toggle word wrap
  2. 기본 캐시를 repl replicated 캐시로 변경합니다.

    /subsystem=infinispan/cache-container=web:write-attribute(name=default-cache,value=repl)
    Copy to Clipboard Toggle word wrap
  3. 서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap
분산 캐시 모드로 변경

웹 세션 캐시의 기본 JBoss EAP 7 구성에는 이미 dist distributed cache가 포함되어 있습니다.

참고

아래 관리 CLI 명령은 독립 실행형 서버에 대한 것입니다. 관리형 도메인에서 실행하는 경우 /subsystem=infinispan 명령 앞에 /profile=PROFILE_NAME 을 추가하여 업데이트할 프로필을 지정해야 합니다.

  1. 기본 캐시를 dist distributed cache로 변경합니다.

    /subsystem=infinispan/cache-container=web:write-attribute(name=default-cache,value=dist)
    Copy to Clipboard Toggle word wrap
  2. 분산 캐시의 소유자 수를 설정합니다. 다음 명령은 5 명의 소유자를 설정합니다. 기본값은 2 입니다.

    /subsystem=infinispan/cache-container=web/distributed-cache=dist/:write-attribute(name=owners,value=5)
    Copy to Clipboard Toggle word wrap
  3. 서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap
22.3.3.2. 캐시 전략 성능

SYNC 캐싱 전략을 사용하는 경우 복제 비용이 복제가 완료될 때까지 요청이 완료되지 않기 때문에 응답 시간에 쉽게 측정하고 직접 확인할 수 있습니다.

ASYNC 캐싱 전략으로 SYNC 캐싱 전략보다 응답 시간이 짧아야 하지만 올바른 조건에서만 마찬가지입니다. ASYNC 캐싱 전략은 측정하기가 더 어렵지만 요청 사이의 기간이 캐시 작업을 완료하기에 충분한 기간인 경우 SYNC 전략보다 성능이 향상될 수 있습니다. 이는 복제 비용이 응답 시간에 즉시 표시되지 않기 때문입니다.

동일한 세션에 대한 요청이 너무 빨리 수행되면 이전 요청의 복제 비용이 이전 요청에서 복제가 완료될 때까지 대기해야 하므로 이후 요청 앞쪽으로 이동합니다. 응답이 수신된 직후에 후속 요청이 전송되는 빠른 실행 요청의 경우 ASYNC 캐싱 전략이 SYNC 캐싱 전략보다 성능이 저하됩니다. 결과적으로 SYNC 캐싱 전략이 실제로 A SYNC 캐싱 전략보다 더 나은 동일한 세션에 대한 요청 사이에 임계값이 있습니다. 실제 사용에서 동일한 세션에 대한 요청은 일반적으로 빠른 연속으로 수신되지 않습니다. 대신 요청 사이에 일반적으로 몇 초 이상의 시간 간격이 있습니다. 이 경우 ASYNC 캐싱 전략은 합리적인 기본값이며 가장 빠른 응답 시간을 제공합니다.

22.3.4. Infinispan Thread Pools 구성

infinispan 하위 시스템에는 async-operations,expiration,listener,persistence,remote-command,state-transfer, 전송 스레드 풀이 포함되어 있습니다. 이러한 풀은 모든 Infinispan 캐시 컨테이너에 대해 구성할 수 있습니다.

다음 표에는 infinispan 하위 시스템의 각 스레드 풀에 구성할 수 있는 특성과 각각에 대한 기본값이 나열되어 있습니다.

Expand
스레드 풀 이름keepalive-timemax-threadsmin-threadsqueue-length

async-operations

60000L

25

25

1000

만료

60000L

1

해당 없음

해당 없음

listener

60000L

1

1

100000

지속성

60000L

4

1

0

remote-command

60000L

200

1

0

state-transfer

60000L

60

1

0

전송

60000L

25

25

100000

관리 CLI를 사용하여 Infinispan 스레드 풀을 구성하려면 다음 구문을 사용합니다.

/subsystem=infinispan/cache-container=CACHE_CONTAINER_NAME/thread-pool=THREAD_POOL_NAME:write-attribute(name=ATTRIBUTE_NAME, value=ATTRIBUTE_VALUE)
Copy to Clipboard Toggle word wrap

다음은 서버 캐시 컨테이너의 지속성 스레드 풀에서 max-threads 값을 10 으로 설정하는 관리 CLI 명령의 예입니다.

/subsystem=infinispan/cache-container=server/thread-pool=persistence:write-attribute(name="max-threads", value="10")
Copy to Clipboard Toggle word wrap

22.3.5. Infinispan 통계

모니터링을 위해 Infinispan 캐시 및 캐시 컨테이너에 대한 런타임 통계를 활성화할 수 있습니다. 성능상의 이유로 통계 수집은 기본적으로 활성화되어 있지 않습니다.

각 캐시 컨테이너, 캐시 또는 둘 다에 대해 통계 컬렉션을 활성화할 수 있습니다. 각 캐시에 대한 statistics 옵션은 캐시 컨테이너의 옵션을 덮어씁니다. 캐시 컨테이너에 대한 통계 컬렉션을 활성화하거나 비활성화하면 명시적으로 지정하지 않는 한 해당 컨테이너의 모든 캐시가 설정을 상속합니다.

22.3.5.1. Infinispan 통계 활성화
주의

Infinispan 통계를 활성화하면 infinispan 하위 시스템의 성능에 부정적인 영향을 미칠 수 있습니다. 통계는 필요한 경우에만 활성화해야 합니다.

관리 콘솔 또는 관리 CLI를 사용하여 Infinispan 통계 컬렉션을 활성화하거나 비활성화할 수 있습니다. 관리 콘솔에서 Configuration 탭에서 Infinispan 하위 시스템으로 이동하여 적절한 캐시 또는 캐시 컨테이너를 선택하고 통계 활성화 속성을 편집합니다. 관리 CLI를 사용하여 통계를 활성화하려면 아래 명령을 사용합니다.

캐시 컨테이너에 대한 통계 컬렉션을 활성화합니다. 서버 다시 로드가 필요합니다.

/subsystem=infinispan/cache-container=CACHE_CONTAINER:write-attribute(name=statistics-enabled,value=true)
Copy to Clipboard Toggle word wrap

캐시에 대한 통계 컬렉션을 활성화합니다. 서버 다시 로드가 필요합니다.

/subsystem=infinispan/cache-container=CACHE_CONTAINER/CACHE_TYPE=CACHE:write-attribute(name=statistics-enabled,value=true)
Copy to Clipboard Toggle word wrap
참고

다음 명령을 사용하면 캐시 컨테이너의 statistics-enabled 속성 설정을 상속하도록 캐시의 statistics-enabled 특성을 정의할 수 있습니다.

/subsystem=infinispan/cache-container=CACHE_CONTAINER/CACHE_TYPE=CACHE:undefine-attribute(name=statistics-enabled)
Copy to Clipboard Toggle word wrap

22.3.6. Infinispan 파티션 처리

Infinispan 클러스터 는 데이터가 저장되는 여러 노드로 빌드됩니다. 여러 노드가 실패하는 경우 데이터 손실을 방지하기 위해 Infinispan은 여러 노드에 동일한 데이터를 복사합니다. 이 수준의 데이터 중복성은 owners 속성을 사용하여 구성됩니다. 구성된 노드 수보다 동시에 충돌하는 한 Infinispan에는 사용 가능한 데이터 사본이 있습니다.

그러나 클러스터에 너무 많은 노드가 사라질 때 발생할 수 있는 심각한 상황이 있습니다.

스플릿 브레인

이렇게 하면 클러스터가 독립적으로 작동하는 두 개 이상의 파티션 또는 하위 클러스터로 분할됩니다. 이러한 상황에서 여러 클라이언트가 서로 다른 파티션에서 읽고 쓰는 경우 동일한 캐시 항목의 다른 버전을 볼 수 있으므로 많은 애플리케이션에서 문제가 발생합니다.

참고

중복 네트워크 또는 IP 본딩 과 같이 분할 뇌가 발생할 가능성을 완화하는 방법이 있습니다. 그러나 이러한 문제는 발생하는 시간만 줄일 수 있습니다.

여러 노드가 순서대로 충돌
여러 노드, 특히 소유자 수를 빠른 순서로 충돌하고 Infinispan이 충돌 사이에 상태를 적절하게 재조정할 시간이 없는 경우 결과는 부분적인 데이터 손실입니다.

목표는 분할된 뇌 또는 여러 노드가 빠른 순서로 충돌하여 사용자에게 잘못된 데이터가 반환되는 상황을 방지하는 것입니다.

22.3.6.1. 분할 Brain

분할 뇌 상황에서 각 네트워크 파티션은 고유한 Cryostat 보기를 설치하고 다른 파티션에서 노드를 제거합니다. 파티션이 서로를 인식하지 못하기 때문에 클러스터가 두 개 이상의 파티션으로 분할되었는지 여부를 직접 확인할 수 없습니다. 대신 명시적 휴가 메시지를 보내지 않고 하나 이상의 노드가 Cryostat 클러스터에서 사라질 때 클러스터가 분할되었다고 가정합니다.

파티션 처리가 비활성화되면 이러한 각 파티션이 독립적인 클러스터로 계속 작동합니다. 각 파티션은 데이터의 일부만 볼 수 있으며 각 파티션은 캐시에서 충돌하는 업데이트를 작성할 수 있습니다.

파티션 처리가 활성화된 상태에서 분할을 감지하면 각 파티션이 즉시 리밸런싱을 시작하지 않지만 먼저 성능이 저하된 모드로 전환해야 하는지 여부를 확인합니다.

  • 하나 이상의 세그먼트가 모든 소유자를 손실한 경우, 마지막으로 리밸런스가 종료된 이후 지정된 소유자 수가 남아 있는 경우 파티션은 성능이 저하된 모드로 전환됩니다.
  • 파티션에 최신 안정된 토폴로지 에서도 대부분의 노드(floor(numNodes/2) + 1)가 포함되어 있지 않은 경우 파티션도 성능 저하 모드로 전환됩니다.
  • 그렇지 않으면 파티션이 정상적으로 작동하고 리밸런스를 시작합니다.

stable 토폴로지 는 리밸런스 작업이 종료될 때마다 업데이트되고 코디네이터는 다른 리밸런스가 필요하지 않다고 결정합니다. 이러한 규칙은 하나의 파티션이 사용 가능한 모드로 남아 있고 다른 파티션은 성능이 저하된 모드로 유지됩니다.

파티션이 성능 저하 모드인 경우 다음과 같이 설정된 키에 대한 액세스 권한만 허용합니다.

  • 이 파티션 내의 노드의 모든 복사본이 있는 항목에 대한 요청(읽기 및 쓰기)이 적용됩니다.
  • 오류가 발생한 노드에서 부분적으로 또는 완전히 소유한 항목에 대한 요청은 AvailabilityException 과 함께 거부됩니다.

이렇게 하면 파티션에서 동일한 키(캐시가 일관됨)에 대해 다른 값을 쓸 수 없으며 하나의 파티션에서 다른 파티션에서 업데이트된 키를 읽을 수 없습니다(비효한 데이터 없음).

참고

두 개의 파티션이 격리된 상태로 시작될 수 있으며 병합하지 않는 한 일관성 없는 데이터를 읽고 쓸 수 있습니다. 나중에 사용자 정의 가용성 전략(예: 특정 노드가 클러스터의 일부인지 확인)을 허용하거나 이러한 상황을 처리할 수 있는 외부 시스템에 액세스할 수 있는지 확인할 수 있습니다.

22.3.6.2. 파티션 처리 구성

현재 파티션 처리는 기본적으로 비활성화되어 있습니다. 다음 관리 CLI 명령을 사용하여 파티션 처리를 활성화합니다.

/subsystem=infinispan/cache-container=web/distributed-cache=dist/component=partition-handling:write-attribute(name=enabled, value=true)
Copy to Clipboard Toggle word wrap

22.3.7. JBoss Data Grid에 HTTP 세션 외부화

참고

이 기능을 사용하려면 Red Hat JBoss Data Grid 서브스크립션이 필요합니다.

Red Hat JBoss Data Grid는 HTTP 세션과 같은 JBoss EAP의 애플리케이션 관련 데이터에 대한 외부 캐시 컨테이너로 사용할 수 있습니다. 이를 통해 애플리케이션과 독립적으로 데이터 계층을 확장할 수 있으며 다양한 도메인에 있을 수 있는 다양한 JBoss EAP 클러스터를 활성화하여 동일한 JBoss Data Grid 클러스터의 데이터에 액세스할 수 있습니다. 또한 다른 애플리케이션은 Red Hat JBoss Data Grid에서 제공하는 캐시와 상호 작용할 수 있습니다.

다음 예제에서는 HTTP 세션을 외부화하는 방법을 보여줍니다. JBoss EAP의 독립 실행형 인스턴스 및 관리형 도메인에 모두 적용됩니다. 그러나 관리형 도메인에서 각 서버 그룹에는 고유한 원격 캐시가 구성되어 있어야 합니다. 여러 서버 그룹이 동일한 Red Hat JBoss Data Grid 클러스터를 사용할 수 있지만 각 원격 캐시는 JBoss EAP 서버 그룹에 고유합니다.

참고

배포 가능한 각 애플리케이션에 대해 완전히 새 캐시를 생성해야 합니다. 기존 캐시 컨테이너에서 생성할 수 있습니다(예: web).

HTTP 세션을 외부화하려면 다음을 수행합니다.

  1. socket-binding-group 에 네트워킹 정보를 추가하여 원격 Red Hat JBoss Data Grid 서버의 위치를 정의합니다.

    원격 소켓 바인딩 추가 예

    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-jdg-server1:add(host=JDGHostName1, port=11222)
    
    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-jdg-server2:add(host=JDGHostName2, port=11222)
    Copy to Clipboard Toggle word wrap

    결과 XML

    <socket-binding-group name="standard-sockets" ... >
      ...
      <outbound-socket-binding name="remote-jdg-server1">
        <remote-destination host="JDGHostName1" port="11222"/>
      </outbound-socket-binding>
      <outbound-socket-binding name="remote-jdg-server2">
        <remote-destination host="JDGHostName2" port="11222"/>
      </outbound-socket-binding>
    </socket-binding-group>
    Copy to Clipboard Toggle word wrap

    참고

    각 Red Hat JBoss Data Grid 서버에 대해 구성된 원격 소켓 바인딩이 필요합니다.

  2. 원격 캐시 컨테이너가 JBoss EAP의 infinispan 하위 시스템에 정의되어 있는지 확인합니다. remote-store 요소의 cache 속성 아래 예제에서는 원격 JBoss Data Grid 서버에서 캐시 이름을 정의합니다.

    관리형 도메인에서 실행 중인 경우 이러한 명령 앞에 /profile=PROFILE_NAME.

    원격 캐시 컨테이너 추가 예

    /subsystem=infinispan/cache-container=web/invalidation-cache=jdg:add(mode=SYNC)
    
    /subsystem=infinispan/cache-container=web/invalidation-cache=jdg/component=locking:write-attribute(name=isolation,value=REPEATABLE_READ)
    
    /subsystem=infinispan/cache-container=web/invalidation-cache=jdg/component=transaction:write-attribute(name=mode,value=BATCH)
    
    /subsystem=infinispan/cache-container=web/invalidation-cache=jdg/store=remote:add(remote-servers=["remote-jdg-server1","remote-jdg-server2"], cache=default, socket-timeout=60000, passivation=false, purge=false, shared=true)
    Copy to Clipboard Toggle word wrap

    결과 XML

    <subsystem xmlns="urn:jboss:domain:infinispan:4.0">
      ...
      <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan" statistics-enabled="true">
        <transport lock-timeout="60000"/>
        <invalidation-cache name="jdg" mode="SYNC">
          <locking isolation="REPEATABLE_READ"/>
          <transaction mode="BATCH"/>
          <remote-store cache="default" socket-timeout="60000" remote-servers="remote-jdg-server1 remote-jdg-server2" passivation="false" purge="false" shared="true"/>
        </invalidation-cache>
        ...
      </cache-container>
    </subsystem>
    Copy to Clipboard Toggle word wrap

  3. 애플리케이션의 jboss-web.xml 에 캐시 정보를 추가합니다. 다음 예에서 web 은 캐시 컨테이너의 이름이며 jdg 는 이 컨테이너에 있는 적절한 캐시의 이름입니다.

    jboss-web.xml 파일 예

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_10_0.xsd"
               version="10.0">
        <replication-config>
            <replication-granularity>SESSION</replication-granularity>
            <cache-name>web.jdg</cache-name>
        </replication-config>
    </jboss-web>
    Copy to Clipboard Toggle word wrap

22.4. JBoss EAP를 프론트 엔드 로드 밸런서로 구성

백엔드 JBoss EAP 서버에 대한 요청을 프록시하기 위해 프런트 엔드 로드 밸런서 장치로 작동하도록 JBoss EAP 및 undertow 하위 시스템을 구성할 수 있습니다. Cryostat는 비동기 IO를 사용하므로 연결을 담당하는 IO 스레드가 요청에 관련된 유일한 스레드입니다. 동일한 스레드가 백엔드 서버에 대한 연결에도 사용됩니다.

다음 프로토콜을 사용할 수 있습니다.

  • HTTP over plain text (http) HTTP/1 및 HTTP/2 (h2c) 지원

    참고

    HTTP/2는 기술 프리뷰로 만 제공됩니다.

  • HTTP/1 및 HTTP/2(h2)를 지원하여 보안 연결(https)을 통한 HTTP

    참고

    HTTP/2는 기술 프리뷰로 만 제공됩니다.

  • Cryostat (ajp)

정적 로드 밸런서 를 정의하고 구성에 백엔드 호스트를 지정하거나 mod_cluster 프론트엔드 를 사용하여 호스트를 동적으로 업데이트할 수 있습니다.

22.4.1. mod_cluster를 사용하여 Cryostat를 로드 밸런서로 구성

기본 제공 mod_cluster 프런트 엔드 로드 밸런서를 사용하여 다른 JBoss EAP 인스턴스를 로드 밸런싱할 수 있습니다.

이 절차에서는 관리형 도메인에서 실행 중이고 다음과 같이 이미 구성되어 있다고 가정합니다.

  • 로드 밸런서 역할을 하는 JBoss EAP 서버입니다.

    • 이 서버는 standard-sockets 소켓 바인딩 그룹에 바인딩된 기본 프로필을 사용합니다.
  • 백엔드 서버 역할을 하는 두 개의 JBoss EAP 서버.

    • 이러한 서버는 클러스터에서 실행 중이며 ha -sockets 소켓 바인딩 그룹에 바인딩되는 ha 프로필을 사용합니다.
  • 부하 분산할 배포 가능한 애플리케이션은 백엔드 서버에 배포됩니다.
mod_cluster 프런트 엔드 로드 밸런서 구성

아래 단계는 관리형 도메인의 부하 분산 서버이지만 독립 실행형 서버 세트에 적용되도록 조정할 수 있습니다. 환경에 맞게 관리 CLI 명령 값을 업데이트해야 합니다.

  1. mod_cluster 알림 보안 키를 설정합니다.

    광고 보안 키를 추가하면 검색 중에 로드 밸런서 및 서버가 인증할 수 있습니다.

    다음 관리 CLI 명령을 사용하여 mod_cluster에서 보안 키를 알립니다.

    /profile=ha/subsystem=modcluster/mod-cluster-config=configuration:write-attribute(name=advertise-security-key, value=mypassword)
    Copy to Clipboard Toggle word wrap
  2. mod_cluster용 멀티캐스트 주소 및 포트를 사용하여 소켓 바인딩을 생성합니다.

    로드 밸런싱을 위한 서버 검색 및 통신에 사용할 mod_cluster의 소켓 구성을 생성해야 합니다.

    다음 관리 CLI 명령을 사용하여 적절한 멀티캐스트 주소 및 포트가 구성된 modcluster 소켓 바인딩을 추가합니다.

    /socket-binding-group=standard-sockets/socket-binding=modcluster:add(multicast-port=23364, multicast-address=224.0.1.105)
    Copy to Clipboard Toggle word wrap
  3. mod_cluster 로드 밸런서를 포함합니다.

    광고 보안 키 및 소켓 바인딩을 설정한 후에는 JBoss EAP의 로드 밸런서 인스턴스에 mod_cluster 필터를 Cryostat에 추가해야 합니다.

    다음 관리 CLI 명령을 사용하여 mod_cluster 필터를 추가합니다.

    /profile=default/subsystem=undertow/configuration=filter/mod-cluster=modcluster:add(management-socket-binding=http, advertise-socket-binding=modcluster, security-key=mypassword)
    Copy to Clipboard Toggle word wrap

    다음 관리 CLI 명령을 사용하여 mod_cluster 필터를 기본 호스트에 바인딩합니다.

    /profile=default/subsystem=undertow/server=default-server/host=default-host/filter-ref=modcluster:add
    Copy to Clipboard Toggle word wrap
중요

mod_cluster에서만 사용하는 관리 및 광고 소켓 바인딩은 공용 IP 주소가 아닌 내부 네트워크에 노출되는 것이 좋습니다.

로드 밸런서 JBoss EAP 서버는 이제 두 개의 백엔드 JBoss EAP 서버를 로드 밸런싱할 수 있습니다.

22.4.2. Cryostat를 정적 로드 밸런서로 구성

Cryostat를 사용하여 정적 로드 밸런서를 구성하려면 undertow 하위 시스템에서 프록시 처리기를 구성해야 합니다. Cryostat에서 프록시 처리기를 구성하려면 정적 로드 밸런서로 사용할 JBoss EAP 인스턴스에서 다음을 수행해야 합니다.

  1. 역방향 프록시 처리기 추가
  2. 각 원격 호스트에 대한 아웃바운드 소켓 바인딩 정의
  3. 역방향 프록시 처리기에 각 원격 호스트 추가
  4. 역방향 프록시 위치 추가

다음 예제에서는 JBoss EAP 인스턴스를 정적 로드 밸런서 장치로 구성하는 방법을 보여줍니다. JBoss EAP 인스턴스는 lb.example.com 에 있으며, server1.example.comserver2.example.com 이라는 두 개의 추가 서버 간에 부하를 분산합니다. 로드 밸런서는 /app 위치로 역방향 프록시되고 Cryostat 프로토콜을 수행합니다.

  1. 역방향 프록시 처리기를 추가하려면 다음을 수행합니다.

    /subsystem=undertow/configuration=handler/reverse-proxy=my-handler:add
    Copy to Clipboard Toggle word wrap
  2. 각 원격 호스트에 대한 아웃바운드 소켓 바인딩을 정의하려면 다음을 수행합니다.

    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host1/:add(host=server1.example.com, port=8009)
    
    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host2/:add(host=server2.example.com, port=8009)
    Copy to Clipboard Toggle word wrap
  3. 역방향 프록시 처리기에 각 원격 호스트를 추가하려면 다음을 수행합니다.

    /subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host1:add(outbound-socket-binding=remote-host1, scheme=ajp, instance-id=myroute, path=/test)
    
    /subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host2:add(outbound-socket-binding=remote-host2, scheme=ajp, instance-id=myroute, path=/test)
    Copy to Clipboard Toggle word wrap
  4. 역방향 프록시 위치를 추가하려면 다음을 수행합니다.

    /subsystem=undertow/server=default-server/host=default-host/location=\/app:add(handler=my-handler)
    Copy to Clipboard Toggle word wrap

lb.example.com:8080/app 에 액세스하는 경우 server1.example.comserver2.example.com 에서 프록시된 콘텐츠가 표시됩니다.

22.5. 외부 웹 서버를 프록시 서버로 사용

JBoss EAP는 외부 웹 서버 구성에 따라 지원되는 HTTP, HTTPS 또는 Cryostat 프로토콜을 사용하여 외부 웹 서버의 요청을 수락할 수 있습니다.

각 웹 서버에 대해 지원되는 HTTP 커넥터에 대한 자세한 내용은 HTTP 커넥터 개요 를 참조하십시오. 사용할 웹 서버와 HTTP 커넥터를 결정한 후에는 커넥터 구성에 대한 적절한 섹션을 참조하십시오.

HTTP 커넥터의 지원되는 구성에 대한 최신 정보는 JBoss EAP 지원 구성을 참조하십시오.

또한 JBoss EAP가 외부 웹 서버의 요청을 수락 하도록 구성되어 있는지 확인해야 합니다.

22.5.1. HTTP 커넥터 개요

JBoss EAP는 Apache HTTP Server, Microsoft Cryostat 및 Oracle iPlanet과 같은 외부 웹 서버에 내장된 로드 밸런싱 및 클러스터링 메커니즘을 사용할 수 있습니다. JBoss EAP는 커넥터를 사용하여 웹 서버와 통신합니다. 이러한 커넥터는 JBoss EAP의 undertow 하위 시스템 내에서 구성됩니다.

웹 서버에는 HTTP 요청이 JBoss EAP 노드로 라우팅되는 방식을 제어하는 소프트웨어 모듈이 포함되어 있습니다. 이러한 각 모듈은 작동 방식과 구성 방식에 따라 다릅니다. 모듈은 여러 JBoss EAP 노드에서 작업 부하를 분산하고, 오류가 발생한 경우 또는 둘 다의 경우 작업 부하를 대체 서버로 이동하기 위해 구성됩니다.

JBoss EAP는 여러 다른 커넥터를 지원합니다. 선택한 웹 서버는 사용 중인 웹 서버와 필요한 기능에 따라 다릅니다. JBoss EAP와 호환되는 다양한 HTTP 커넥터의 지원 구성 및 기능을 비교하려면 아래 표를 참조하십시오.

참고

JBoss EAP 7을 다중 플랫폼 로드 밸런서 장치로 사용하려면 Configure Cryostat as a Load Balancer를 mod_cluster 를 사용하여 로드 밸런서로 참조하십시오.

HTTP 커넥터의 지원되는 구성에 대한 최신 정보는 JBoss EAP 지원 구성을 참조하십시오.

Expand
표 22.1. HTTP 커넥터 지원 구성
커넥터웹 서버지원되는 운영 체제지원되는 프로토콜

mod_cluster

Red Hat JBoss Core Services Apache HTTP Server, Red Hat JBoss Web Server Apache HTTP Server, JBoss EAP(Undertow)

Red Hat Enterprise Linux, Microsoft Windows Server, Oracle Solaris

HTTP, HTTPS, AJP, WebSocket

mod_jk

Red Hat JBoss Core Services Apache HTTP Server, Red Hat JBoss Web Server Apache HTTP Server

Red Hat Enterprise Linux, Microsoft Windows Server, Oracle Solaris

AJP

mod_proxy

Red Hat JBoss Core Services Apache HTTP Server, Red Hat JBoss Web Server Apache HTTP Server

Red Hat Enterprise Linux, Microsoft Windows Server, Oracle Solaris

HTTP, HTTPS, AJP

ISAPI 커넥터

Microsoft IIS

Microsoft Windows Server

AJP

NSAPI 커넥터

Oracle iPlanet Web Server

Oracle Solaris

AJP

Expand
표 22.2. HTTP 커넥터 기능
커넥터세션 지원배포 상태에 맞게 조정

mod_cluster

제공됨

제공됨 애플리케이션 배포 및 배포 취소를 감지하고 애플리케이션이 해당 서버에 배포되었는지 여부에 따라 클라이언트 요청을 서버로 보낼지 여부를 동적으로 결정합니다.

mod_jk

제공됨

아니요. 애플리케이션 상태와 관계없이 컨테이너를 사용할 수 있는 한 컨테이너에 클라이언트를 요청합니다.

mod_proxy

제공됨

아니요. 애플리케이션 상태와 관계없이 컨테이너를 사용할 수 있는 한 컨테이너에 클라이언트를 요청합니다.

ISAPI 커넥터

제공됨

아니요. 애플리케이션 상태와 관계없이 컨테이너를 사용할 수 있는 한 컨테이너에 클라이언트를 요청합니다.

NSAPI 커넥터

제공됨

아니요. 애플리케이션 상태와 관계없이 컨테이너를 사용할 수 있는 한 컨테이너에 클라이언트를 요청합니다.

22.5.2. Apache HTTP Server

독립 실행형 Apache HTTP Server 번들은 이제 Red Hat JBoss Core Services를 통해 별도의 다운로드로 제공됩니다. 이를 통해 설치 및 구성을 단순화하고 보다 일관된 업데이트 환경을 제공합니다.

22.5.2.1. Apache HTTP Server 설치

Apache HTTP Server 설치에 대한 자세한 내용은 JBoss Core Services Apache HTTP Server 설치 가이드를 참조하십시오.

22.5.3. 외부 웹 서버에서 요청 수락

올바른 프로토콜 처리기(예: Cryostat, HTTP 또는 HTTPS)가 구성된 경우 JBoss EAP는 프록시 서버에서 요청을 수락할 필요가 없습니다.

프록시 서버가 mod_jk, mod_proxy, ISAPI 또는 NSAPI를 사용하는 경우 JBoss EAP에 요청을 전송하고 JBoss EAP는 간단히 응답을 제공합니다. mod_cluster를 사용하면 JBoss EAP가 현재 부하, 애플리케이션 라이프사이클 이벤트 및 상태와 같은 정보를 프록시 서버로 전송하여 요청을 라우팅할 위치를 결정할 수 있도록 네트워크를 구성해야 합니다. mod_cluster 프록시 서버 구성에 대한 자세한 내용은 mod_cluster HTTP Connector 를 참조하십시오.

JBoss EAP 구성 업데이트

다음 절차에서는 예제의 프로토콜 및 포트를 구성하는 데 필요한 프로토콜로 바꿉니다.

  1. Cryostat의 instance-id 특성을 구성합니다.

    외부 웹 서버는 instance-id 를 사용하여 커넥터 구성에서 JBoss EAP 인스턴스를 식별합니다. 다음 관리 CLI 명령을 사용하여 Cryostat에서 instance-id 특성을 설정합니다.

    /subsystem=undertow:write-attribute(name=instance-id,value=node1)
    Copy to Clipboard Toggle word wrap

    위의 예에서 외부 웹 서버는 현재 JBoss EAP 인스턴스를 node1 로 식별합니다.

  2. 필요한 리스너를 Cryostat에 추가합니다.

    외부 웹 서버가 JBoss EAP에 연결하기 위해서는 listener가 필요합니다. 각 프로토콜은 소켓 바인딩에 연결된 자체 리스너가 필요합니다.

    참고

    원하는 프로토콜 및 포트 구성에 따라 이 단계가 필요하지 않을 수 있습니다. HTTP 리스너는 모든 기본 JBoss EAP 구성에 구성되며 ha 또는 full-ha 프로필을 사용하는 경우 Cryostat 리스너가 구성됩니다.

    기본 서버 구성을 읽고 필요한 리스너가 이미 구성되어 있는지 확인할 수 있습니다.

    /subsystem=undertow/server=default-server:read-resource
    Copy to Clipboard Toggle word wrap

    listening에 리스너를 추가하려면 소켓 바인딩이 있어야 합니다. 소켓 바인딩은 서버 또는 서버 그룹에서 사용하는 소켓 바인딩 그룹에 추가됩니다. 다음 관리 CLI 명령은 포트 8009 에 바인딩된 ajp 소켓 바인딩을 standard-sockets 소켓 바인딩 그룹에 추가합니다.

    /socket-binding-group=standard-sockets/socket-binding=ajp:add(port=8009)
    Copy to Clipboard Toggle word wrap

    다음 관리 CLI 명령은 ajp 소켓 바인딩을 사용하여 ajp 리스너를 Cryostat 에 추가합니다.

    /subsystem=undertow/server=default-server/ajp-listener=ajp:add(socket-binding=ajp)
    Copy to Clipboard Toggle word wrap

22.6. mod_cluster HTTP 커넥터

mod_cluster 커넥터는 Apache HTTP 서버 기반 로드 밸런서입니다. 통신 채널을 사용하여 Apache HTTP Server에서 애플리케이션 서버 노드 세트 중 하나로 요청을 전달합니다.

mod_cluster 커넥터는 다른 커넥터보다 몇 가지 이점이 있습니다.

  • mod_cluster 관리 프로토콜(MCMP)은 mod_cluster 모듈이 활성화된 JBoss EAP 서버와 Apache HTTP 서버 간의 추가 연결입니다. JBoss EAP 서버는 사용자 지정 HTTP 메서드 세트를 통해 서버 측 부하 분산 요인 및 라이프사이클 이벤트를 다시 Apache HTTP 서버로 전송하는 데 사용됩니다.
  • mod_cluster를 사용한 Apache HTTP Server의 동적 구성을 사용하면 JBoss EAP 서버가 수동 구성 없이 부하 분산 배열에 참여할 수 있습니다.
  • JBoss EAP는 mod_cluster에서 Apache HTTP Server를 사용하는 대신 부하 분산 요소 계산을 수행합니다. 이렇게 하면 로드 밸런싱 메트릭이 다른 커넥터보다 더 정확합니다.
  • mod_cluster 커넥터는 세분화된 애플리케이션 라이프사이클 제어를 제공합니다. 각 JBoss EAP 서버는 웹 애플리케이션 컨텍스트 라이프사이클 이벤트를 Apache HTTP Server에 전달하여 지정된 컨텍스트의 라우팅 요청을 시작하거나 중지하도록 알립니다. 이렇게 하면 사용할 수 없는 리소스로 인해 최종 사용자가 HTTP 오류가 표시되지 않습니다.
  • Cryostat, HTTP 또는 HTTPS 전송을 사용할 수 있습니다.

modcluster 하위 시스템의 특정 구성 옵션에 대한 자세한 내용은 ModCluster Cryostat 특성을 참조하십시오.

22.6.1. Apache HTTP Server에서 mod_cluster 구성

mod_cluster 모듈은 JBoss Core Services Apache HTTP Server를 설치하거나 JBoss Web Server를 사용할 때 이미 포함되어 있으며 기본적으로 로드됩니다.

참고

Apache HTTP Server는 더 이상 JBoss Web Server 버전 3.1.0과 함께 배포되지 않습니다.

환경에 맞게 mod_cluster 모듈을 구성하려면 아래 단계를 참조하십시오.

참고

Red Hat 고객은 Red Hat 고객 포털에서 로드 밸런서 구성 툴 을 사용하여 mod_cluster 및 기타 커넥터를 위한 최적의 구성 템플릿을 빠르게 생성할 수 있습니다. 이 도구에 액세스하려면 로그인해야 합니다.

mod_cluster 구성

Apache HTTP Server에는 이미 mod_cluster 모듈을 로드하고 기본 구성을 제공하는 mod_cluster 구성 파일인 mod_cluster가 포함되어 있습니다. 아래에 표시된 이 파일의 IP 주소, 포트 및 기타 설정은 필요에 맞게 구성할 수 있습니다.

# mod_proxy_balancer should be disabled when mod_cluster is used
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule cluster_slotmem_module modules/mod_cluster_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule advertise_module modules/mod_advertise.so

MemManagerFile cache/mod_cluster

<IfModule manager_module>
  Listen 6666
  <VirtualHost *:6666>
    <Directory />
      Require ip 127.0.0.1
    </Directory>
    ServerAdvertise on
    EnableMCPMReceive
    <Location /mod_cluster_manager>
      SetHandler mod_cluster-manager
      Require ip 127.0.0.1
   </Location>
  </VirtualHost>
</IfModule>
Copy to Clipboard Toggle word wrap

Apache HTTP Server 서버는 로드 밸런서로 구성되며 JBoss EAP에서 실행되는 modcluster 하위 시스템에서 작업할 수 있습니다. JBoss EAP에서 mod_cluster를 인식하도록 mod_cluster 작업자 노드를 구성해야 합니다.

mod_cluster에 대한 광고를 비활성화하고 대신 정적 프록시 목록을 구성하려면 mod_cluster의 알림 비활성화를 참조하십시오. Apache HTTP Server에서 사용 가능한 mod_cluster 구성 옵션에 대한 자세한 내용은 Apache HTTP Server mod_cluster guides를 참조하십시오.

mod_cluster 구성에 대한 자세한 내용은 JBoss Web Server HTTP Connectors 및 Load Balancing Guide의 Apache HTTP Server 및 mod_cluster를 사용하여 부하 분산 구성 섹션을 참조하십시오.

22.6.2. mod_cluster에 대한 광고 비활성화

기본적으로 modcluster 하위 시스템의 밸런서는 멀티캐스트 UDP를 사용하여 백그라운드 작업자에게 가용성을 알립니다. 다음 절차를 사용하여 광고를 비활성화하고 대신 프록시 목록을 사용할 수 있습니다.

참고

다음 절차의 관리 CLI 명령은 관리형 도메인에서 full-ha 프로필을 사용한다고 가정합니다. full-ha 이외의 프로필을 사용하는 경우 명령에 적절한 프로필 이름을 사용합니다. 독립 실행형 서버를 실행 중인 경우 /profile=full-ha 를 완전히 제거하십시오.

  1. Apache HTTP Server 구성을 수정합니다.

    httpd.conf Apache HTTP Server 구성 파일을 편집합니다. EnableMCPMReceive 지시문을 사용하여 MCPM 요청을 수신 대기하는 가상 호스트를 다음 업데이트를 수행합니다.

    1. 서버 알림을 비활성화하려면 지시문을 추가합니다.

      서버 알림을 비활성화하려면 ServerAdvertise 지시문을 Off 로 설정합니다.

      ServerAdvertise Off
      Copy to Clipboard Toggle word wrap
    2. 광고 빈도를 비활성화합니다.

      구성에서 AdvertiseFrequency 매개변수를 지정하는 경우 # 문자를 사용하여 주석을 답니다.

      # AdvertiseFrequency 5
      Copy to Clipboard Toggle word wrap
    3. MCPM 메시지를 수신하는 기능을 활성화합니다.

      EnableMCPMReceive 지시문이 있는지 확인하여 웹 서버가 작업자 노드에서 MCPM 메시지를 수신할 수 있도록 합니다.

      EnableMCPMReceive
      Copy to Clipboard Toggle word wrap
  2. JBoss EAP modcluster 하위 시스템에서 알림을 비활성화합니다.

    다음 관리 CLI 명령을 사용하여 광고를 비활성화합니다.

    /profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=advertise,value=false)
    Copy to Clipboard Toggle word wrap
    중요

    프록시 목록을 제공하기 위해 다음 단계를 계속해야 합니다. 프록시 목록이 비어 있으면 광고가 비활성화되지 않습니다.

  3. JBoss EAP modcluster 하위 시스템에서 프록시 목록을 제공합니다.

    modcluster 하위 시스템에서 광고가 비활성화된 경우 프록시를 자동으로 검색할 수 없으므로 프록시 목록을 제공해야 합니다.

    먼저 적절한 소켓 바인딩 그룹에 아웃바운드 소켓 바인딩을 정의합니다.

    /socket-binding-group=full-ha-sockets/remote-destination-outbound-socket-binding=proxy1:add(host=10.33.144.3,port=6666)
    /socket-binding-group=full-ha-sockets/remote-destination-outbound-socket-binding=proxy2:add(host=10.33.144.1,port=6666)
    Copy to Clipboard Toggle word wrap

    다음으로 프록시를 mod_cluster 구성에 추가합니다.

    /profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration:list-add(name=proxies,value=proxy1)
    /profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration:list-add(name=proxies,value=proxy2)
    Copy to Clipboard Toggle word wrap

Apache HTTP Server 밸런서는 더 이상 작업자 노드에 대한 존재를 알리지 않으며 UDP 멀티캐스트는 더 이상 사용되지 않습니다.

22.6.3. mod_cluster 작업자 노드 구성

mod_cluster 작업자 노드는 JBoss EAP 서버로 구성됩니다. 이 서버는 독립 실행형 서버이거나 관리형 도메인의 서버 그룹의 일부일 수 있습니다. 별도의 프로세스는 클러스터의 모든 작업자 노드를 관리하는 JBoss EAP 내에서 실행됩니다. 이를 마스터라고 합니다.

관리형 도메인의 작업자 노드는 서버 그룹에서 동일한 구성을 공유합니다. 독립 실행형 서버로 실행되는 작업자 노드는 개별적으로 구성됩니다. 구성 단계는 그렇지 않으면 동일합니다.

  • 독립 실행형 서버는 standalone-ha 또는 standalone-full-ha 프로필을 사용하여 시작해야 합니다.
  • 관리형 도메인의 서버 그룹은 ha 또는 full-ha 프로필과 ha-sockets 또는 full-ha-sockets 소켓 바인딩 그룹을 사용해야 합니다. JBoss EAP에는 이러한 요구 사항을 충족하는 other-server-group이라는 클러스터 사용 서버 그룹이 포함되어 있습니다.
작업자 노드 구성

이 절차의 관리 CLI 명령은 full-ha 프로필로 관리형 도메인을 사용한다고 가정합니다. 독립 실행형 서버를 실행 중인 경우 명령의 /profile=full-ha 부분을 제거합니다.

  1. 네트워크 인터페이스를 구성합니다.

    기본적으로 네트워크 인터페이스의 기본값은 127.0.0.1 입니다. 독립 실행형 서버 또는 서버 그룹에서 하나 이상의 서버를 호스팅하는 모든 물리적 호스트는 다른 서버에서 볼 수 있는 공용 IP 주소를 사용하도록 인터페이스를 구성해야 합니다.

    다음 관리 CLI 명령을 사용하여 환경에 적합한 관리,공용 및 비보안 인터페이스 외부 IP 주소를 수정합니다. 명령에서 EXTERNAL_IP_ADDRESS 를 호스트의 실제 외부 IP 주소로 교체해야 합니다.

    /interface=management:write-attribute(name=inet-address,value="${jboss.bind.address.management:EXTERNAL_IP_ADDRESS}")
    /interface=public:write-attribute(name=inet-address,value="${jboss.bind.address.public:EXTERNAL_IP_ADDRESS}")
    /interface=unsecure:write-attribute(name=inet-address,value="${jboss.bind.address.unsecure:EXTERNAL_IP_ADDRESS}")
    Copy to Clipboard Toggle word wrap

    서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap
  2. 호스트 이름을 구성합니다.

    관리형 도메인에 참여하는 각 호스트의 고유한 호스트 이름을 설정합니다. 이 이름은 슬레이브 간에 고유해야 하며 슬레이브가 클러스터를 식별하는 데 사용되므로 사용하는 이름을 기록하십시오.

    1. 적절한 host.xml 구성 파일을 사용하여 JBoss EAP 슬레이브 호스트를 시작합니다.

      $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml
      Copy to Clipboard Toggle word wrap
    2. 다음 관리 CLI 명령을 사용하여 고유한 호스트 이름을 설정합니다. 이 예에서는 slave1 을 새 호스트 이름으로 사용합니다.

      /host=EXISTING_HOST_NAME:write-attribute(name=name,value=slave1)
      Copy to Clipboard Toggle word wrap

      호스트 이름 구성에 대한 자세한 내용은 호스트 이름 구성을 참조하십시오.

  3. 도메인 컨트롤러에 연결하도록 각 호스트를 구성합니다.

    참고

    이 단계는 독립 실행형 서버에 적용되지 않습니다.

    관리형 도메인에 가입해야 하는 새로 구성된 호스트의 경우 로컬 요소를 제거하고 도메인 컨트롤러를 가리키는 원격 요소 호스트 속성을 추가해야 합니다.

    1. 적절한 host.xml 구성 파일을 사용하여 JBoss EAP 슬레이브 호스트를 시작합니다.

      $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml
      Copy to Clipboard Toggle word wrap
    2. 다음 관리 CLI 명령을 사용하여 도메인 컨트롤러 설정을 구성합니다.

      /host=SLAVE_HOST_NAME:write-remote-domain-controller(host=DOMAIN_CONTROLLER_IP_ADDRESS,port=${jboss.domain.master.port:9999},security-realm="ManagementRealm")
      Copy to Clipboard Toggle word wrap

      이렇게 하면 host-slave.xml 파일의 XML이 다음과 같이 수정됩니다.

      <domain-controller>
          <remote host="DOMAIN_CONTROLLER_IP_ADDRESS" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
      </domain-controller>
      Copy to Clipboard Toggle word wrap

      자세한 내용은 도메인 컨트롤러에 연결을 참조하십시오.

  4. 각 슬레이브 호스트에 대한 인증을 구성합니다.

    각 슬레이브 서버에는 도메인 컨트롤러의 또는 독립 실행형 마스터의 ManagementRealm에서 생성된 사용자 이름과 암호가 필요합니다. 도메인 컨트롤러 또는 독립 실행형 마스터에서 각 호스트에 대해 EAP_HOME/bin/add-user.sh 명령을 실행합니다. 슬레이브의 호스트 이름과 일치하는 사용자 이름을 사용하여 각 호스트에 대한 관리 사용자를 추가합니다.

    "이 새 사용자가 다른 AS 프로세스에 연결하는 데 사용됩니까?"라는 마지막 질문에 yes 로 대답해야 합니다. 그러면 시크릿 값이 제공됩니다.

    add-user 스크립트 출력 예 (trimmed)

    $ EAP_HOME/bin/add-user.sh
    
    What type of user do you wish to add?
     a) Management User (mgmt-users.properties)
     b) Application User (application-users.properties)
    (a): a
    
    Username : slave1
    Password : changeme
    Re-enter Password : changeme
    What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]:
    About to add user 'slave1' for realm 'ManagementRealm'
    Is this correct yes/no? yes
    Is this new user going to be used for one AS process to connect to another AS process?
    e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
    yes/no? yes
    To represent the user add the following to the server-identities definition <secret value="SECRET_VALUE" />
    Copy to Clipboard Toggle word wrap

    다음 단계에서 사용할 수 있는 이 출력(SECRET_VALUE)에서 제공하는 Base64로 인코딩된 시크릿 값을 복사합니다.

    자세한 내용은 JBoss EAP 서버 보안 구성 가이드 의 마스터 도메인 컨트롤러에 사용자 추가 섹션을 참조하십시오.

  5. 새 인증을 사용하도록 슬레이브 호스트의 보안 영역을 수정합니다.

    서버 구성의 secret 값을 설정하거나, 자격 증명 모음에서 암호를 가져오거나, 암호를 시스템 속성으로 전달하여 암호를 지정할 수 있습니다.

    • 관리 CLI를 사용하여 서버 구성 파일에서 Base64로 인코딩된 암호 값을 지정합니다.

      다음 관리 CLI 명령을 사용하여 시크릿 값을 지정합니다. SECRET_VALUE 를 이전 단계의 add-user 출력에서 반환된 secret 값으로 교체해야 합니다.

      /host=SLAVE_HOST_NAME/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="SECRET_VALUE")
      Copy to Clipboard Toggle word wrap

      서버를 다시 로드해야 합니다. --host 인수는 독립 실행형 서버에는 적용되지 않습니다.

      reload --host=HOST_NAME
      Copy to Clipboard Toggle word wrap

      자세한 내용은 JBoss EAP How To Configure Server Security 가이드의 Slave Controllers to Use the Credential 섹션을 참조하십시오.

    • 자격 증명 모음에서 암호를 가져오도록 호스트를 구성합니다.

      1. EAP_HOME/bin/vault.sh 스크립트를 사용하여 마스크된 암호를 생성합니다. VAULT::secret::password::VAULT_SECRET_VALUE 형식으로 문자열을 생성합니다. 예를 들면 다음과 같습니다.

        VAULT::secret::password::ODVmYmJjNGMtZDU2ZC00YmNlLWE4ODMtZjQ1NWNmNDU4ZDc1TElORV9CUkVBS3ZhdWx0.
        Copy to Clipboard Toggle word wrap
        참고

        자격 증명 모음에 암호를 생성할 때 Base64 인코딩이 아닌 일반 텍스트로 지정해야 합니다.

      2. 다음 관리 CLI 명령을 사용하여 시크릿 값을 지정합니다. VAULT_SECRET_VALUE 를 이전 단계에서 생성된 마스크된 암호로 교체해야 합니다.

        /host=master/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${VAULT::secret::password::VAULT_SECRET_VALUE}")
        Copy to Clipboard Toggle word wrap

        서버를 다시 로드해야 합니다. --host 인수는 독립 실행형 서버에는 적용되지 않습니다.

        reload --host=HOST_NAME
        Copy to Clipboard Toggle word wrap

        자세한 내용은 JBoss EAP How To Configure Server Security 가이드의 Password Vault 섹션을 참조하십시오.

    • 암호를 시스템 속성으로 지정합니다.

      다음 예제에서는 server.identity.password 를 암호의 시스템 속성 이름으로 사용합니다.

      1. 서버 구성 파일에서 암호의 시스템 속성을 지정합니다.

        다음 managemente CLI 명령을 사용하여 시스템 속성을 사용하도록 시크릿 ID를 구성합니다.

        /host=SLAVE_HOST_NAME/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${server.identity.password}")
        Copy to Clipboard Toggle word wrap

        서버를 다시 로드해야 합니다. --host 인수는 독립 실행형 서버에는 적용되지 않습니다.

        reload --host=master
        Copy to Clipboard Toggle word wrap
      2. 서버를 시작할 때 시스템 속성의 암호를 설정합니다.

        명령줄 인수 또는 속성 파일로 전달하여 server.identity.password 시스템 속성을 설정할 수 있습니다.

        1. 일반 텍스트 명령줄 인수로 전달합니다.

          서버를 시작하고 server.identity.password 속성을 전달합니다.

          $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml -Dserver.identity.password=changeme
          Copy to Clipboard Toggle word wrap
          주의

          암호를 일반 텍스트로 입력해야 하며 ps -ef 명령을 실행한 모든 사용자에게 표시됩니다.

        2. 속성 파일에서 속성을 설정합니다.

          속성 파일을 생성하고 속성 파일에 키/값 쌍을 추가합니다. 예를 들면 다음과 같습니다.

          server.identity.password=changeme
          Copy to Clipboard Toggle word wrap
          주의

          암호는 일반 텍스트로 되어 있으며 이 속성 파일에 액세스할 수 있는 모든 사용자에게 표시됩니다.

          명령줄 인수를 사용하여 서버를 시작합니다.

          $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml --properties=PATH_TO_PROPERTIES_FILE
          Copy to Clipboard Toggle word wrap
  6. 서버를 다시 시작합니다.

    슬레이브는 호스트 이름을 사용자 이름으로 사용하고 암호화된 문자열을 암호로 사용하여 마스터에 인증합니다.

이제 관리형 도메인의 서버 그룹 내의 독립 실행형 서버 또는 서버가 mod_cluster 작업자 노드로 구성됩니다. 클러스터형 애플리케이션을 배포하면 장애 조치(failover)를 위해 해당 세션이 모든 클러스터 노드에 복제되고 외부 웹 서버 또는 로드 밸런서의 요청을 수락할 수 있습니다. 클러스터의 각 노드는 기본적으로 자동 검색을 사용하여 다른 노드를 검색합니다.

22.6.4. mod_cluster fail_on_status Parameter 구성

fail_on_status 매개변수는 클러스터에서 작업자 노드에서 반환한 경우 해당 노드가 실패한 것으로 표시하는 HTTP 상태 코드를 나열합니다. 그러면 로드 밸런서에서 클러스터의 다른 작업자 노드에 향후 요청을 보냅니다. 실패한 작업자 노드는 로드 밸런서를 STATUS 메시지를 보낼 때까지 NOTOK 상태로 유지됩니다.

참고

fail_on_status 매개변수는 기능을 지원하지 않으므로 HP- Cryostat v11.3 hpws httpd B.2.2.15.15.15와 함께 사용할 수 없습니다.

fail_on_status 매개변수는 로드 밸런서의 httpd 구성 파일에서 구성해야 합니다. fail_on_status 에 대한 여러 HTTP 상태 코드는 쉼표로 구분된 목록으로 지정할 수 있습니다. 다음 예제에서는 fail_on_status 의 경우 HTTP 상태 코드 203204 를 지정합니다.

fail_on_status 구성 예

ProxyPass / balancer://MyBalancer stickysession=JSESSIONID|jsessionid nofailover=on failonstatus=203,204
ProxyPassReverse / balancer://MyBalancer
ProxyPreserveHost on
Copy to Clipboard Toggle word wrap

22.6.5. 클러스터 간 트래픽 마이그레이션

JBoss EAP를 사용하여 새 클러스터를 생성한 후 업그레이드 프로세스의 일부로 이전 클러스터에서 새 클러스터로 트래픽을 마이그레이션할 수 있습니다. 이 작업에서는 중단 또는 다운 타임을 최소화하여 이 트래픽을 마이그레이션하는 데 사용할 수 있는 전략이 표시됩니다.

  • 새 클러스터 설정: (이 클러스터 호출: ClusterNEW).
  • 중복되는 이전 클러스터 설정(이 클러스터 호출: ClusterOLD).
클러스터 업그레이드 프로세스 - Load-Balancing Groups
  1. 사전 요구 사항에 설명된 단계를 사용하여 새 클러스터를 설정합니다.
  2. ClusterNEWClusterOLD 모두에서 구성 옵션 stick -sessiontrue 로 설정되어 있는지 확인합니다(이 옵션은 기본적으로 true 로 설정됨). 이 옵션을 활성화하면 클러스터에서 클러스터 노드에 대한 모든 새 요청이 계속 각 클러스터 노드로 이동합니다.

    /profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=sticky-session,value=true)
    Copy to Clipboard Toggle word wrap
  3. ClusterOLD 의 모든 클러스터 노드가 ClusterOLD 로드 밸런싱 그룹의 멤버라고 가정하면 load-balancing-groupClusterOLD 로 설정합니다.

    /profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=load-balancing-group,value=ClusterOLD)
    Copy to Clipboard Toggle word wrap
    <subsystem xmlns="urn:jboss:domain:modcluster:2.0">
      <mod-cluster-config load-balancing-group="ClusterOLD" advertise-socket="modcluster" connector="ajp">
        <dynamic-load-provider>
          <load-metric type="cpu"/>
        </dynamic-load-provider>
      </mod-cluster-config>
    </subsystem>
    Copy to Clipboard Toggle word wrap
  4. mod_cluster Worker Node 섹션에 설명된 프로세스를 사용하여 ClusterNEW 의 노드를 mod_cluster 구성에 개별적으로 추가합니다. 앞서 언급한 절차를 사용하여 부하 분산 그룹을 ClusterNEW 로 설정합니다.

    이 시점에서 mod_cluster-manager 콘솔에서 undermentioned 단축된 예와 유사한 출력을 볼 수 있습니다.

                    mod_cluster/<version>
    
        LBGroup ClusterOLD: [Enable Nodes]   [Disable Nodes]   [Stop Nodes]
            Node node-1-jvmroute (ajp://node1.oldcluster.example:8009):
                [Enable Contexts]   [Disable Contexts]   [Stop Contexts]
                Balancer: qacluster, LBGroup: ClusterOLD, Flushpackets: Off, ..., Load: 100
                Virtual Host 1:
                    Contexts:
                        /my-deployed-application-context, Status: ENABLED Request: 0 [Disable]   [Stop]
    
            Node node-2-jvmroute (ajp://node2.oldcluster.example:8009):
                [Enable Contexts]   [Disable Contexts]   [Stop Contexts]
                Balancer: qacluster, LBGroup: ClusterOLD, Flushpackets: Off, ..., Load: 100
                Virtual Host 1:
                    Contexts:
                        /my-deployed-application-context, Status: ENABLED Request: 0 [Disable]   [Stop]
    
    
        LBGroup ClusterNEW: [Enable Nodes]   [Disable Nodes]   [Stop Nodes]
            Node node-3-jvmroute (ajp://node3.newcluster.example:8009):
                [Enable Contexts]   [Disable Contexts]   [Stop Contexts]
                Balancer: qacluster, LBGroup: ClusterNEW, Flushpackets: Off, ..., Load: 100
                Virtual Host 1:
                    Contexts:
                        /my-deployed-application-context, Status: ENABLED Request: 0 [Disable]   [Stop]
    
            Node node-4-jvmroute (ajp://node4.newcluster.example:8009):
                [Enable Contexts]   [Disable Contexts]   [Stop Contexts]
                Balancer: qacluster, LBGroup: ClusterNEW, Flushpackets: Off, ..., Load: 100
                Virtual Host 1:
                    Contexts:
                        /my-deployed-application-context, Status: ENABLED Request: 0 [Disable]   [Stop]
    Copy to Clipboard Toggle word wrap
  5. ClusterOLD 그룹 내에는 이전 활성 세션이 있으며 ClusterOLD 또는 CLusterNEW 그룹 내에 새 세션이 생성됩니다. 다음으로 전체 ClusterOLD 그룹을 비활성화하여 현재 클라이언트의 세션에 오류가 발생하지 않고 클러스터 노드의 전원을 끄도록 합니다.

    mod_cluster-manager 웹 콘솔에서 LBGroup ClusterOLD 에 대한 노드 비활성화 링크를 클릭합니다.

    이 시점에서 이미 설정된 세션에 속하는 요청만 ClusterOLD 로드 밸런싱 그룹의 멤버로 라우팅됩니다. 새 클라이언트의 세션은 ClusterNEW 그룹에만 생성됩니다. ClusterOLD 그룹 내에 활성 세션이 없는 즉시 해당 멤버를 안전하게 제거할 수 있습니다.

    참고

    중지 노드를 사용하면 로드 밸런서를 사용하여 이 도메인에 대한 요청 라우팅을 즉시 중지합니다. 이렇게 하면 ClusterNEWClusterOLD 간에 세션 복제가 없는 경우 클라이언트에 세션 데이터가 손실되는 다른 로드 밸런싱 그룹에 대한 페일오버가 강제 적용됩니다.

기본 Load-Balancing 그룹

현재 ClusterOLD 설정에 로드 밸런싱 그룹 설정이 포함되어 있지 않은 경우( mod_cluster-manager 콘솔에서 LBGroup:를 볼 수 있음) ClusterOLD 노드를 비활성화할 수 있습니다. 이 경우 각 ClusterOLD 노드에 대한 컨텍스트 비활성화 를 클릭합니다. 이러한 노드의 컨텍스트는 비활성화되며 활성 세션이 없으면 제거할 준비가 됩니다. 새 클라이언트의 세션은 활성화된 컨텍스트가 있는 노드(이 예제의 ClusterNEW 멤버)에서만 생성됩니다.

관리 CLI 사용

mod_cluster-manager 웹 콘솔을 사용하는 것 외에도 JBoss EAP 관리 CLI를 사용하여 특정 컨텍스트를 중지하거나 비활성화할 수 있습니다.

컨텍스트 중지

/host=master/server=server-one/subsystem=modcluster:stop-context(context=/my-deployed-application-context, virtualhost=default-host, waittime=0)
Copy to Clipboard Toggle word wrap

waittime0 으로 설정된 컨텍스트를 중지하면 시간 초과가 없는 경우 해당 장치에 즉시 요청을 라우팅하도록 지시합니다. 이로 인해 다른 사용 가능한 컨텍스트로 페일오버가 강제 적용됩니다.

waittime 인수를 사용하여 timeout 값을 설정하면 이 컨텍스트에서 새 세션이 생성되지 않지만 기존 세션은 완료되거나 지정된 타임아웃이 경과될 때까지 이 노드로 계속 전달됩니다. waittime 인수의 기본값은 10 초입니다.

컨텍스트 비활성화

/host=master/server=server-one/subsystem=modcluster:disable-context(context=/my-deployed-application-context, virtualhost=default-host)
Copy to Clipboard Toggle word wrap

컨텍스트를 비활성화하면 이 컨텍스트에서 새 세션을 생성하지 않아야 합니다.

22.7. Apache mod_jk HTTP Connector

Apache mod_jk 는 호환성을 위해 필요한 고객을 위해 제공되는 HTTP 커넥터입니다.

JBoss EAP는 Apache HTTP 프록시 서버의 워크로드를 허용할 수 있습니다. 프록시 서버는 웹 프런트 엔드의 클라이언트 요청을 수락하고 작업을 참여 JBoss EAP 서버로 전달합니다. 고정 세션을 활성화하면 서버를 사용할 수 없는 경우가 아니면 동일한 클라이언트 요청이 항상 동일한 JBoss EAP 서버로 이동합니다.

mod_jk는 Cryostat 1.3 프로토콜을 통해 통신합니다. 다른 프로토콜은 mod_cluster 또는 mod_proxy 와 함께 사용할 수 있습니다. 자세한 내용은 HTTP Connectors 개요 를 참조하십시오.

참고

mod_cluster 는 mod_jk보다 고급 로드 밸런서 장치이며 권장되는 HTTP 커넥터입니다. mod_cluster는 mod_jk의 모든 기능과 추가 기능을 제공합니다. JBoss EAP mod_cluster HTTP 커넥터와 달리 Apache mod_jk HTTP 커넥터는 서버 또는 서버 그룹에 대한 배포 상태를 알 수 없으며 그에 따라 작업을 보내는 위치를 조정할 수 없습니다.

자세한 내용은 Apache mod_jk 설명서 를 참조하십시오.

22.7.1. Apache HTTP Server에서 mod_jk 구성

JBoss Core Services Apache HTTP Server를 설치하거나 JBoss Web Server를 사용할 때 mod_jk 모듈(mod_jk.so)이 이미 포함되어 있지만 기본적으로 로드되지 않습니다.

참고

Apache HTTP Server는 더 이상 JBoss Web Server 버전 3.1.0과 함께 배포되지 않습니다.

다음 단계를 사용하여 Apache HTTP Server에서 mod_jk를 로드하고 구성합니다. 이 단계에서는 이미 플랫폼에 따라 다른 Apache HTTP Server의 httpd/ 디렉터리로 이동했다고 가정합니다. 자세한 내용은 JBoss Core Services Apache HTTP Server 설치 가이드에서 플랫폼에 대한 설치 지침을 참조하십시오.

참고

Red Hat 고객은 Red Hat 고객 포털에서 로드 밸런서 구성 툴 을 사용하여 mod_jk 및 기타 커넥터에 대한 최적의 구성 템플릿을 빠르게 생성할 수 있습니다. 이 도구에 액세스하려면 로그인해야 합니다.

  1. mod_jk 모듈을 구성합니다.

    참고

    샘플 mod_jk 구성 파일은 conf.d/mod_jk.conf.sample 에 제공됩니다. 필요에 따라 .sample 확장자를 제거하고 해당 내용을 수정하여 자체 파일을 생성하는 대신 이 샘플을 사용할 수 있습니다.

    conf.d/mod_jk.conf 라는 새 파일을 생성합니다. 파일에 다음 구성을 추가하여 필요한 제품군에 콘텐츠를 수정해야 합니다.

    # Load mod_jk module
    # Specify the filename of the mod_jk lib
    LoadModule jk_module modules/mod_jk.so
    
    # Where to find workers.properties
    JkWorkersFile conf.d/workers.properties
    
    # Where to put jk logs
    JkLogFile logs/mod_jk.log
    
    # Set the jk log level [debug/error/info]
    JkLogLevel info
    
    # Select the log format
    JkLogStampFormat  "[%a %b %d %H:%M:%S %Y]"
    
    # JkOptions indicates to send SSK KEY SIZE
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
    
    # JkRequestLogFormat
    JkRequestLogFormat "%w %V %T"
    
    # Mount your applications
    JkMount /application/* loadbalancer
    
    # Add shared memory.
    # This directive is present with 1.2.10 and
    # later versions of mod_jk, and is needed for
    # for load balancing to work properly
    JkShmFile logs/jk.shm
    
    # Add jkstatus for managing runtime data
    <Location /jkstatus/>
        JkMount status
        Require ip 127.0.0.1
    </Location>
    Copy to Clipboard Toggle word wrap
    참고

    JkMount 지시문은 Apache HTTP Server가 mod_jk 모듈로 전달해야 하는 URL을 지정합니다. 지시문의 구성에 따라 mod_jk는 수신된 URL을 올바른 작업자로 보냅니다. 정적 콘텐츠를 직접 제공하고 Java 애플리케이션에 대한 로드 밸런서만 사용하려면 URL 경로는 /application/* 이어야 합니다. mod_jk를 로드 밸런서 장치로 사용하려면 /* 값을 사용하여 모든 URL을 mod_jk로 전달합니다.

    이 파일은 일반적인 mod_jk 구성 외에도 mod_jk.so 모듈을 로드하도록 지정하고 workers.properties 파일을 찾을 위치를 정의합니다.

  2. mod_jk 작업자 노드를 구성합니다.

    참고

    샘플 작업자 구성 파일은 conf.d/workers.properties.sample 에서 제공됩니다. 필요에 따라 .sample 확장자를 제거하고 해당 내용을 수정하여 자체 파일을 생성하는 대신 이 샘플을 사용할 수 있습니다.

    conf.d/workers.properties 라는 새 파일을 만듭니다. 파일에 다음 구성을 추가하여 필요한 제품군에 콘텐츠를 수정해야 합니다.

    # Define list of workers that will be used
    # for mapping requests
    worker.list=loadbalancer,status
    
    # Define Node1
    # modify the host as your host IP or DNS name.
    worker.node1.port=8009
    worker.node1.host=node1.mydomain.com
    worker.node1.type=ajp13
    worker.node1.ping_mode=A
    worker.node1.lbfactor=1
    
    # Define Node2
    # modify the host as your host IP or DNS name.
    worker.node2.port=8009
    worker.node2.host=node2.mydomain.com
    worker.node2.type=ajp13
    worker.node2.ping_mode=A
    worker.node2.lbfactor=1
    
    # Load-balancing behavior
    worker.loadbalancer.type=lb
    worker.loadbalancer.balance_workers=node1,node2
    worker.loadbalancer.sticky_session=1
    
    # Status worker for managing load balancer
    worker.status.type=status
    Copy to Clipboard Toggle word wrap

    mod_jk workers.properties 파일 및 기타 고급 구성 옵션의 구문에 대한 자세한 내용은 mod_jk Worker Properties 를 참조하십시오.

  3. 필요한 경우 JKMountFile 지시문을 지정합니다.

    mod-jk.conf 의 JKMount 지시문 외에도 mod_jk로 전달할 여러 URL 패턴이 포함된 파일을 지정할 수 있습니다.

    1. uriworkermap.properties 파일을 생성합니다.

      참고

      샘플 URI 작업자 맵 구성 파일은 conf.d/uriworkermap.properties.sample 에 제공됩니다. 필요에 따라 .sample 확장자를 제거하고 해당 내용을 수정하여 자체 파일을 생성하는 대신 이 샘플을 사용할 수 있습니다.

      conf.d/uriworkermap.properties 라는 새 파일을 생성합니다. 일치시킬 각 URL 패턴에 대한 행을 추가합니다. 예를 들면 다음과 같습니다.

      # Simple worker configuration file
      /*=loadbalancer
      Copy to Clipboard Toggle word wrap
    2. uriworkermap.properties 파일을 가리키도록 구성을 업데이트합니다.

      conf.d/mod_jk.conf 에 다음을 추가합니다.

      # Use external file for mount points.
      # It will be checked for updates each 60 seconds.
      # The format of the file is: /url=worker
      # /examples/*=loadbalancer
      JkMountFile conf.d/uriworkermap.properties
      Copy to Clipboard Toggle word wrap

mod_jk 구성에 대한 자세한 내용은 JBoss Web Server HTTP Connectors 및 Load Balancing Guide의 mod_jk로 Apache HTTP Server 구성 섹션을 참조하십시오.

22.7.2. mod_jk를 사용하여 결합하도록 JBoss EAP 구성

JBoss EAP undertow 하위 시스템은 요청을 수락하고 외부 웹 서버로 응답을 다시 전송하기 위해 리스너를 지정해야 합니다. mod_jk에서는 Cryostat 프로토콜을 사용하므로 Cryostat 리스너를 구성해야 합니다.

기본 고가용성 구성(ha 또는 full-ha) 중 하나를 사용하는 경우 Cryostat 리스너가 이미 구성되어 있습니다.

자세한 내용은 외부 웹 서버에서 요청 수락을 참조하십시오.

22.8. Apache mod_proxy HTTP Connector

Apache mod_proxy 는 Cryostat, HTTP 및 HTTPS 프로토콜을 통한 연결을 지원하는 HTTP 커넥터입니다. mod_proxy는 부하 분산 또는 로드 밸런싱이 아닌 구성으로 구성할 수 있으며 고정 세션의 개념을 지원합니다.

mod_proxy 모듈을 사용하려면 사용하려는 프로토콜에 따라 JBoss EAP에 HTTP, HTTPS 또는 Cryostat 리스너가 undertow 하위 시스템에 구성되어 있어야 합니다.

참고

mod_cluster 는 mod_proxy보다 고급 로드 밸런서 장치이며 권장되는 HTTP 커넥터입니다. mod_cluster는 mod_proxy의 모든 기능과 추가 기능을 제공합니다. JBoss EAP mod_cluster HTTP 커넥터와 달리 Apache mod_proxy HTTP 커넥터는 서버 또는 서버 그룹의 배포 상태를 알 수 없으며 그에 따라 작업을 전송하는 위치를 조정할 수 없습니다.

자세한 내용은 Apache mod_proxy 설명서 를 참조하십시오.

22.8.1. Apache HTTP Server에서 mod_proxy 구성

mod_proxy 모듈은 JBoss Core Services Apache HTTP Server를 설치하거나 JBoss Web Server를 사용할 때 이미 포함되어 있으며 기본적으로 로드됩니다.

참고

Apache HTTP Server는 더 이상 JBoss Web Server 버전 3.1.0과 함께 배포되지 않습니다.

기본 로드 밸런싱 또는 비 로드 밸런싱 프록시를 구성하려면 아래 적절한 섹션을 참조하십시오. 이 단계에서는 이미 Apache HTTP Server의 httpd/ 디렉토리로 이동했다고 가정하며, 이는 플랫폼에 따라 다릅니다. 자세한 내용은 JBoss Core Services Apache HTTP Server 설치 가이드에서 플랫폼에 대한 설치 지침을 참조하십시오. 이 단계에서는 필요한 HTTP 리스너가 JBoss EAP 하위 시스템에 이미 구성되어 있다고 가정합니다.

참고

Red Hat 고객은 Red Hat 고객 포털에서 로드 밸런서 구성 툴 을 사용하여 mod_proxy 및 기타 커넥터에 대한 최적의 구성 템플릿을 빠르게 생성할 수 있습니다. 이 도구에 액세스하려면 로그인해야 합니다.

비 로드 밸런싱 프록시 추가

가질 수 있는 다른 < VirtualHost > 지시문 아래에 직접 conf/httpd.conf 파일에 다음 구성을 추가합니다. 설정에 적합한 값으로 바꿉니다.

<VirtualHost *:80>
# Your domain name
ServerName YOUR_DOMAIN_NAME

ProxyPreserveHost On

# The IP and port of JBoss
# These represent the default values, if your httpd is on the same host
# as your JBoss managed domain or server

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

# The location of the HTML files, and access control information
DocumentRoot /var/www
<Directory /var/www>
Options -Indexes
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Copy to Clipboard Toggle word wrap
로드 밸런싱 프록시 추가
참고

기본 Apache HTTP Server 구성에는 mod_cluster와 호환되지 않으므로 mod_proxy_balancer.so 모듈이 비활성화되었습니다. 이 작업을 완료하려면 이 모듈을 로드하고 mod_cluster 모듈을 비활성화해야 합니다.

mod_proxy를 로드 밸런서 장치로 사용하고 작업을 여러 JBoss EAP 인스턴스에 보내려면 conf/httpd.conf 파일에 다음 구성을 추가합니다. 예제 IP 주소는 가상입니다. 사용자 환경에 적절한 값으로 바꿉니다.

<Proxy balancer://mycluster>

Order deny,allow
Allow from all

# Add each JBoss Enterprise Application Server by IP address and port.
# If the route values are unique like this, one node will not fail over to the other.
BalancerMember http://192.168.1.1:8080 route=node1
BalancerMember http://192.168.1.2:8180 route=node2
</Proxy>

<VirtualHost *:80>
 # Your domain name
 ServerName YOUR_DOMAIN_NAME

 ProxyPreserveHost On
 ProxyPass / balancer://mycluster/

 # The location of the HTML files, and access control information DocumentRoot /var/www
 <Directory /var/www>
  Options -Indexes
  Order allow,deny
  Allow from all
 </Directory>

</VirtualHost>
Copy to Clipboard Toggle word wrap

위의 예제는 모두 HTTP 프로토콜을 사용하여 통신합니다. 적절한 mod_proxy 모듈을 로드하는 경우 대신 Cryostat 또는 HTTPS 프로토콜을 사용할 수 있습니다. 자세한 내용은 Apache mod_proxy 설명서 를 참조하십시오.

세션 활성화

고정 세션 은 클라이언트 요청이 원래 특정 JBoss EAP 작업자로 이동하면 사용할 수 없게 되지 않는 한 모든 향후 요청이 동일한 작업자로 전송됨을 의미합니다. 이는 거의 항상 권장되는 동작입니다.

mod_proxy에 대해 고정 세션을 활성화하려면 ProxyPass 문에 고정session 매개변수를 추가합니다.

ProxyPass / balancer://mycluster stickysession=JSESSIONID
Copy to Clipboard Toggle word wrap

lbmethodnofailover 와 같은 ProxyPass 문에 대한 추가 매개변수를 지정할 수 있습니다. 사용 가능한 매개변수에 대한 자세한 내용은 Apache mod_proxy 설명서 를 참조하십시오.

22.8.2. mod_proxy로 통신하도록 JBoss EAP 구성

JBoss EAP undertow 하위 시스템은 요청을 수락하고 외부 웹 서버로 응답을 다시 전송하기 위해 리스너를 지정해야 합니다. 사용할 프로토콜에 따라 리스너를 구성해야 할 수도 있습니다.

HTTP 리스너는 JBoss EAP 기본 구성에 구성됩니다. 기본 고가용성 구성(ha 또는 full-ha) 중 하나를 사용하는 경우 Cryostat 리스너도 사전 구성됩니다.

자세한 내용은 외부 웹 서버에서 요청 수락을 참조하십시오.

22.9. Microsoft ISAPI Connector

Internet Server API(ISAPI)는 Microsoft의 인터넷 정보 서비스(IIS)와 같은 웹 서버에 대한 ODBC 서버 확장 및 필터를 작성하는 데 사용되는 API 집합입니다. isapi_redirect. offers 는 hieradata로 조정된 mod_jk 의 확장입니다. isapi_redirect.chunk 을 사용하면 SASL을 로드 밸런서로 사용하여 JBoss EAP 인스턴스를 작업자 노드로 구성할 수 있습니다.

참고

Windows Server 및 SASL의 지원되는 구성에 대한 자세한 내용은 JBoss EAP 지원 구성을 참조하십시오.

22.9.1. ISAPI 커넥터를 사용하도록 Microsoft Administrators 구성

Red Hat 고객 포털에서 ISAPI 커넥터를 다운로드합니다.

  1. 브라우저를 열고 Red Hat Customer Portal JBoss Software Downloads 페이지에 로그인합니다.
  2. 제품 드롭다운 메뉴에서 Web Connectors 를 선택합니다.
  3. 버전 드롭다운 메뉴에서 최신 JBoss Core Services 버전을 선택합니다.
  4. 목록에서 Red Hat JBoss Core Services ISAPI Connector 를 찾아 다운로드 링크를 클릭합니다.
  5. 아카이브를 추출하고 sbin 디렉터리의 내용을 서버의 위치에 복사합니다. 아래 명령은 콘텐츠가 C:\connectors\ 에 복사되었다고 가정합니다.

SSSD 관리자(IIS 7)를 사용하여IIS Redirector를 구성하려면 다음을 수행합니다.

  1. 시작실행을 클릭하고 inetmgr 을 입력하여 SASL 관리자를 엽니다.
  2. 왼쪽 트리 뷰 창에서 NSX 7을 확장합니다.
  3. ISAPI 및 CGI 등록을 두 번 클릭하여 새 창에서 엽니다.
  4. 작업 창에서 추가 를 클릭합니다. ISAPI 또는 CGI 제한 추가 창이 열립니다.
  5. 다음 값을 지정합니다.

    • ISAPI 또는 CGI 경로:C:\connectors\isapi_redirect.VERSION
    • 설명:jboss
    • Enable extension path to execute: check 상자를 선택합니다.
  6. OK 를 클릭하여 ISAPI 또는 CGI Restriction 창을 닫습니다.
  7. JBoss Native 가상 디렉터리 정의

    • 기본 웹 사이트를 마우스 오른쪽 버튼으로 클릭하고 가상 디렉터리 추가를 클릭합니다. 가상 디렉터리 추가 창이 열립니다.
    • 가상 디렉터리를 추가하려면 다음 값을 지정합니다.

      • alias:jboss
      • 물리적 경로:C:\connectors\
    • 확인을 클릭하여 값을 저장하고 가상 디렉터리 추가 창을 닫습니다.
  8. JBoss Native ISAPI 리디렉션 필터 정의

    • 트리 뷰 창에서 siteDefault Web site를 확장합니다.
    • ISAPI 필터 를 두 번 클릭합니다. ISAPI 필터 기능 보기가 표시됩니다.
    • 작업 창에서 추가를 클릭합니다. ISAPI 필터 추가 창이 표시됩니다.
    • ISAPI 필터 추가 창에서 다음 값을 지정합니다.

      • 필터 이름:jboss
      • Executable: C:\connectors\isapi_redirect.dll
    • OK 를 클릭하여 값을 저장하고 ISAPI 필터 추가 창을 닫습니다.
  9. ISAPI- offers 처리기 활성화

    • 트리 뷰 창에서 NSX 7 항목을 두 번 클릭합니다. SASL 7 홈 기능 뷰 가 열립니다.
    • Handler Mappings 를 두 번 클릭합니다. Handler Mappings 기능 뷰 가 표시됩니다.
    • 그룹 by 콤보 상자에서 상태를 선택합니다. Handler MappingsEnabled 및 Disabled Groups 에 표시됩니다.
    • ISAPI- offers를 찾습니다. Disabled 그룹에 있는 경우 마우스 오른쪽 버튼으로 클릭하고 기능 권한 편집을 선택합니다.
    • 다음 권한을 활성화합니다.

      • 읽기
      • 스크립트
      • 실행
    • 확인을 클릭하여 값을 저장하고 기능 권한 편집 창을 닫습니다.

이제 Microsoft Administrators가 ISAPI 커넥터를 사용하도록 구성되어 있습니다.

22.9.2. JBoss EAP에 클라이언트 요청을 전송하도록 ISAPI 커넥터 구성

이 작업은 ISAPI 커넥터의 요청을 수락하도록 JBoss EAP 서버 그룹을 구성합니다. 로드 밸런싱 또는 고가용성 장애 조치(failover)를 위한 구성은 포함되어 있지 않습니다.

이 구성은 SASL 서버에서 수행되며 외부 웹 서버의 요청을 수락 하도록 이미 JBoss EAP가 구성되어 있다고 가정합니다. 또한 Administrators 서버에 대한 전체 관리자 액세스 권한이 필요하며 ISAPI 커넥터를 사용하도록 WMCO를 구성해야 합니다.

속성 파일 생성 및 리디렉션 설정
  1. 로그, 속성 파일 및 잠금 파일을 저장할 디렉터리를 생성합니다.

    이 절차의 나머지 부분에서는 이 목적을 위해 C:\connectors\ 디렉터리를 사용한다고 가정합니다. 다른 디렉터리를 사용하는 경우 그에 따라 지침을 수정합니다.

  2. isapi_redirect.properties 파일을 생성합니다.

    C:\connectors\isapi_redirect.properties 라는 새 파일을 생성합니다. 다음 콘텐츠를 파일에 복사합니다.

    # Configuration file for the ISAPI Connector
    # Extension uri definition
    extension_uri=/jboss/isapi_redirect.dll
    
    # Full path to the log file for the ISAPI Connector
    log_file=c:\connectors\isapi_redirect.log
    
    # Log level (debug, info, warn, error or trace)
    log_level=info
    
    # Full path to the workers.properties file
    worker_file=c:\connectors\workers.properties
    
    # Full path to the uriworkermap.properties file
    worker_mount_file=c:\connectors\uriworkermap.properties
    
    #Full path to the rewrite.properties file
    rewrite_rule_file=c:\connectors\rewrite.properties
    Copy to Clipboard Toggle word wrap

    rewrite.properties 파일을 사용하지 않으려면 행 시작 부분에 # 문자를 배치하여 마지막 행을 주석 처리합니다.

  3. uriworkermap.properties 파일을 생성합니다.

    uriworkermap.properties 파일에는 배포된 애플리케이션 URL과 해당 URL에 대한 요청을 처리하는 작업자 간의 매핑이 포함되어 있습니다. 다음 예제 파일은 파일의 구문을 보여줍니다. uriworkermap.properties 파일을 C:\connectors\ 에 배치합니다.

    # images and css files for path /status are provided by worker01
    /status=worker01
    /images/*=worker01
    /css/*=worker01
    
    # Path /web-console is provided by worker02
    # IIS (customized) error page is used for http errors with number greater or equal to 400
    # css files are provided by worker01
    /web-console/*=worker02;use_server_errors=400
    /web-console/css/*=worker01
    
    # Example of exclusion from mapping, logo.gif won't be displayed
    # /web-console/images/logo.gif=*
    
    # Requests to /app-01 or /app-01/something will be routed to worker01
    /app-01|/*=worker01
    
    # Requests to /app-02 or /app-02/something will be routed to worker02
    /app-02|/*=worker02
    Copy to Clipboard Toggle word wrap
  4. workers.properties 파일을 생성합니다.

    workers.properties 파일에는 작업자 레이블과 서버 인스턴스 간의 매핑 정의가 포함되어 있습니다. 이 파일은 Apache mod_jk worker 속성 구성에 사용되는 것과 동일한 파일의 구문을 따릅니다.

    다음은 workers.properties 파일의 예입니다. 작업자 이름, worker01worker02JBoss EAP 하위 시스템에서 구성된 instance-id 와 일치해야 합니다.

    이 파일을 C:\connectors\ 디렉터리에 배치합니다.

    # An entry that lists all the workers defined
    worker.list=worker01, worker02
    
    # Entries that define the host and port associated with these workers
    
    # First JBoss EAP server definition, port 8009 is standard port for AJP in EAP
    worker.worker01.host=127.0.0.1
    worker.worker01.port=8009
    worker.worker01.type=ajp13
    
    # Second JBoss EAP server definition
    worker.worker02.host=127.0.0.100
    worker.worker02.port=8009
    worker.worker02.type=ajp13
    Copy to Clipboard Toggle word wrap
  5. rewrite.properties 파일을 만듭니다.

    rewrite.properties 파일에는 특정 애플리케이션에 대한 간단한 URL 재작성 규칙이 포함되어 있습니다. 아래 예제와 같이 다시 작성된 경로는 이름-값 쌍을 사용하여 지정합니다. 이 파일을 C:\connectors\ 디렉터리에 배치합니다.

    #Simple example
    # Images are accessible under abc path
    /app-01/abc/=/app-01/images/
    Copy to Clipboard Toggle word wrap
  6. net stopnet start 명령을 사용하여 SASL 서버를 다시 시작합니다.

    C:\> net stop was /Y
    C:\> net start w3svc
    Copy to Clipboard Toggle word wrap

Administrators 서버는 애플리케이션별로 구성한 특정 JBoss EAP 서버에 클라이언트 요청을 전송하도록 구성되어 있습니다.

이 구성은 지정한 JBoss EAP 서버에서 클라이언트 요청을 분산합니다. 이 구성은 SASL 서버에서 수행되며 외부 웹 서버의 요청을 수락 하도록 이미 JBoss EAP가 구성되어 있다고 가정합니다. 또한 Administrators 서버에 대한 전체 관리자 액세스 권한이 필요하며 ISAPI 커넥터를 사용하도록 WMCO를 구성해야 합니다.

여러 서버 간에 클라이언트 요청 균형 조정
  1. 로그, 속성 파일 및 잠금 파일을 저장할 디렉터리를 생성합니다.

    이 절차의 나머지 부분에서는 이 목적을 위해 C:\connectors\ 디렉터리를 사용한다고 가정합니다. 다른 디렉터리를 사용하는 경우 그에 따라 지침을 수정합니다.

  2. isapi_redirect.properties 파일을 생성합니다.

    C:\connectors\isapi_redirect.properties 라는 새 파일을 생성합니다. 다음 콘텐츠를 파일에 복사합니다.

    # Configuration file for the ISAPI Connector
    # Extension uri definition
    extension_uri=/jboss/isapi_redirect.dll
    
    # Full path to the log file for the ISAPI Connector
    log_file=c:\connectors\isapi_redirect.log
    
    # Log level (debug, info, warn, error or trace)
    log_level=info
    
    # Full path to the workers.properties file
    worker_file=c:\connectors\workers.properties
    
    # Full path to the uriworkermap.properties file
    worker_mount_file=c:\connectors\uriworkermap.properties
    
    #OPTIONAL: Full path to the rewrite.properties file
    rewrite_rule_file=c:\connectors\rewrite.properties
    Copy to Clipboard Toggle word wrap

    rewrite.properties 파일을 사용하지 않으려면 행 시작 부분에 # 문자를 배치하여 마지막 행을 주석 처리합니다.

  3. uriworkermap.properties 파일을 생성합니다.

    uriworkermap.properties 파일에는 배포된 애플리케이션 URL과 해당 URL에 대한 요청을 처리하는 작업자 간의 매핑이 포함되어 있습니다. 다음 예제 파일은 부하 분산 구성이 있는 파일의 구문을 보여줍니다. 와일드카드(*) 문자는 다양한 URL 하위 디렉터리에 대한 모든 요청을 라우터라는 로드 밸런서에 전송합니다. 로드 밸런서의 구성은 다음 단계에서 다룹니다.

    uriworkermap.properties 파일을 C:\connectors\ 에 배치합니다.

    # images, css files, path /status and /web-console will be
    # provided by nodes defined in the load-balancer called "router"
    /css/*=router
    /images/*=router
    /status=router
    /web-console|/*=router
    
    # Example of exclusion from mapping, logo.gif won't be displayed
    # /web-console/images/logo.gif=*
    
    # Requests to /app-01 and /app-02 will be routed to nodes defined
    # in the load-balancer called "router"
    /app-01|/*=router
    /app-02|/*=router
    
    # mapping for management console, nodes in cluster can be enabled or disabled here
    /jkmanager|/*=status
    Copy to Clipboard Toggle word wrap
  4. workers.properties 파일을 생성합니다.

    workers.properties 파일에는 작업자 레이블과 서버 인스턴스 간의 매핑 정의가 포함되어 있습니다. 이 파일은 Apache mod_jk worker 속성 구성에 사용되는 것과 동일한 파일의 구문을 따릅니다.

    다음은 workers.properties 파일의 예입니다. 로드 밸런서는 worker01worker02 를 구성하도록 파일 끝 부분에 구성됩니다. 이러한 작업자 이름은 JBoss EAP 하위 시스템에서 구성된 instance-id 일치해야 합니다.

    이 파일을 C:\connectors\ 디렉터리에 배치합니다.

    # The advanced router LB worker
    worker.list=router,status
    
    # First EAP server definition, port 8009 is standard port for AJP in EAP
    #
    # lbfactor defines how much the worker will be used.
    # The higher the number, the more requests are served
    # lbfactor is useful when one machine is more powerful
    # ping_mode=A – all possible probes will be used to determine that
    # connections are still working
    
    worker.worker01.port=8009
    worker.worker01.host=127.0.0.1
    worker.worker01.type=ajp13
    worker.worker01.ping_mode=A
    worker.worker01.socket_timeout=10
    worker.worker01.lbfactor=3
    
    # Second EAP server definition
    worker.worker02.port=8009
    worker.worker02.host=127.0.0.100
    worker.worker02.type=ajp13
    worker.worker02.ping_mode=A
    worker.worker02.socket_timeout=10
    worker.worker02.lbfactor=1
    
    # Define the LB worker
    worker.router.type=lb
    worker.router.balance_workers=worker01,worker02
    
    # Define the status worker for jkmanager
    worker.status.type=status
    Copy to Clipboard Toggle word wrap

  5. rewrite.properties 파일을 만듭니다.

    rewrite.properties 파일에는 특정 애플리케이션에 대한 간단한 URL 재작성 규칙이 포함되어 있습니다. 아래 예제와 같이 다시 작성된 경로는 이름-값 쌍을 사용하여 지정합니다. 이 파일을 C:\connectors\ 디렉터리에 배치합니다.

    #Simple example
    # Images are accessible under abc path
    /app-01/abc/=/app-01/images/
    Restart the IIS server.
    
    Restart your IIS server by using the net stop and net start commands.
    C:\> net stop was /Y
    C:\> net start w3svc
    Copy to Clipboard Toggle word wrap

NSX 서버는 workers.properties 파일에서 참조된 JBoss EAP 서버에 클라이언트 요청을 전송하여 1:3 비율로 서버에 부하를 분산하도록 구성되어 있습니다. 이 비율은 각 서버에 할당된 로드 밸런싱 요소(lbfactor)에서 파생됩니다.

22.10. Oracle NSAPI Connector

Netscape Server API(NSAPI)는 이전에 Netscape Web Server인 Oracle iPlanet Web Server가 서버에 대한 확장을 구현하기 위해 제공하는 API입니다. 이러한 확장 기능을 서버 플러그인이라고 합니다. NSAPI 커넥터는 nsapi_redirector.so 에서 사용되며 Oracle iPlanet Web Server로 조정된 mod_jk의 확장입니다. NSAPI 커넥터를 사용하면 Oracle iPlanet Web Server를 로드 밸런서 장치로 사용하여 JBoss EAP 인스턴스를 작업자 노드로 구성할 수 있습니다.

참고

Solaris 및 Oracle iPlanet Web Server의 지원되는 구성에 대한 자세한 내용은 JBoss EAP 지원 구성을 참조하십시오.

22.10.1. NSAPI Connector를 사용하도록 Oracle iPlanet 웹 서버 구성

사전 요구 사항

  • JBoss EAP는 작업자 역할을 할 각 서버에 설치 및 구성됩니다.

Red Hat 고객 포털에서 NSAPI 커넥터를 다운로드합니다.

  1. 브라우저를 열고 Red Hat Customer Portal JBoss Software Downloads 페이지에 로그인합니다.
  2. 제품 드롭다운 메뉴에서 Web Connectors 를 선택합니다.
  3. 버전 드롭다운 메뉴에서 최신 JBoss Core Services 버전을 선택합니다.
  4. 목록에서 Red Hat JBoss Core Services NSAPI Connector 를 찾아 시스템에 대한 올바른 플랫폼 및 아키텍처를 선택하고 다운로드 링크를 클릭합니다.
  5. lib/ 또는 lib64/ 디렉터리에 있는 nsapi_redirector.so 파일을 IPLANET_CONFIG/lib/ 또는 IPLANET_CONFIG/lib64/ 디렉터리에 추출합니다.

NSAPI 커넥터를 설정합니다.

참고

이 지침에서 IPLANET_CONFIG 는 Oracle iPlanet 구성 디렉터리(일반적으로 /opt/oracle/webserver7/config/ )를 나타냅니다. Oracle iPlanet 구성 디렉터리가 다른 경우 그에 따라 지침을 수정합니다.

  1. 서블릿 매핑을 비활성화합니다.

    IPLANET_CONFIG/default.web.xml 파일을 열고 Built In Server Mappings 라는 제목으로 섹션을 찾습니다. XML 주석 문자( <!- 및 --> )로 래핑하여 다음 세 개의 서블릿에 대한 매핑을 비활성화합니다.

    • default
    • 호출자
    • jsp

      다음 예제 구성은 비활성화된 매핑을 보여줍니다.

      <!-- ============== Built In Servlet Mappings =============== -->
      <!-- The servlet mappings for the built in servlets defined above. -->
      <!-- The mapping for the default servlet -->
      <!--servlet-mapping>
       <servlet-name>default</servlet-name>
       <url-pattern>/</url-pattern>
      </servlet-mapping-->
      <!-- The mapping for the invoker servlet -->
      <!--servlet-mapping>
       <servlet-name>invoker</servlet-name>
       <url-pattern>/servlet/*</url-pattern>
      </servlet-mapping-->
      <!-- The mapping for the JSP servlet -->
      <!--servlet-mapping>
       <servlet-name>jsp</servlet-name>
       <url-pattern>*.jsp</url-pattern>
      </servlet-mapping-->
      Copy to Clipboard Toggle word wrap

      파일을 저장하고 종료합니다.

  2. NSAPI 커넥터 모듈을 로드하도록 iPlanet 웹 서버를 구성합니다.

    IPLANET_CONFIG/magnus.conf 파일의 끝에 다음 행을 추가하고 구성에 맞게 파일 경로를 수정합니다. 이러한 행은 nsapi_redirector.so 모듈의 위치와 작업자 및 해당 속성을 나열하는 workers.properties 파일을 정의합니다.

    Init fn="load-modules" funcs="jk_init,jk_service" shlib="/lib/nsapi_redirector.so" shlib_flags="(global|now)"
    
    Init fn="jk_init" worker_file="IPLANET_CONFIG/connectors/workers.properties" log_level="info" log_file="IPLANET_CONFIG/connectors/nsapi.log" shm_file="IPLANET_CONFIG/connectors/tmp/jk_shm"
    Copy to Clipboard Toggle word wrap

    위의 구성은 32비트 아키텍처용입니다. 64비트 Solaris를 사용하는 경우 lib/nsapi_redirector.so 문자열을 lib64/nsapi_redirector.so 로 변경합니다.

    파일을 저장하고 종료합니다.

  3. NSAPI 커넥터를 구성합니다.

    로드 밸런싱 또는 로드 밸런싱 구성을 사용하여 기본 구성에 대해 NSAPI 커넥터를 구성할 수 있습니다. 다음 옵션 중 하나를 선택하면 구성이 완료될 것입니다.

22.10.2. JBoss EAP에 클라이언트 요청을 전송하도록 NSAPI 커넥터 구성

이 작업에서는 로드 밸런싱 또는 페일오버 없이 클라이언트 요청을 JBoss EAP 서버로 리디렉션하도록 NSAPI 커넥터를 구성합니다. 리디렉션은 배포별(및 URL당) 기준으로 수행됩니다.

중요

이 작업을 계속하기 전에 NSAPI 커넥터를 이미 구성해야 합니다.

기본 HTTP 커넥터 설정
  1. JBoss EAP 서버로 리디렉션할 URL 경로를 정의합니다.

    참고

    IPLANET_CONFIG/obj.conf 에서는 행이 이전 행의 연속인 경우를 제외하고 줄 시작 부분에 공백이 허용되지 않습니다.

    IPLANET_CONFIG/obj.conf 파일을 편집합니다. < Object name="default" > 로 시작하는 섹션을 찾아 아래 예제 파일에 표시된 형식으로 일치시킬 각 URL 패턴을 추가합니다. jknsapi 문자열은 다음 단계에서 정의할 HTTP 커넥터를 나타냅니다. 이 예제에서는 패턴 일치에 와일드카드를 사용하는 방법을 보여줍니다.

    <Object name="default">
    [...]
    NameTrans fn="assign-name" from="/status" name="jknsapi"
    NameTrans fn="assign-name" from="/images(|/*)" name="jknsapi"
    NameTrans fn="assign-name" from="/css(|/*)" name="jknsapi"
    NameTrans fn="assign-name" from="/nc(|/*)" name="jknsapi"
    NameTrans fn="assign-name" from="/jmx-console(|/*)" name="jknsapi"
    </Object>
    Copy to Clipboard Toggle word wrap
  2. 각 경로에 서비스를 제공하는 작업자를 정의합니다.

    IPLANET_CONFIG/obj.conf 파일을 계속 편집합니다. 편집을 완료한 섹션의 닫기 태그 바로 뒤에 다음을 추가합니다. < /Object>.

    <Object name="jknsapi">
    ObjectType fn=force-type type=text/plain
    Service fn="jk_service" worker="worker01" path="/status"
    Service fn="jk_service" worker="worker02" path="/nc(/*)"
    Service fn="jk_service" worker="worker01"
    </Object>
    Copy to Clipboard Toggle word wrap

    위의 예제에서는 URL 경로 /status 로 요청을 worker01 이라는 작업자로 리디렉션하고 /nc/ 아래의 모든 URL 경로는 worker02 라는 작업자로 리디렉션합니다. 세 번째 줄은 이전 행과 일치하지 않는 jknsapi 오브젝트에 할당된 모든 URL이 worker01 에게 제공됨을 나타냅니다.

    파일을 저장하고 종료합니다.

  3. 작업자 및 해당 속성을 정의합니다.

    IPLANET_CONFIG/connectors/ 디렉터리에 workers.properties 라는 파일을 생성합니다. 다음 내용을 파일에 붙여넣고 환경에 맞게 수정합니다.

    # An entry that lists all the workers defined
    worker.list=worker01, worker02
    
    # Entries that define the host and port associated with these workers
    worker.worker01.host=127.0.0.1
    worker.worker01.port=8009
    worker.worker01.type=ajp13
    
    worker.worker02.host=127.0.0.100
    worker.worker02.port=8009
    worker.worker02.type=ajp13
    Copy to Clipboard Toggle word wrap

    workers.properties 파일은 Apache mod_jk와 동일한 구문을 사용합니다.

    파일을 저장하고 종료합니다.

  4. iPlanet 웹 서버 재시작

    다음 명령을 실행하여 iPlanet 웹 서버를 다시 시작합니다.

    IPLANET_CONFIG/../bin/stopserv
    IPLANET_CONFIG/../bin/startserv
    Copy to Clipboard Toggle word wrap

iPlanet Web Server는 이제 클라이언트 요청을 JBoss EAP에 배포하도록 구성한 URL로 보냅니다.

이 작업은 로드 밸런싱 구성에서 클라이언트 요청을 JBoss EAP 서버로 전송하도록 NSAPI 커넥터를 구성합니다.

중요

이 작업을 계속하기 전에 NSAPI 커넥터를 이미 구성해야 합니다.

로드 밸런싱을 위한 커넥터 구성
  1. JBoss EAP 서버로 리디렉션할 URL 경로를 정의합니다.

    참고

    IPLANET_CONFIG/obj.conf 에서는 행이 이전 행의 연속인 경우를 제외하고 줄 시작 부분에 공백이 허용되지 않습니다.

    IPLANET_CONFIG/obj.conf 파일을 편집합니다. < Object name="default" > 로 시작하는 섹션을 찾아 아래 예제 파일에 표시된 형식으로 일치시킬 각 URL 패턴을 추가합니다. jknsapi 문자열은 다음 단계에서 정의할 HTTP 커넥터를 나타냅니다. 이 예제에서는 패턴 일치에 와일드카드를 사용하는 방법을 보여줍니다.

    <Object name="default">
    [...]
    NameTrans fn="assign-name" from="/status" name="jknsapi"
    NameTrans fn="assign-name" from="/images(|/*)" name="jknsapi"
    NameTrans fn="assign-name" from="/css(|/*)" name="jknsapi"
    NameTrans fn="assign-name" from="/nc(|/*)" name="jknsapi"
    NameTrans fn="assign-name" from="/jmx-console(|/*)" name="jknsapi"
    NameTrans fn="assign-name" from="/jkmanager/*" name="jknsapi"
    </Object>
    Copy to Clipboard Toggle word wrap
  2. 각 경로에 서비스를 제공하는 작업자를 정의합니다.

    IPLANET_CONFIG/obj.conf 파일을 계속 편집합니다. 이전 단계에서 수정한 섹션에 대한 닫기 태그(</Object> ) 바로 뒤에 다음 새 섹션을 추가하고 필요에 맞게 수정합니다.

    <Object name="jknsapi">
    ObjectType fn=force-type type=text/plain
    Service fn="jk_service" worker="status" path="/jkmanager(/*)"
    Service fn="jk_service" worker="router"
    </Object>
    Copy to Clipboard Toggle word wrap

    jksnapi 오브젝트는 기본 오브젝트에서 name="jksnapi" 매핑에 매핑된 각 경로를 제공하는 데 사용되는 작업자 노드를 정의합니다. /jkmanager/* 와 일치하는 URL을 제외한 모든 URL은 라우터 라는 작업자로 리디렉션됩니다.

  3. 작업자 및 해당 속성을 정의합니다.

    IPLANET_CONFIG/connector/workers.properties 라는 파일을 생성합니다. 다음 내용을 파일에 붙여넣고 환경에 맞게 수정합니다.

    # The advanced router LB worker
    # A list of each worker
    worker.list=router,status
    
    # First JBoss EAP server
    # (worker node) definition.
    # Port 8009 is the standard port for AJP
    #
    
    worker.worker01.port=8009
    worker.worker01.host=127.0.0.1
    worker.worker01.type=ajp13
    worker.worker01.ping_mode=A
    worker.worker01.socket_timeout=10
    worker.worker01.lbfactor=3
    
    # Second JBoss EAP server
    worker.worker02.port=8009
    worker.worker02.host=127.0.0.100
    worker.worker02.type=ajp13
    worker.worker02.ping_mode=A
    worker.worker02.socket_timeout=10
    worker.worker02.lbfactor=1
    
    # Define the load-balancer called "router"
    worker.router.type=lb
    worker.router.balance_workers=worker01,worker02
    
    # Define the status worker
    worker.status.type=status
    Copy to Clipboard Toggle word wrap

    workers.properties 파일은 Apache mod_jk와 동일한 구문을 사용합니다.

    파일을 저장하고 종료합니다.

  4. iPlanet Web Server 7.0을 다시 시작합니다.

    IPLANET_CONFIG/../bin/stopserv
    IPLANET_CONFIG/../bin/startserv
    Copy to Clipboard Toggle word wrap

iPlanet 웹 서버는 로드 밸런싱 구성에서 JBoss EAP 서버로 구성한 URL 패턴을 리디렉션합니다.

부록 A. 참조 자료

A.1. 서버 런타임 인수

애플리케이션 서버 시작 스크립트는 런타임 시 인수 및 스위치를 허용합니다. 이를 통해 서버는 standalone.xml,domain.xmlhost.xml 구성 파일에 정의된 대체 구성에서 시작할 수 있습니다.

대체 구성에는 대체 소켓 바인딩 세트 또는 보조 구성으로 서버 시작이 포함될 수 있습니다.

시작 시 도움말 switch -h 또는 --help 를 전달하여 사용 가능한 매개변수 목록에 액세스할 수 있습니다.

Expand
표 A.1. 런타임 전환 및 인수
인수 또는 스위치작동 모드설명

--admin-only

독립 실행형

서버의 실행 중인 유형을 ADMIN_ONLY 로 설정합니다. 이로 인해 관리 인터페이스를 열고 관리 요청을 수락하지만 다른 런타임 서비스를 시작하거나 최종 사용자 요청을 수락하지 않습니다.

--admin-only

domain

호스트 컨트롤러의 실행 중인 유형을 ADMIN_ONLY 로 설정하여 관리 인터페이스를 열고 관리 요청을 수락하지만 서버를 시작하지 않거나 이 호스트 컨트롤러가 도메인의 마스터인 경우 슬레이브 호스트 컨트롤러에서 들어오는 연결을 수락합니다.

-b=<value>, -b <value>

독립 실행형 도메인

공용 인터페이스의 바인딩 주소를 구성하는 데 사용되는 시스템 속성 jboss.bind.address 를 설정합니다. 값이 지정되지 않은 경우 기본값은 127.0.0.1 입니다. 다른 인터페이스의 바인딩 주소를 설정하려면 -b<interface>=<value > 항목을 참조하십시오.

-b<interface>=<value>

독립 실행형 도메인

시스템 속성 jboss.bind.address.<interface&gt;를 지정된 값으로 설정합니다. 예: -bmanagement=IP_ADDRESS

--backup

domain

이 호스트가 도메인 컨트롤러가 아니더라도 영구 도메인 구성의 사본을 보관합니다.

-c=<config>, -c <config>

독립 실행형

사용할 서버 구성 파일의 이름입니다. 기본값은 standalone.xml 입니다.

-c=<config>, -c <config>

domain

사용할 서버 구성 파일의 이름입니다. 기본값은 domain.xml 입니다.

--cached-dc

domain

호스트가 도메인 컨트롤러가 아니며 부팅 시 도메인 컨트롤러에 연결할 수 없는 경우 로컬로 캐시된 도메인 구성 복사본을 사용하여 부팅합니다.

--debug [<port>]

독립 실행형

포트를 지정하려면 선택적 인수로 디버그 모드를 활성화합니다. 시작 스크립트에서 지원하는 경우에만 작동합니다.

-d<name>[=<value>]

독립 실행형 도메인

시스템 속성을 설정합니다.

--domain-config=<config>

domain

사용할 서버 구성 파일의 이름입니다. 기본값은 domain.xml 입니다.

-h, --help

독립 실행형 도메인

도움말 메시지를 표시하고 종료합니다.

--host-config=<config>

domain

사용할 호스트 구성 파일의 이름입니다. 기본값은 host.xml 입니다.

--interprocess-hc-address=<address>

domain

호스트 컨트롤러가 프로세스 컨트롤러의 통신을 수신 대기해야 하는 주소입니다.

--interprocess-hc-port=<port>

domain

호스트 컨트롤러가 프로세스 컨트롤러의 통신을 수신 대기해야 하는 포트입니다.

--master-address=<address>

domain

시스템 속성 jboss.domain.master.address 를 지정된 값으로 설정합니다. 기본 슬레이브 호스트 컨트롤러 구성에서 마스터 호스트 컨트롤러의 주소를 구성하는 데 사용됩니다.

--master-port=<port>

domain

시스템 속성 jboss.domain.master.port 를 지정된 값으로 설정합니다. 기본 슬레이브 호스트 컨트롤러 구성에서 마스터 호스트 컨트롤러에서 네이티브 관리 통신에 사용되는 포트를 구성하는 데 사용됩니다.

--read-only-server-config=<config>

독립 실행형

사용할 서버 구성 파일의 이름입니다. 원본 파일을 덮어쓰지 않는다는 점에서 --server-config-c 와 다릅니다.

--read-only-domain-config=<config>

domain

사용할 도메인 구성 파일의 이름입니다. 이는 초기 파일을 덮어쓰지 않는다는 점에서 --domain-config-c 와 다릅니다.

--read-only-host-config=<config>

domain

사용할 호스트 구성 파일의 이름입니다. 이는 초기 파일을 덮어쓰지 않는다는 점에서 --host-config 와 다릅니다.

-P=<url>, -P <url>, --properties=<url>

독립 실행형 도메인

지정된 URL에서 시스템 속성을 로드합니다.

--pc-address=<address>

domain

프로세스 컨트롤러가 제어하는 프로세스에서 통신을 수신 대기하는 주소입니다.

--pc-port=<port>

domain

프로세스 컨트롤러가 제어하는 프로세스에서 통신을 수신 대기하는 포트입니다.

-s<name>[=<value>]

독립 실행형

보안 속성을 설정합니다.

-secmgr

독립 실행형 도메인

보안 관리자가 설치된 서버를 실행합니다.

--server-config=<config>

독립 실행형

사용할 서버 구성 파일의 이름입니다. 기본값은 standalone.xml 입니다.

-u=<value>, -u <value>

독립 실행형 도메인

구성 파일의 socket-binding 요소에서 멀티 캐스트 주소를 구성하는 데 사용되는 시스템 속성 jboss.default.multicast.address 를 설정합니다. 값이 지정되지 않은 경우 기본값은 230.0.0.4 입니다.

-v, -V, --version

독립 실행형 도메인

애플리케이션 서버 버전을 표시하고 종료합니다.

주의

JBoss EAP와 함께 제공되는 구성 파일은 스위치의 동작을 처리하도록 설정됩니다(예: -b-u ). 스위치에서 제어하는 시스템 속성을 더 이상 사용하지 않도록 구성 파일을 변경하면 launch 명령에 추가해도 적용되지 않습니다.

A.2. RPM 서비스 구성 파일

JBoss EAP의 RPM 설치에는 ZIP 또는 설치 관리자 설치에 비해 두 가지 추가 구성 파일이 포함되어 있습니다. 이러한 파일은 서비스 init 스크립트에서 JBoss EAP 시작 환경을 지정하는 데 사용됩니다. Red Hat Enterprise Linux 6 및 Red Hat Enterprise Linux 7의 경우 이러한 서비스 구성 파일의 위치는 다릅니다.

중요

Red Hat Enterprise Linux 7의 경우 RPM 서비스 구성 파일은 systemd 를 사용하여 로드되므로 변수 표현식은 확장되지 않습니다.

Expand
표 A.2. RPM Configuration Files for Red Hat Enterprise Linux 6
파일설명

/etc/sysconfig/eap7-standalone

Red Hat Enterprise Linux 6의 독립 실행형 JBoss EAP 서버와 관련된 설정입니다.

/etc/sysconfig/eap7-domain

Red Hat Enterprise Linux 6에서 관리형 도메인으로 실행되는 JBoss EAP와 관련된 설정입니다.

Expand
표 A.3. RPM Configuration Files for Red Hat Enterprise Linux 7
파일설명

/etc/opt/rh/eap7/wildfly/eap7-standalone.conf

Red Hat Enterprise Linux 7의 독립 실행형 JBoss EAP 서버와 관련된 설정입니다.

/etc/opt/rh/eap7/wildfly/eap7-domain.conf

Red Hat Enterprise Linux 7에서 관리형 도메인으로 실행되는 JBoss EAP와 관련된 설정입니다.

A.3. RPM 서비스 구성 속성

다음 표에서는 JBoss EAP RPM 서비스에 사용 가능한 구성 속성 목록과 기본값을 보여줍니다.

참고

속성의 이름이 RPM 서비스 구성 파일(예: /etc/sysconfig/eap7-standalone)과 JBoss EAP 시작 구성 파일(예: EAP_HOME/bin/standalone.conf)에 있는 경우 우선 순위를 사용하는 값은 JBoss EAP 시작 구성 파일의 값입니다. 이러한 속성 중 하나는 JAVA_HOME 입니다.

Expand
표 A.4. RPM 서비스 구성 속성
속성설명

JAVA_HOME

Java 런타임 환경이 설치된 디렉터리입니다.

기본값: /usr/lib/jvm/jre

JAVAPTH

Java 실행 파일이 설치된 경로입니다.

기본값: $JAVA_HOME/bin

WILDFLY_STARTUP_WAIT

init 스크립트가 start 또는 restart 명령을 수신한 후 서버가 성공적으로 시작되었는지 확인할 때까지 대기하는 시간(초)입니다. 이 속성은 Red Hat Enterprise Linux 6에만 적용됩니다.

기본값: 60

WILDFLY_SHUTDOWN_WAIT

init 스크립트에서 stop 또는 restart 명령을 수신할 때 서버가 종료될 때까지 대기하는 시간(초)입니다. 이 속성은 Red Hat Enterprise Linux 6에만 적용됩니다.

기본값: 20

WILDFLY_CONSOLE_LOG

CONSOLE 로그 처리기가 리디렉션되는 파일입니다.

기본값: /var/opt/rh/eap7/log/log/wildfly/standalone/console.log 또는 관리형 도메인의 경우 /var/opt/rh/eap7/log/domain.log.log 입니다.

WILDFLY_SH

JBoss EAP 서버를 시작하는 데 사용되는 스크립트입니다.

기본값은 독립 실행형 서버의 /opt/rh/eap7/root/usr/share/wildfly/bin/standalone.sh 또는 관리형 도메인의 경우 /opt/rh/eap7/root/usr/share/wildfly/bin/domain.sh 입니다.

WILDFLY_SERVER_CONFIG

사용할 서버 구성 파일입니다.

이 속성에는 기본값이 없습니다. standalone.xml 또는 domain.xml 은 시작 시 정의할 수 있습니다.

WILDFLY_HOST_CONFIG

관리형 도메인의 경우 이 속성을 사용하면 호스트 구성 파일(예: host.xml)을 지정할 수 있습니다. 이 값은 기본값으로 설정되지 않습니다.

WILDFLY_MODULEPATH

JBoss EAP 모듈 디렉터리의 경로입니다.

기본값: /opt/rh/eap7/root/usr/share/wildfly/modules

WILDFLY_BIND

공용 인터페이스의 바인딩 주소를 구성하는 데 사용되는 jboss.bind.address 시스템 속성을 설정합니다. 값이 지정되지 않은 경우 기본값은 0.0.0.0 입니다.

A.4. JBoss EAP의 개요

아래 표는 JBoss EAP 하위 시스템에 대한 간략한 설명입니다.

Expand
표 A.5. JBoss EAP Cryostats
JBoss EAP Cryostat설명

batch-jberet

배치 애플리케이션을 실행하고 배치 작업을 관리하기 위한 환경을 구성합니다.

Cryostat-validation

Java 개체 데이터의 유효성 을 검사하기 위해 Cryostat 유효성 검사를 구성합니다.

데이터 소스

데이터 소스를 생성 및 구성하고 JDBC 데이터베이스 드라이버를 관리합니다.

deployment-scanner

배포할 애플리케이션의 특정 위치를 모니터링하도록 배포 스캐너 를 구성합니다.

ee

글로벌 모듈 정의, 설명자 기반 속성 교체 활성화, 기본 바인딩 구성과 같은 Java EE 플랫폼에서 공통 기능을 구성합니다.

ejb3

세션 및 메시지 기반 빈을 포함하여 Enterprise JavaBeans(EJB) 구성.

Cryostat 3 하위 시스템에 대한 자세한 내용은 Developing Ethernet Applications for JBoss EAP에서 참조하십시오.

iiop-openjdk

JTS 트랜잭션에 대한 CORBA(Common Object Request Broker Architecture) 서비스 및 보안을 포함한 기타 ORB 서비스를 구성합니다. JBoss EAP 6에서 이 기능은 jacorb 하위 시스템에 포함되어 있었습니다.

Infinispan

JBoss EAP 고가용성 서비스를 위한 캐싱 기능을 구성합니다.

io

다른 하위 시스템에서 사용할 작업자버퍼 풀 을 정의합니다.

jaxrs

Cryostat-RS 애플리케이션의 배포 및 기능을 활성화합니다.

jca

JCA(Java EE Connector Architecture) 컨테이너 및 리소스 어댑터 배포에 대한 일반 설정을 구성합니다.

jdr

문제 해결에 도움이 되도록 진단 데이터를 수집할 수 있습니다. JBoss EAP 구독자는 지원을 요청할 때 Red Hat에 이 정보를 제공할 수 있습니다.

Cryostat

클러스터의 서버가 서로 통신하는 방법에 대한 프로토콜 스택 및 통신 메커니즘 을 구성합니다.

jmx

원격 JVM(Java Management Extensions) 액세스를 구성합니다.

jpa

JPA(Java Persistence API) 2.1 컨테이너 관리 요구 사항을 관리하고 영구 단위 정의, 주석 및 설명자를 배포할 수 있습니다.

jpa 하위 시스템에 대한 자세한 내용은 JBoss EAP 개발 가이드에서 확인할 수 있습니다.

jsf

JSF(JavaServer#159) 구현을 관리합니다.

jsr77

Cryostat -77 사양에 정의된 Java EE 관리 기능을 제공합니다.

logging

로그 카테고리 및 로그 처리기 시스템을 통해 시스템 및 애플리케이션 수준 로깅을 구성합니다.

mail

JBoss EAP에 배포한 애플리케이션이 해당 서비스를 사용하여 이메일을 보낼 수 있는 메일 서비스를 생성하도록 메일 서버 속성사용자 지정 메일 전송을 구성합니다.

messaging-activemq

통합 메시징 공급자인 Artemis의 JMS 대상, 연결 팩토리 및 기타 설정을 구성합니다. JBoss EAP 6에서는 메시징 기능이 메시징 하위 시스템에 포함되어 있었습니다.

messaging-activemq 하위 시스템에 대한 자세한 내용은 JBoss EAP에 대한 메시징 구성에서 확인할 수 있습니다.

modcluster

서버 측 mod_cluster 작업자 노드를 구성합니다.

이름 지정

항목을 글로벌 JNDI 네임스페이스에 바인딩하고 원격 JNDI 인터페이스를 구성합니다.

picketlink-federation

CryostatetLink SAML 기반 SSO(Single Sign-On)를 구성합니다.

picketlink-federation 하위 시스템에 대한 자세한 내용은 How to Set Up SSO with SAML v2 for JBoss EAP에서 참조하십시오.

picketlink-identity-management

CryostatetLink ID 관리 서비스를 구성합니다. 이 하위 시스템은 지원되지 않습니다.

Cryostat

이전 버전의 JBoss EAP에서 지원하는 대로 JBoss Microcontainer 서비스가 포함된 애플리케이션을 배포할 수 있습니다.

Remoting

로컬 및 원격 서비스에 대한 인바운드 및 아웃바운드 연결에 대한 설정을 구성합니다.

request-controller

서버를 정상적으로 일시 중단 및 종료 하도록 설정을 구성합니다.

resource-adapters

JCA(Java Connector Architecture) 사양을 사용하여 Java EE 애플리케이션과 EIS(Enterprise Information System) 간의 통신을 위한 리소스 어댑터 를 구성하고 유지 관리합니다.

RTS

REST-AT 구현이 지원되지 않습니다.

SAR

이전 버전의 JBoss EAP에서 지원하는 대로 Cryostat 서비스가 포함된 SAR 아카이브 배포를 활성화합니다.

보안

애플리케이션 보안 설정을 구성합니다.

보안 하위 시스템에 대한 자세한 내용은 JBoss EAP의 보안 아키텍처에서 확인할 수 있습니다.

security-manager

Java Security Manager에서 사용할 Java 보안 정책을 구성합니다.

security-manager 하위 시스템에 대한 자세한 내용은 How to Configure Server Security for JBoss EAP에서 참조하십시오.

싱글톤

Singleton 정책을 정의하여 Singleton 배포 동작을 구성하거나 Singleton MSC 서비스를 생성합니다.

Singleton 하위 시스템에 대한 자세한 내용은 JBoss EAP 개발 가이드에서 확인할 수 있습니다.

트랜잭션

시간 초과 값, 트랜잭션 로깅 및 JTS(Java Transaction Service) 사용 여부와 같은 트랜잭션 관리자 옵션을 구성합니다.

Cryostat

JBoss EAP의 웹 서버 및 서블릿 컨테이너 설정을 구성합니다. JBoss EAP 6에서 이 기능은 하위 시스템에 포함되어 있었습니다.

WebServices

웹 서비스 공급자에 대해 게시된 엔드포인트 주소 및 엔드포인트 처리기 체인과 호스트 이름, 포트, WSDL 주소를 구성합니다.

웹 서비스 하위 시스템에 대한 자세한 내용은 JBoss EAP용 웹 서비스 애플리케이션 개발에서 확인할 수 있습니다.

weld

JBoss EAP에 대한 컨텍스트 및 종속성(CDI) 기능을 구성합니다.

XTS

트랜잭션에서 웹 서비스를 조정하기 위한 설정을 구성합니다.

A.5. 사용자 유틸리티 인수 추가

다음 표에서는 기본 제공 인증을 위해 새 사용자를 속성 파일에 추가하는 유틸리티인 add-user.sh 또는 add -user.batch 스크립트에 사용할 수 있는 인수를 설명합니다.

Expand
표 A.6. 추가-사용자 명령 인수
명령줄 인수설명

-a

애플리케이션 영역에 사용자를 생성합니다. 생략하면 기본값은 관리 영역에 사용자를 생성하는 것입니다.

-dc <value>

속성 파일을 포함할 도메인 구성 디렉터리입니다. 생략된 경우 기본 디렉터리는 EAP_HOME/domain/configuration/ 입니다.

-sc <value>

속성 파일을 포함할 대체 독립 실행형 서버 구성 디렉터리입니다. 생략하면 기본 디렉터리는 EAP_HOME/standalone/configuration/ 입니다.

-up, --user-properties <value>

대체 사용자 속성 파일의 이름입니다. 절대 경로이거나 대체 구성 디렉터리를 지정하는 -sc 또는 -dc 인수와 함께 사용되는 파일 이름일 수 있습니다.

-g, --group <value>

이 사용자에게 할당할 쉼표로 구분된 그룹 목록입니다.

-gp, --group-properties <value>

대체 그룹 속성 파일의 이름입니다. 절대 경로이거나 대체 구성 디렉터리를 지정하는 -sc 또는 -dc 인수와 함께 사용되는 파일 이름일 수 있습니다.

-p, --password <value>

사용자의 암호입니다.

-u, --user <value>

사용자의 이름입니다. 영숫자 및 다음 기호만 유효합니다 . ,/=@\.

-r, --realm <value>

관리 인터페이스를 보호하는 데 사용되는 영역의 이름입니다. 생략하면 기본값은 ManagementRealm 입니다.

-s, --silent

콘솔에 대한 출력 없이 add-user 스크립트를 실행합니다.

-e, --enable

사용자를 활성화합니다.

-d, --disable

사용자를 비활성화합니다.

-cw, --confirm-warning

대화형 모드에서 경고를 자동으로 확인합니다.

-h, --help

add-user 스크립트에 대한 사용 정보를 표시합니다.

A.6. 관리 감사 로깅 속성

Expand
표 A.7. 로거 속성
속성설명

enabled

감사 로깅이 활성화되었는지 여부입니다.

log-boot

서버 부팅 시 작업을 로깅해야 하는지 여부입니다.

log-read-only

구성을 수정하지 않는 작업 또는 런타임 서비스를 로깅해야 하는지 여부입니다.

Expand
표 A.8. 로그 포맷 속성
속성설명

compact

true 인 경우 JSON을 한 줄로 포맷합니다. 새 행이 포함된 값이 계속 있을 수 있으므로 한 줄에 전체 레코드가 중요한 경우 escape-new-line 또는 escape-control-characterstrue 로 설정합니다.

date-format

java.text.SimpleDateFormat 에서 이해한 대로 사용할 날짜 형식입니다. include-datefalse 로 설정된 경우 이 문제는 무시됩니다.

date-separator

날짜와 형식의 나머지 로그 메시지 사이의 구분 기호입니다. include-datefalse 로 설정된 경우 이 문제는 무시됩니다.

escape-control-characters

true 인 경우 8진수의 ASCII 코드를 사용하여 모든 제어 문자(의 10진수 값이 32인 ASCII 항목)를 이스케이프합니다. 예를 들어 새 행은 #012 가 됩니다. true 인 경우 escape-new-line=false를 덮어씁니다.

escape-new-line

true 인 경우 8tal: #012 의 ASCII 코드가 있는 모든 새 행을 이스케이프합니다.

include-date

포맷된 로그 레코드에 날짜를 포함할지 여부입니다.

Expand
표 A.9. 파일 핸들러 속성
속성설명

disabled-due-to-failure

로깅 실패로 인해 이 처리기가 비활성화되었는지 여부(읽기 전용).

failure-count

처리기가 초기화된 이후 로깅 실패 수(읽기 전용)입니다.

포맷터

로그 메시지를 포맷하는 데 사용되는 JSON 포맷터입니다.

max-failure-count

이 처리기를 비활성화하기 전에 최대 로깅 실패 수입니다.

path

감사 로그 파일의 경로입니다.

relative-to

이전에 이름이 지정된 다른 경로의 이름 또는 시스템에서 제공하는 표준 경로 중 하나입니다. relative-to 가 제공되면 경로 특성의 값이 이 특성에서 지정한 경로와 상대적인 것으로 처리됩니다.

Expand
표 A.10. Syslog Handler 특성
속성설명

app-name

RFC-5424 의 섹션 6.2.5에 정의된 대로 syslog 레코드에 추가할 애플리케이션 이름입니다. 지정하지 않으면 기본적으로 제품 이름이 설정됩니다.

disabled-due-to-failure

로깅 실패로 인해 이 처리기가 비활성화되었는지 여부(읽기 전용).

facility

RFC-5424 의 섹션 6.2.1 및 RFC-3164 섹션 4.1.1에 정의된 대로 syslog 로깅에 사용하는 기능입니다.

failure-count

처리기가 초기화된 이후 로깅 실패 수(읽기 전용)입니다.

포맷터

로그 메시지를 포맷하는 데 사용되는 JSON 포맷터입니다.

max-failure-count

이 처리기를 비활성화하기 전에 최대 로깅 실패 수입니다.

max-length

헤더를 포함하여 로그 메시지의 최대 길이(바이트)가 허용됩니다. 정의되지 않은 경우 syslog-format이 RFC3164 인 경우 1024 바이트 또는 syslog-format RFC5424 인 경우 2048 바이트로 설정됩니다.

프로토콜

syslog 처리기에 사용할 프로토콜입니다. udp,tcp 또는 tls 중 하나여야 합니다.

syslog-format

syslog 형식: RFC5424 또는 RFC3164.

truncate

헤더를 포함하는 메시지인지 여부에 관계없이 길이(바이트)가 max-length 특성 값보다 크면 메시지를 자릅니다. false 로 설정하면 메시지가 분할되고 동일한 헤더 값으로 전송됩니다.

참고

syslog 서버는 구현 시 다를 수 있으므로 일부 설정이 모든 syslog 서버에 적용되는 것은 아닙니다. 테스트는 rsyslog syslog 구현을 사용하여 수행되었습니다.

이 테이블에는 상위 수준 속성만 나열됩니다. 각 속성에는 구성 매개 변수가 있으며 일부는 하위 구성 매개 변수가 있습니다.

A.7. 인터페이스 속성

Expand
표 A.11. 인터페이스 속성 및 값
인터페이스 요소설명

Any

인터페이스에 대한 선택 기준의 일부가 중첩된 기준 집합의 하나 이상이지만 반드시 all은 충족함을 나타내는 요소입니다.

any-address

이 인터페이스를 사용하는 소켓이 와일드카드 주소에 바인딩되어야 함을 나타내는 빈 요소입니다. java.net.preferIPv4Stack 시스템 속성이 true로 설정되지 않는 한 IPv6 와일드카드 주소(::)가 사용됩니다. 이 경우 IPv4 와일드카드 주소(0.0.0.0)가 사용됩니다. 소켓이 듀얼 스택 시스템의 IPv6 anylocal 주소에 바인딩된 경우 IPv6 및 IPv4 트래픽을 모두 허용할 수 있습니다. IPv4(IPv4-mapped) 모든 로컬 주소에 바인딩된 경우 IPv4 트래픽만 허용할 수 있습니다.

inet-address

IPv6 또는 IPv4 점선 표기법의 IP 주소 또는 IP 주소로 확인할 수 있는 호스트 이름입니다.

link-local-address

인터페이스에 대한 선택 기준의 일부가 링크 로컬인지 여부를 나타내는 빈 요소입니다.

loopback

인터페이스에 대한 선택 기준의 일부가 루프백 인터페이스인지 여부를 나타내는 빈 요소입니다.

loopback-address

시스템의 루프백 인터페이스에 실제로 구성되지 않을 수 있는 루프백 주소입니다. 연결된 IP 주소가 있는 NIC를 찾을 수 없는 경우에도 지정된 값이 사용된다는 점에서 inet-address 유형과 다릅니다.

멀티 캐스트

인터페이스에 대한 선택 기준의 일부가 멀티 캐스트를 지원하는지 여부를 나타내는 빈 요소입니다.

NIC

네트워크 인터페이스의 이름(예: eth0, eth1, lo)입니다.

NIC-match

사용 가능한 인터페이스를 찾기 위해 시스템에서 사용 가능한 네트워크 인터페이스 이름을 일치시킬 수 있는 정규식입니다.

해당 없음

인터페이스에 대한 선택 기준의 일부가 기준의 중첩된 집합을 충족하지 않음을 나타내는 요소입니다.

point-to-point

인터페이스에 대한 선택 기준의 일부가 지점 간 인터페이스인지 여부를 나타내는 빈 요소입니다.

public-address

인터페이스에 대한 선택 기준의 일부가 공개적으로 라우팅 가능한 주소가 있는지 여부를 나타내는 빈 요소입니다.

site-local-address

인터페이스에 대한 선택 기준의 일부가 site-local인지 여부를 나타내는 빈 요소입니다.

subnet-match

슬래시 표기법 (예: 192.168.0.0/16)으로 작성된 주소의 네트워크 IP 주소 및 주소의 비트 수입니다.

up

인터페이스에 대한 선택 기준의 일부가 현재 작동 중인지 여부를 나타내는 빈 요소입니다.

가상

인터페이스에 대한 선택 기준의 일부가 가상 인터페이스인지 여부를 나타내는 빈 요소입니다.

A.8. 소켓 바인딩 속성

Expand
표 A.12. 소켓 바인딩 속성
속성설명

client-mappings

이 소켓 바인딩의 클라이언트 매핑을 지정합니다. 이 소켓에 연결하는 클라이언트는 원하는 아웃 바운드 인터페이스와 일치하는 매핑에 지정된 대상 주소를 사용해야 합니다. 이를 통해 네트워크 주소 변환을 사용하거나 여러 네트워크 인터페이스에 바인딩이 작동하는 고급 네트워크 토폴로지를 사용할 수 있습니다. 각 매핑은 선언된 순서로 평가되어야 하며 첫 번째 성공적인 일치는 대상을 결정하는 데 사용됩니다.

고정 포트

소켓 그룹의 다른 소켓에 숫자 오프셋이 적용되는 경우에도 포트 값이 고정되어야 하는지 여부입니다.

인터페이스

소켓을 바인딩해야 하는 인터페이스의 이름 또는 멀티캐스트 소켓의 경우 수신 대기해야 하는 인터페이스의 이름입니다. 선언된 인터페이스 중 하나여야 합니다. 정의되지 않은 경우 enclosing 소켓 바인딩 그룹의 default-interface 속성 값이 사용됩니다.

multicast-address

소켓이 멀티 캐스트 트래픽을 수신해야 하는 멀티 캐스트 주소입니다. 지정되지 않은 경우 소켓은 멀티 캐스트를 수신하도록 구성되지 않습니다.

multicast-port

소켓에서 멀티 캐스트 트래픽을 수신해야 하는 포트입니다. 'multicast-address'가 구성된 경우 구성해야 합니다.

name

소켓의 이름입니다. 소켓 구성 정보에 액세스해야 하는 서비스는 이 이름을 사용하여 찾을 수 있습니다. 이 속성은 필수입니다.

port

소켓을 바인딩해야 하는 포트 수입니다. 서버가 port-offset을 적용하여 모든 포트 값을 늘리거나 감소하면 이 값을 덮어쓸 수 있습니다.

A.9. 기본 소켓 바인딩

Expand
표 A.13. 기본 소켓 바인딩
이름포트멀티 캐스트 포트설명소켓 바인딩 그룹

ajp

8009

 

Apache JServ 프로토콜. HTTP 클러스터링 및 로드 밸런싱에 사용됩니다.

standard-sockets, ha-sockets, full-sockets, full-ha-sockets

http

8080

 

배포된 웹 애플리케이션의 기본 포트입니다.

standard-sockets, ha-sockets, full-sockets, full-ha-sockets

https

8443

 

배포된 웹 애플리케이션과 클라이언트 간의 SSL 암호화 연결.

standard-sockets, ha-sockets, full-sockets, full-ha-sockets

IIOP

3528

 

JTS 트랜잭션 및 기타 ORB 종속 서비스를 위한 CORBA 서비스.

full-sockets, full-ha-sockets

iiop-ssl

3529

 

SSL 암호화 CORBA 서비스.

full-sockets, full-ha-sockets

Cryostat-mping

 

45700

멀티 캐스트. HA 클러스터에서 초기 멤버십을 검색하는 데 사용됩니다.

ha-sockets, full-ha-sockets

jgroups-tcp

7600

 

TCP를 사용하는 HA 클러스터에서 유니캐스트 피어 검색.

ha-sockets, full-ha-sockets

jgroups-tcp-fd

57600

 

TCP를 통한 HA 장애 탐지에 사용됩니다.

ha-sockets, full-ha-sockets

jgroups-udp

55200

45688

UDP를 사용하는 HA 클러스터에서 멀티 캐스트 피어 검색.

ha-sockets, full-ha-sockets

jgroups-udp-fd

54200

 

UDP를 통한 HA 오류 감지에 사용됩니다.

ha-sockets, full-ha-sockets

management-http

9990

 

관리 계층과의 HTTP 통신에 사용됩니다.

standard-sockets, ha-sockets, full-sockets, full-ha-sockets

management-https

9993

 

관리 계층과의 HTTPS 통신에 사용됩니다.

standard-sockets, ha-sockets, full-sockets, full-ha-sockets

modcluster

 

23364

JBoss EAP와 HTTP 로드 밸런서 간의 통신을 위한 멀티 캐스트 포트입니다.

ha-sockets, full-ha-sockets

txn-recovery-environment

4712

 

JTA 트랜잭션 복구 관리자입니다.

standard-sockets, ha-sockets, full-sockets, full-ha-sockets

txn-status-manager

4713

 

JTA / JTS 트랜잭션 관리자입니다.

standard-sockets, ha-sockets, full-sockets, full-ha-sockets

A.10. 배포 스캐너 마크 파일

마커 파일은 배포 스캐너에서 JBoss EAP 서버 인스턴스의 배포 디렉터리 내에서 애플리케이션 상태를 표시하는 데 사용됩니다. 마커 파일의 이름은 배포 이름과 같으며 파일 접미사는 애플리케이션 배포 상태를 나타냅니다.

예를 들어 test-application.war 를 성공적으로 배포하면 test-application.war.deployed 라는 마커 파일이 있습니다.

다음 표에는 사용 가능한 마커 파일 유형과 해당 의미가 나열되어 있습니다.

Expand
표 A.14. 마커 파일 유형
파일 이름 Suffixorigin설명

.deployed

시스템 생성

콘텐츠가 배포되었음을 나타냅니다. 이 파일이 삭제되면 콘텐츠가 배포 취소됩니다.

.dodeploy

사용자 생성

콘텐츠를 배포하거나 재배포해야 함을 나타냅니다.

.failed

시스템 생성

배포 실패를 나타냅니다. 마커 파일에는 오류 원인에 대한 정보가 포함되어 있습니다. 마커 파일이 삭제되면 콘텐츠가 다시 자동 배포될 수 있습니다.

.isdeploying

시스템 생성

배포가 진행 중임을 나타냅니다. 이 마커 파일은 완료되면 삭제됩니다.

.isundeploying

시스템 생성

.deployed 파일을 삭제하여 트리거되면 콘텐츠가 배포 취소됨을 나타냅니다. 이 마커 파일은 완료되면 삭제됩니다.

.pending

시스템 생성

배포 스캐너가 콘텐츠를 배포할 필요성을 인식하지만 현재 문제는 자동 배포가 방지됩니다(예: 콘텐츠가 복사 중인 프로세스인 경우). 이 마커는 글로벌 배포 로드맵 블록 역할을 합니다. 즉, 스캐너는 이 마커 파일이 존재하는 동안 콘텐츠를 배포하거나 배포 취소하도록 지시하지 않습니다.

.skipdeploy

사용자 생성

존재하는 동안 애플리케이션의 자동 배포를 비활성화합니다. 부끄러운 콘텐츠의 자동 배포를 일시적으로 차단하는 방법으로서 불완전한 콘텐츠 편집 위험을 방지할 수 있습니다. 압축된 콘텐츠와 함께 사용할 수 있지만 스캐너가 진행 중인 콘텐츠를 감지하여 압축된 콘텐츠가 변경되고 완료될 때까지 대기합니다.

.undeployed

시스템 생성

콘텐츠가 배포 취소되었음을 나타냅니다. 이 마커 파일을 삭제해도 콘텐츠 재배포에는 영향을 미치지 않습니다.

A.11. 배포 스캐너 속성

배포 스캐너에는 다음과 같은 구성 가능한 속성이 포함되어 있습니다.

Expand
표 A.15. 배포 스캐너 속성
이름기본설명

auto-deploy-exploded

false

.dodeploy 마커 파일 없이도 무의미한 콘텐츠를 자동으로 배포할 수 있습니다. 개발자 또는 운영 체제의 변경 중에 애플리케이션 배포가 발생하지 않도록 하려면 기본 개발 시나리오만 권장됩니다.

auto-deploy-xml

true

.dodeploy 마커 파일 없이도 XML 콘텐츠를 자동으로 배포할 수 있습니다.

auto-deploy-zipped

true

.dodeploy 마커 파일 없이도 압축된 콘텐츠를 자동으로 배포할 수 있습니다.

deployment-timeout

600

배포 스캐너가 취소되기 전에 배포 시도를 허용하는 시간(초)입니다.

path

배포

검사할 실제 파일 시스템 경로입니다. relative-to 특성이 지정되지 않는 한 절대 경로로 취급되며, 이 경우 해당 경로의 값을 기준으로 취급됩니다.

relative-to

jboss.server.base.dir

서버 구성에서 경로로 정의된 파일 시스템 경로에 대한 참조입니다.

runtime-failure-causes-rollback

false

런타임 배포 실패 여부에 관계없이 검사 작업의 일부로 배포 롤백 및 기타 모든(비관계되지 않은) 배포가 발생할 수 있습니다.

scan-enabled

true

스캔 간격과 시작 시 애플리케이션을 자동으로 스캔 할 수 있습니다.

scan-interval

5000

리포지토리의 변경 사항을 스캔해야 하는 시간 간격(밀리초)입니다. 값이 1 미만이면 초기 시작 시만 검사가 수행됩니다.

A.12. 메일 Cryostat 속성

다음 표에서는 메일 세션용 메일 하위 시스템의 특성과 다음 메일 서버 유형에 대해 설명합니다.

Expand
표 A.16. 메일 세션 속성
속성설명

debug

Java Cryostat 디버깅을 활성화할지 여부입니다.

from

전송 시 설정되지 않은 경우 사용할 기본 "from" 주소입니다.

JNDI-name

메일 세션을 바인딩해야 하는 JNDI 이름입니다.

Expand
표 A.17. Cryostat 메일 서버 속성
속성설명

outbound-socket-binding-ref

메일 서버의 아웃바운드 소켓 바인딩에 대한 참조입니다.

암호

서버에서 인증할 암호입니다.

ssl

서버에 SSL이 필요한지 여부입니다.

tls

서버에 TLS가 필요한지 여부입니다.

사용자 이름

서버에서 인증할 사용자 이름입니다.

Expand
표 A.18. POP3 메일 서버 속성
속성설명

outbound-socket-binding-ref

메일 서버의 아웃바운드 소켓 바인딩에 대한 참조입니다.

암호

서버에서 인증할 암호입니다.

ssl

서버에 SSL이 필요한지 여부입니다.

tls

서버에 TLS가 필요한지 여부입니다.

사용자 이름

서버에서 인증할 사용자 이름입니다.

Expand
표 A.19. SMTP 메일 서버 속성
속성설명

outbound-socket-binding-ref

메일 서버의 아웃바운드 소켓 바인딩에 대한 참조입니다.

암호

서버에서 인증할 암호입니다.

ssl

서버에 SSL이 필요한지 여부입니다.

tls

서버에 TLS가 필요한지 여부입니다.

사용자 이름

서버에서 인증할 사용자 이름입니다.

Expand
표 A.20. 사용자 정의 메일 서버 속성
속성설명

outbound-socket-binding-ref

메일 서버의 아웃바운드 소켓 바인딩에 대한 참조입니다.

암호

서버에서 인증할 암호입니다.

속성

이 서버의 Java Cryostat 속성입니다.

ssl

서버에 SSL이 필요한지 여부입니다.

tls

서버에 TLS가 필요한지 여부입니다.

사용자 이름

서버에서 인증할 사용자 이름입니다.

A.13. 루트 로거 속성

Expand
표 A.21. 루트 로거 속성
속성설명

filter

간단한 필터 유형을 정의합니다. filter-spec 대신 더 이상 사용되지 않습니다.

filter-spec

필터를 정의하는 표현식 값입니다. 다음 표현식은 패턴과 일치하지 않는 로그 항목을 제외하는 필터를 정의합니다. not(match("WFLY.*")).

처리기

루트 로거에서 사용하는 로그 처리기 목록입니다.

level

루트 로거가 기록한 로그 메시지의 가장 낮은 수준입니다.

참고

루트 로거에 대해 지정된 필터 사양 은 다른 처리기에서 상속하지 않습니다. 대신 처리기당 필터 사양 을 지정해야 합니다.

A.14. 로그 카테고리 속성

Expand
표 A.22. 로그 카테고리 속성
속성설명

카테고리

로그 메시지를 캡처할 로그 카테고리입니다.

filter

간단한 필터 유형을 정의합니다. filter-spec 대신 더 이상 사용되지 않습니다.

filter-spec

필터를 정의하는 표현식 값입니다. 다음 표현식은 패턴과 일치하지 않는 필터를 정의합니다. not(match("WFLY.*"))

처리기

로거와 관련된 로그 처리기 목록입니다.

level

로그 카테고리가 기록한 로그 메시지의 가장 낮은 수준입니다.

use-parent-handlers

true 로 설정하면 이 카테고리는 할당된 다른 핸들러 외에도 루트 로거의 로그 처리기를 사용합니다.

A.15. 로그 처리기 속성

Expand
표 A.23. 콘솔 로그 처리기 속성
속성설명

autoflush

true 로 설정하면 로그 메시지가 수신 시 즉시 할당된 핸들러로 전송됩니다.

enabled

true 로 설정하면 처리기가 활성화되고 정상적으로 작동합니다. false 로 설정하면 로그 메시지를 처리할 때 처리기가 무시됩니다.

인코딩

출력에 사용할 문자 인코딩 스키마입니다.

filter

간단한 필터 유형을 정의합니다. filter-spec 대신 더 이상 사용되지 않습니다.

filter-spec

필터를 정의하는 표현식 값입니다. 다음 표현식은 패턴과 일치하지 않는 필터를 정의합니다. not(match("WFLY.*"))

포맷터

이 로그 처리기에서 사용하는 로그 포맷터입니다.

level

로그 처리기 레코드에서 로그 메시지 가장 낮은 수준입니다.

name

로그 처리기의 이름입니다. 처리기의 주소에는 이름이 포함되어 있으므로 더 이상 사용되지 않습니다.

named-formatter

처리기에서 사용할 정의된 포맷터의 이름입니다.

target

로그 처리기의 출력이 이동하는 시스템 출력 스트림입니다. 시스템 오류 스트림의 경우 System.err 또는 System.out 또는 각각 표준 아웃 스트림이 될 수 있습니다.

Expand
표 A.24. 파일 로그 처리기 속성
속성설명

추가

true 로 설정하면 이 처리기에서 작성한 모든 메시지가 이미 존재하는 경우 파일에 추가됩니다. false 로 설정하면 애플리케이션 서버가 시작될 때마다 새 파일이 생성됩니다.

autoflush

true 로 설정하면 로그 메시지가 수신 시 즉시 할당된 핸들러로 전송됩니다.

enabled

true 로 설정하면 처리기가 활성화되고 정상적으로 작동합니다. false 로 설정하면 로그 메시지를 처리할 때 처리기가 무시됩니다.

인코딩

출력에 사용할 문자 인코딩 스키마입니다.

file

이 로그 처리기의 출력이 기록된 파일을 나타내는 오브젝트입니다. 두 개의 구성 속성인 relative-topath 가 있습니다.

filter

간단한 필터 유형을 정의합니다. filter-spec 대신 더 이상 사용되지 않습니다.

filter-spec

필터를 정의하는 표현식 값입니다. 다음 표현식은 패턴과 일치하지 않는 필터를 정의합니다. not(match("WFLY.*"))

포맷터

이 로그 처리기에서 사용하는 로그 포맷터입니다.

level

로그 처리기 레코드에서 로그 메시지 가장 낮은 수준입니다.

name

로그 처리기의 이름입니다. 처리기의 주소에는 이름이 포함되어 있으므로 더 이상 사용되지 않습니다.

named-formatter

처리기에서 사용할 정의된 포맷터의 이름입니다.

Expand
표 A.25. 정기 로그 처리기 속성
속성설명

추가

true 로 설정하면 이 처리기에서 작성한 모든 메시지가 이미 존재하는 경우 파일에 추가됩니다. false 로 설정하면 애플리케이션 서버가 시작될 때마다 새 파일이 생성됩니다.

autoflush

true 로 설정하면 로그 메시지가 수신 시 즉시 할당된 핸들러로 전송됩니다.

enabled

true 로 설정하면 처리기가 활성화되고 정상적으로 작동합니다. false 로 설정하면 로그 메시지를 처리할 때 처리기가 무시됩니다.

인코딩

출력에 사용할 문자 인코딩 스키마입니다.

file

이 로그 처리기의 출력이 기록되는 파일을 나타내는 오브젝트입니다. 두 개의 구성 속성인 relative-topath 가 있습니다.

filter

간단한 필터 유형을 정의합니다. filter-spec 대신 더 이상 사용되지 않습니다.

filter-spec

필터를 정의하는 표현식 값입니다. 다음 표현식은 패턴과 일치하지 않는 필터를 정의합니다. not(match("WFLY.*") ).

포맷터

이 로그 처리기에서 사용하는 로그 포맷터입니다.

level

로그 처리기 레코드에서 로그 메시지 가장 낮은 수준입니다.

name

로그 처리기의 이름입니다. 처리기의 주소에는 이름이 포함되어 있으므로 더 이상 사용되지 않습니다.

named-formatter

처리기에서 사용할 정의된 포맷터의 이름입니다.

suffix

이 문자열은 순환된 로그에 추가된 접미사에 포함됩니다. 접미사 형식은 점(.) 뒤에 SimpleDateFormat 클래스에서 구문 분석할 수 있는 날짜 문자열이 있습니다.

Expand
표 A.26. 크기 로그 처리기 속성
속성설명

추가

true 로 설정하면 이 처리기에서 작성한 모든 메시지가 이미 존재하는 경우 파일에 추가됩니다. false 로 설정하면 애플리케이션 서버가 시작될 때마다 새 파일이 생성됩니다.

autoflush

true 로 설정하면 로그 메시지가 수신 시 즉시 할당된 핸들러로 전송됩니다.

enabled

true 로 설정하면 처리기가 활성화되고 정상적으로 작동합니다. false 로 설정하면 로그 메시지를 처리할 때 처리기가 무시됩니다.

인코딩

출력에 사용할 문자 인코딩 스키마입니다.

file

이 로그 처리기의 출력이 기록된 파일을 나타내는 오브젝트입니다. 두 개의 구성 속성인 relative-topath 가 있습니다.

filter

간단한 필터 유형을 정의합니다. filter-spec 대신 더 이상 사용되지 않습니다.

filter-spec

필터를 정의하는 표현식 값입니다. 다음 표현식은 패턴과 일치하지 않는 필터를 정의합니다. not(match("WFLY.*"))

포맷터

이 로그 처리기에서 사용하는 로그 포맷터입니다.

level

로그 처리기 레코드에서 로그 메시지 가장 낮은 수준입니다.

max-backup-index

유지되는 최대 순환 로그 수입니다. 이 수에 도달하면 가장 오래된 로그가 재사용됩니다. 기본값은 1입니다.

접미사 속성이 사용되는 경우 순환된 로그 파일의 접미사가 회전 알고리즘에 포함됩니다. 로그 파일이 순환되면 이름이+접미사 로 시작하는 가장 오래된 파일이 삭제되고 나머지 순환된 로그 파일에 숫자 접미사가 증가되고 새로 순환된 로그 파일에 숫자 접미사 1 이 제공됩니다.

name

로그 처리기의 이름입니다. 처리기의 주소에는 이름이 포함되어 있으므로 더 이상 사용되지 않습니다.

named-formatter

처리기에서 사용할 정의된 포맷터의 이름입니다.

rotate-on-boot

true 로 설정하면 서버를 다시 시작할 때 새 로그 파일이 생성됩니다. 기본값은 false입니다.

rotate-size

로그 파일이 순환되기 전에 도달할 수 있는 최대 크기입니다. 숫자에 추가된 단일 문자는 크기 단위(바이트의 경우 b, kilobytes의 경우 k, 메가바이트의 경우 m,GB의 경우 g )를 나타냅니다. 예를 들어 50MB의 경우 50m 입니다.

suffix

이 문자열은 순환된 로그에 추가된 접미사에 포함됩니다. 접미사 형식은 점(.) 뒤에 SimpleDateFormat 클래스에서 구문 분석할 수 있는 날짜 문자열이 있습니다.

Expand
표 A.27. 주기적인 크기 로그 처리기 속성
속성설명

추가

true 로 설정하면 이 처리기에서 작성한 모든 메시지가 이미 존재하는 경우 파일에 추가됩니다. false 로 설정하면 애플리케이션 서버가 시작될 때마다 새 파일이 생성됩니다.

autoflush

true 로 설정하면 로그 메시지가 수신 시 즉시 할당된 핸들러로 전송됩니다.

enabled

true 로 설정하면 처리기가 활성화되고 정상적으로 작동합니다. false 로 설정하면 로그 메시지를 처리할 때 처리기가 무시됩니다.

인코딩

출력에 사용할 문자 인코딩 스키마입니다.

file

이 로그 처리기의 출력이 기록된 파일을 나타내는 오브젝트입니다. 두 개의 구성 속성인 relative-topath 가 있습니다.

filter-spec

필터를 정의하는 표현식 값입니다. 다음 표현식은 패턴과 일치하지 않는 필터를 정의합니다. not(match("WFLY.*"))

포맷터

이 로그 처리기에서 사용하는 로그 포맷터입니다.

level

로그 처리기 레코드에서 로그 메시지 가장 낮은 수준입니다.

max-backup-index

유지되는 최대 순환 로그 수입니다. 이 수에 도달하면 가장 오래된 로그가 재사용됩니다. 기본값은 1입니다.

접미사 속성이 사용되는 경우 순환된 로그 파일의 접미사가 회전 알고리즘에 포함됩니다. 로그 파일이 순환되면 이름이+접미사 로 시작하는 가장 오래된 파일이 삭제되고 나머지 순환된 로그 파일에 숫자 접미사가 증가되고 새로 순환된 로그 파일에 숫자 접미사 1 이 제공됩니다.

name

로그 처리기의 이름입니다. 처리기의 주소에는 이름이 포함되어 있으므로 더 이상 사용되지 않습니다.

named-formatter

처리기에서 사용할 정의된 포맷터의 이름입니다.

rotate-on-boot

true 로 설정하면 서버를 다시 시작할 때 새 로그 파일이 생성됩니다. 기본값은 false입니다.

rotate-size

로그 파일이 순환되기 전에 도달할 수 있는 최대 크기입니다. 숫자에 추가된 단일 문자는 크기 단위(바이트의 경우 b, kilobytes의 경우 k, 메가바이트의 경우 m,GB의 경우 g )를 나타냅니다. 예를 들어 50MB의 경우 50m 입니다.

suffix

이 문자열은 순환된 로그에 추가된 접미사에 포함됩니다. 접미사 형식은 점(.) 뒤에 SimpleDateFormat 클래스에서 구문 분석할 수 있는 날짜 문자열이 있습니다.

Expand
표 A.28. Syslog Handler 특성
속성설명

app-name

RFC5424 형식으로 메시지를 포맷할 때 사용되는 앱 이름입니다. 기본적으로 앱 이름은 java 입니다.

enabled

true 로 설정하면 처리기가 활성화되고 정상적으로 작동합니다. false 로 설정하면 로그 메시지를 처리할 때 처리기가 무시됩니다.

facility

RFC-5424 및 RFC-3164에서 정의한 기능.

hostname

메시지가 전송되는 호스트의 이름입니다. 예를 들어 애플리케이션 서버가 실행 중인 호스트의 이름입니다.

level

로그 처리기 레코드에서 로그 메시지 가장 낮은 수준입니다.

port

syslog 서버가 수신 대기 중인 포트입니다.

server-address

syslog 서버의 주소입니다.

syslog-format

RFC 사양에 따라 로그 메시지를 포맷합니다.

Expand
표 A.29. 사용자 정의 로그 처리기 속성
속성설명

클래스

사용할 로깅 처리기 클래스입니다.

enabled

true 로 설정하면 처리기가 활성화되고 정상적으로 작동합니다. false 로 설정하면 로그 메시지를 처리할 때 처리기가 무시됩니다.

인코딩

출력에 사용할 문자 인코딩 스키마입니다.

filter

간단한 필터 유형을 정의합니다. filter-spec 대신 더 이상 사용되지 않습니다.

filter-spec

필터를 정의하는 표현식 값입니다. 다음 표현식은 패턴과 일치하지 않는 필터를 정의합니다. not(match("WFLY.*"))

포맷터

이 로그 처리기에서 사용하는 로그 포맷터입니다.

level

로그 처리기 레코드에서 로그 메시지 가장 낮은 수준입니다.

module

로깅 처리기가 종속하는 모듈입니다.

name

로그 처리기의 이름입니다. 처리기의 주소에는 이름이 포함되어 있으므로 더 이상 사용되지 않습니다.

named-formatter

처리기에서 사용할 정의된 포맷터의 이름입니다.

속성

로깅 처리기에 사용되는 속성입니다.

Expand
표 A.30. 비동기 로그 처리기 속성
속성설명

enabled

true 로 설정하면 처리기가 활성화되고 정상적으로 작동합니다. false 로 설정하면 로그 메시지를 처리할 때 처리기가 무시됩니다.

filter

간단한 필터 유형을 정의합니다. filter-spec 대신 더 이상 사용되지 않습니다.

filter-spec

필터를 정의하는 표현식 값입니다. 다음 표현식은 패턴과 일치하지 않는 필터를 정의합니다. not(match("WFLY.*"))

level

로그 처리기 레코드에서 로그 메시지 가장 낮은 수준입니다.

name

로그 처리기의 이름입니다. 처리기의 주소에는 이름이 포함되어 있으므로 더 이상 사용되지 않습니다.

overflow-action

큐 길이를 초과할 때 이 처리기가 응답하는 방법입니다. 이는 BLOCK 또는 DISCARD 로 설정할 수 있습니다. BLOCK 을 사용하면 큐에 사용 가능한 공간이 있을 때까지 로깅 애플리케이션이 대기합니다. 이는 동기화되지 않은 로그 처리기와 동일한 동작입니다. DISCARD 를 사용하면 로깅 애플리케이션이 계속될 수 있지만 로그 메시지는 삭제됩니다.

queue-length

하위 핸들러가 응답할 때까지 기다리는 동안 이 처리기에서 보유할 최대 로그 메시지 수입니다.

subhandlers

이 비동기 처리기에서 로그 메시지를 전달하는 로그 처리기 목록입니다.

A.16. 데이터 소스 연결 URL

Expand
표 A.31. 데이터 소스 연결 URL
데이터 소스연결 URL

IBM DB2

jdbc:db2://SERVER_NAME:PORT/DATABASE_NAME

MariaDB

jdbc:mariadb://SERVER_NAME:PORT/DATABASE_NAME

Microsoft SQL Server

jdbc:sqlserver://SERVER_NAME:PORT;DatabaseName=DATABASE_NAME

MySQL

jdbc:mysql://SERVER_NAME:PORT/DATABASE_NAME

Oracle

JDBC:oracle:thin:@SERVER_NAME:PORT:ORACLE_SID

PostgreSQL

jdbc:postgresql://SERVER_NAME:PORT/DATABASE_NAME

Sybase

jdbc:sybase:Tds:SERVER_NAME:PORT/DATABASE_NAME

A.17. 데이터 소스 매개변수

Expand
표 A.32. 데이터 소스 매개변수
매개변수데이터 소스 유형설명

allocation-retry

Non-XA, XA

예외를 throw하기 전에 연결 할당을 시도해야 하는 횟수입니다. 기본값은 0 이므로 첫 번째 실패 시 예외가 발생합니다.

allocation-retry-wait-millis

Non-XA, XA

연결을 할당하기 위해 재시도할 때까지 대기하는 시간(밀리초)입니다. 기본값은 5000 ms입니다.

allow-multiple-users

Non-XA, XA

getConnection(user, password) 메서드를 통해 여러 사용자가 데이터 소스에 액세스했는지 여부와 내부 풀 유형이 이 동작에 대한 계정인지 여부입니다.

background-validation

Non-XA, XA

사용하기 전에 유효성을 검사하는 대신 백그라운드 스레드에서 연결을 검증해야 하는지 여부입니다. 배경 검증은 일반적으로 validate-on-match 와 함께 사용되지 않거나 중복 검사를 수행합니다. 백그라운드 유효성 검사를 사용하면 유효성 검사 시간이 잘못되고 클라이언트에 전달될 수 있으므로 애플리케이션에서 이러한 가능성을 고려해야 합니다.

background-validation-millis

Non-XA, XA

백그라운드 유효성 검사가 실행되는 빈도(밀리초)입니다.

blocking-timeout-wait-millis

Non-XA, XA

예외를 throw하기 전에 연결을 기다리는 동안 차단할 최대 시간(밀리초)입니다. 이 블록은 연결을 잠그는 동안에만 차단되며 새 연결을 만드는 데 시간이 오래 걸리는 경우 예외가 발생하지 않습니다.

capacity-decrementer-class

Non-XA, XA

풀에서 연결 감소를 위한 정책을 정의하는 클래스입니다.

capacity-decrementer-properties

Non-XA, XA

풀에서 연결 감소를 위한 정책을 정의하는 클래스에 삽입할 속성입니다.

capacity-incrementer-class

Non-XA, XA

풀에서 연결을 늘리기 위한 정책을 정의하는 클래스입니다.

capacity-incrementer-properties

Non-XA, XA

풀에서 연결을 늘리기 위한 정책을 정의하는 클래스에 삽입할 속성입니다.

check-valid-connection-sql

Non-XA, XA

풀 연결의 유효성을 확인하는 SQL 문입니다. 이 작업은 풀에서 관리되는 연결을 가져올 때 호출할 수 있습니다.

connectable

Non-XA, XA

CMR 사용을 활성화합니다. 즉, 로컬 리소스가 XA 트랜잭션에 안정적으로 참여할 수 있습니다.

connection-listener-class

Non-XA, XA

org.jboss.jca.adapters.jdbc.spi.listener.ConnectionListener 를 확장하는 클래스 이름을 지정합니다. 이 클래스는 연결 활성화 및 비활성화를 수신하여 연결이 애플리케이션 또는 풀로 반환되기 전에 작업을 수행합니다. 지정된 클래스는 두 개의 리소스 수준(코어 모듈로 JDBC 드라이버 설치) 또는 별도의 글로벌 모듈(Global 모듈 정의)을 사용하여 한 모듈에서 JDBC 드라이버와 함께 번들링해야 합니다.

connection-listener-property

Non-XA, XA

connection-listener-class 에 지정된 클래스에 삽입할 속성입니다. 삽입된 속성은 JavaBeans 규칙을 준수합니다. 예를 들어 foo 라는 속성을 지정하는 경우 연결 리스너 클래스에 String 을 인수로 수락하는 메서드 setFoo 가 있어야 합니다.

connection-properties

비 XA 전용

Driver.connect(url, props) 메서드에 전달할 임의의 문자열 이름/값 쌍 연결 속성입니다.

connection-url

비 XA 전용

JDBC 드라이버 연결 URL입니다.

datasource-class

비 XA 전용

JDBC 데이터 소스 클래스의 정규화된 이름입니다.

driver-class

비 XA 전용

JDBC 드라이버 클래스의 정규화된 이름입니다.

driver-name

Non-XA, XA

데이터 소스에서 사용해야 하는 JDBC 드라이버를 정의합니다. 설치된 드라이버의 이름과 일치하는 심볼릭 이름입니다. 드라이버가 JAR로 배포된 경우 이름은 배포 이름입니다.

enabled

Non-XA, XA

데이터 소스를 활성화해야 하는지 여부입니다.

enlistment-trace

Non-XA, XA

추적을 기록해야 하는지 여부입니다.

exception-sorter-class-name

Non-XA, XA

예외가 오류를 브로드캐스트해야 하는지 검증하는 방법을 제공하는 org.jboss.jca.adapters.jdbc.ExceptionSorter 의 인스턴스입니다.

exception-sorter-properties

Non-XA, XA

예외 분류기 속성입니다.

flush-strategy

Non-XA, XA

오류 발생 시 풀을 플러시하는 방법을 지정합니다. 유효한 값은 다음과 같습니다.

FailingConnectionOnly
실패한 연결만 제거됩니다. 이 설정은 기본 설정입니다.
InvalidIdleConnections
동일한 자격 증명을 공유하고 ValidatingManagedConnectionFactory.getInvalidConnections(…​) 메서드로 잘못된 연결 및 유휴 연결이 반환됩니다.
IdleConnections
동일한 자격 증명을 공유하는 실패한 연결 및 유휴 연결이 제거됩니다.
정상적으로
동일한 자격 증명을 공유하는 실패한 연결 및 유휴 연결이 제거됩니다. 동일한 자격 증명을 공유하는 활성 연결은 풀로 돌아갈 때 삭제됩니다.
EntirePool
동일한 자격 증명을 공유하는 실패한 연결 및 유휴 상태 및 활성 연결이 제거됩니다. 이 설정은 프로덕션 시스템에는 권장되지 않습니다.
AllInvalidIdleConnections
ValidatingManagedConnectionFactory.getInvalidConnections(…​) 메서드에서 유효하지 않은 상태로 반환되는 실패한 연결 및 유휴 연결이 제거됩니다.
AllIdleConnections
실패한 연결 및 모든 유휴 연결이 제거됩니다.
AllGracefully
실패한 연결 및 모든 유휴 연결이 제거됩니다. 활성 연결은 풀로 돌아갈 때 제거됩니다.
AllConnections
실패한 연결 및 모든 유휴 및 활성 연결이 제거됩니다. 이 설정은 프로덕션 시스템에는 권장되지 않습니다.

idle-timeout-minutes

Non-XA, XA

최대 시간(분)은 닫히기 전에 유휴 상태일 수 있습니다. 지정하지 않으면 기본값은 30 분입니다. 실제 최대 시간은 모든 풀의 가장 작은 idle-timeout-minutes 값의 절반인 IdleRemover 검사 시간에 따라 달라집니다.

initial-pool-size

Non-XA, XA

풀이 유지해야 하는 초기 연결 수입니다.

interleaving

XA만 해당

XA 연결에 대해 인터리브를 활성화할지 여부입니다.

JNDI-name

Non-XA, XA

데이터 소스에 대한 고유한 JNDI 이름입니다.

jta

비 XA 전용

JTA 통합을 활성화합니다.

max-pool-size

Non-XA, XA

풀에서 보유할 수 있는 최대 연결 수입니다.

mcp

Non-XA, XA

ManagedConnectionPool 구현 예를 들어 org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool

min-pool-size

Non-XA, XA

풀에 보유할 수 있는 최소 연결 수입니다.

new-connection-sql

Non-XA, XA

연결 풀에 연결을 추가할 때마다 실행할 SQL 문입니다.

복구되지 않음

XA만 해당

연결 풀을 복구에서 제외해야 하는지 여부입니다.

no-tx-separate-pool

XA만 해당

각 컨텍스트에 대해 별도의 하위 풀을 생성할지 여부입니다. 이는 JTA 트랜잭션 내부 및 외부의 XA 연결을 허용하지 않을 수 있는 일부 Oracle 데이터 소스에 필요할 수 있습니다. 이 옵션을 사용하면 두 개의 실제 풀이 생성되므로 총 풀 크기가 max-pool-size 의 두 배가 됩니다.

Pad-xid

XA만 해당

Xid를 패딩할 수 있습니다.

암호

Non-XA, XA

새 연결을 만들 때 사용할 암호입니다.

pool-fair

Non-XA, XA

풀이 공정해야 하는지 여부를 정의합니다. 이 설정은 JCA의 연결 풀을 관리하는 데 사용되는 Semaphore 클래스의 일부이며, 이는 연결 중단 순서가 필요하지 않은 일부 사용 사례에서 성능 이점을 제공합니다.

pool-prefill

Non-XA, XA

풀을 미리 채워야 하는지 여부입니다.

pool-use-strict-min

Non-XA, XA

min-pool-size 를 엄격하게 고려해야 하는지 여부입니다.

prepared-statements-cache-size

Non-XA, XA

LRU(LRU) 캐시의 연결당 준비된 문 수입니다.

query-timeout

Non-XA, XA

쿼리 제한 시간(초)입니다. 기본값은 시간 초과입니다.

reauth-plugin-class-name

Non-XA, XA

물리적 연결을 재인증하기 위한 재인증 플러그인 구현의 정규화된 클래스 이름입니다.

reauth-plugin-properties

Non-XA, XA

reauthentication 플러그인의 속성입니다.

recovery-password

XA만 해당

복구를 위해 리소스에 연결하는 데 사용할 암호입니다.

recovery-plugin-class-name

XA만 해당

복구 플러그인 구현의 정규화된 클래스 이름입니다.

recovery-plugin-properties

XA만 해당

복구 플러그인의 속성입니다.

recovery-security-domain

XA만 해당

복구를 위해 리소스에 연결하는 데 사용할 보안 도메인입니다.

recovery-username

XA만 해당

복구를 위해 리소스에 연결하는 데 사용할 사용자 이름입니다.

same-rm-override

XA만 해당

javax. Cryostat.xa.XAResource.isSameRM(XAResource) 클래스가 true 또는 false 를 반환하는지 여부입니다.

security-domain

Non-XA, XA

인증을 처리하는 JAAS security-manager의 이름입니다. 이 이름은 JAAS 로그인 구성의 application-policy/name 속성과 관련이 있습니다.

set-tx-query-timeout

Non-XA, XA

트랜잭션 시간 초과까지 남은 시간에 따라 쿼리 시간 초과를 설정할지 여부입니다. 트랜잭션이 없는 경우 구성된 쿼리 시간 초과가 사용됩니다.

share-prepared-statements

Non-XA, XA

JBoss EAP가 애플리케이션에 제공된 래퍼가 애플리케이션 코드로 닫힐 때 기본 물리 명령 대신 캐시해야 하는지 여부입니다. 기본값은 false입니다.

spy

Non-XA, XA

JDBC 계층에서 spy 기능을 활성화합니다. 모든 JDBC 트래픽을 데이터 소스에 기록합니다. 로깅 카테고리 jboss.jdbc.spy로깅 하위 시스템에서 로그 수준 DEBUG 로 설정해야 합니다.

stale-connection-checker-class-name

Non-XA, XA

isStaleConnection(SQLException) 방법을 제공하는 org.jboss.jca.adapters.jdbc.StaleConnectionChecker 의 인스턴스입니다. 이 메서드에서 true 를 반환하면 예외가 org.jboss.jca.adapters.jdbc.StaleConnectionException 으로 래핑됩니다.

stale-connection-checker-properties

Non-XA, XA

오래된 연결 검사 속성입니다.

statistics-enabled

Non-XA, XA

런타임 통계가 활성화되어 있는지 여부입니다. 기본값은 false입니다.

track-statements

Non-XA, XA

연결이 풀로 반환되고 문이 준비된 문 캐시로 반환될 때 닫히지 않은 문을 확인할지 여부입니다. whether to check for unclosed statements when a connection is returned to a pool and a statement is returned to the prepared statement cache. false인 경우 문이 추적되지 않습니다. 유효한 값은 다음과 같습니다.

  • True: 문과 결과 세트가 추적되며, 종료되지 않은 경우 경고가 표시됩니다.
  • False: 문 또는 결과 세트가 추적되지 않습니다.
  • nowarn: 설명이 추적되지만 경고가 발행되지 않습니다 (기본값).

추적

Non-XA, XA

트랜잭션 경계에서 연결을 추적할지 여부입니다.

transaction-isolation

Non-XA, XA

java.sql.Connection 트랜잭션 격리 수준입니다. 유효한 값은 다음과 같습니다.

  • TRANSACTION_READ_UNCOMMITTED
  • TRANSACTION_READ_COMMITTED
  • TRANSACTION_REPEATABLE_READ
  • TRANSACTION_SERIALIZABLE
  • TRANSACTION_NONE

url-delimiter

Non-XA, XA

HA(고가용성) 데이터 소스용 connection-url의 URL 구분 기호입니다.

url-property

XA만 해당

xa-datasource-property 값의 URL 속성입니다.

url-selector-strategy-class-name

Non-XA, XA

org.jboss.jca.adapters.jdbc.URLSelectorStrategy 를 구현하는 클래스입니다.

use-ccm

Non-XA, XA

캐시된 연결 관리자를 활성화합니다.

use-fast-fail

Non-XA, XA

true인 경우 연결이 유효하지 않은 경우 첫 번째 시도에서 연결 할당이 실패합니다. false인 경우 풀이 소진될 때까지 계속 시도합니다.

use-java-context

Non-XA, XA

데이터 소스를 글로벌 JNDI에 바인딩할지 여부입니다.

use-try-lock

Non-XA, XA

내부 잠금에 대한 시간 초과 값입니다. 이렇게 하면 잠금을 사용할 수 없는 경우 즉시 실패하는 대신 시간 초과 전에 구성된 시간(초)에 대한 잠금을 가져오려고 합니다. lock() 대신 tryLock() 을 사용합니다.

user-name

Non-XA, XA

새 연결을 만들 때 사용할 사용자 이름입니다.

valid-connection-checker-class-name

Non-XA, XA

연결의 유효성을 검사하는 SQLException.isValidConnection(Connection e) 방법을 제공하는 org.jboss.jca.adaptors.jdbc.ValidConnectionChecker 의 구현입니다. 예외는 연결이 끊어졌음을 의미합니다. 이 매개 변수가 있는 경우 check-valid-connection-sql 매개변수를 덮어씁니다.

valid-connection-checker-properties

Non-XA, XA

유효한 연결 검사기 속성입니다.

validate-on-match

Non-XA, XA

연결 팩토리에서 관리되는 연결과 일치하려고 할 때 연결 유효성 검사가 수행되는지 여부입니다. whether connection validation is performed when a connection factory attempts to match a managed connection. 클라이언트 사용 전에 유효성이 검사된 연결이 있어야 하는 경우 이 값을 사용해야 합니다. validate-on-match는 일반적으로 background-validation 와 함께 사용되지 않거나 중복 검사를 수행합니다.

wrap-xa-resource

XA만 해당

XAResource를 org.jboss.tm.XAResourceWrapper 인스턴스에서 래핑할지 여부입니다.

XA-datasource-class

XA만 해당

javax.sql.XADataSource 구현 클래스의 정규화된 이름입니다.

XA-datasource-properties

XA만 해당

XA 데이터 소스 속성의 문자열 이름/값 쌍입니다.

XA-resource-timeout

XA만 해당

0이 아닌 경우 이 값은 XAResource.setTransactionTimeout 메서드로 전달됩니다.

A.18. 데이터 소스 통계

Expand
표 A.33. 코어 풀 통계
이름설명

ActiveCount

활성 연결 수입니다. 각 연결은 애플리케이션에서 사용 중이거나 풀에서 사용할 수 있습니다.

AvailableCount

풀에서 사용 가능한 연결 수입니다.

AverageBlockingTime

풀에서 독점 잠금을 얻는 데 걸리는 평균 시간입니다. 이 값은 밀리초 단위입니다.

AverageCreationTime

연결을 만드는 데 걸리는 평균 시간입니다. 이 값은 밀리초 단위입니다.

AverageGetTime

연결을 얻는 데 걸리는 평균 시간입니다.

AverageUsageTime

연결을 사용하여 보낸 평균 시간입니다.

BlockingFailureCount

연결을 시도한 실패 수입니다.

CreatedCount

생성된 연결 수입니다.

DestroyedCount

삭제된 연결 수입니다.

IdleCount

현재 유휴 상태인 연결 수입니다.

InUseCount

현재 사용 중인 연결 수입니다.

MaxCreationTime

연결을 만드는 데 걸리는 최대 시간입니다. 이 값은 밀리초 단위입니다.

MaxGetTime

연결을 얻는 최대 시간입니다.

MaxPoolTime

풀에 있는 연결의 최대 시간입니다.

MaxUsageTime

연결을 사용하는 최대 시간입니다.

MaxUsedCount

사용된 최대 연결 수입니다.

MaxWaitCount

동시에 연결을 기다리는 최대 요청 수입니다.

MaxWaitTime

풀에서 독점 잠금을 기다리는 데 걸리는 최대 시간입니다.

TimedOut

시간 초과된 연결 수입니다.

TotalBlockingTime

풀에서 독점 잠금을 기다리는 총 시간입니다. 이 값은 밀리초 단위입니다.

TotalCreationTime

연결을 만드는 데 소요된 총 시간입니다. 이 값은 밀리초 단위입니다.

TotalGetTime

연결을 얻는 데 걸리는 총 시간입니다.

TotalPoolTime

풀에서 연결에서 사용하는 총 시간입니다.

TotalUsageTime

연결을 사용하여 사용하는 총 시간입니다.

WaitCount

연결을 얻기 위해 기다려야 하는 요청 수입니다.

XACommitAverageTime

XAResource 커밋 호출의 평균 시간입니다.

XACommitCount

XAResource 커밋 호출 수입니다.

XACommitMaxTime

XAResource 커밋 호출의 최대 시간입니다.

XACommitTotalTime

모든 XAResource 커밋 호출의 총 시간입니다.

XAEndAverageTime

XAResource 종료 호출의 평균 시간입니다.

XAEndCount

XAResource 종료 호출 수입니다.

XAEndMaxTime

XAResource 엔드 호출의 최대 시간입니다.

XAEndTotalTime

모든 XAResource 종료 호출의 총 시간입니다.

XAForgetAverageTime

XAResource의 평균 시간은 호출을 잊어 버립니다.

XAForgetCount

XAResource에서 호출 수를 잊어버렸습니다.

XAForgetMaxTime

XAResource가 호출을 잊어버린 최대 시간입니다.

XAForgetTotalTime

모든 XAResource의 총 시간은 호출을 잊어 버립니다.

XAPrepareAverageTime

XAResource 준비 호출의 평균 시간입니다.

XAPrepareCount

XAResource 준비 호출 수입니다.

XAPrepareMaxTime

XAResource 준비 호출의 최대 시간입니다.

XAPrepareTotalTime

모든 XAResource 준비 호출의 총 시간입니다.

XARecoverAverageTime

XAResource가 호출을 복구하는 평균 시간입니다.

XARecoverCount

XAResource의 수는 호출을 복구합니다.

XARecoverMaxTime

XAResource가 호출을 복구하는 최대 시간입니다.

XARecoverTotalTime

모든 XAResource의 총 시간은 호출을 복구합니다.

XARollbackAverageTime

XAResource 롤백 호출의 평균 시간입니다.

XARollbackCount

XAResource 롤백 호출 수입니다.

XARollbackMaxTime

XAResource 롤백 호출의 최대 시간입니다.

XARollbackTotalTime

모든 XAResource 롤백 호출의 총 시간입니다.

XAStartAverageTime

XAResource 시작 호출의 평균 시간입니다.

XAStartCount

XAResource 시작 호출 수입니다.

XAStartMaxTime

XAResource 시작 호출의 최대 시간입니다.

XAStartTotalTime

모든 XAResource 시작 호출의 총 시간입니다.

Expand
표 A.34. JDBC 통계
이름설명

PreparedStatementCacheAccessCount

문 캐시에 액세스한 횟수입니다.

PreparedStatementCacheAddCount

문 캐시에 추가된 문 수입니다.

PreparedStatementCacheCurrentSize

문 캐시에 현재 캐시된 준비 및 호출 가능 문의 수입니다.

PreparedStatementCacheDeleteCount

캐시에서 삭제되는 문 수입니다.

PreparedStatementCacheHitCount

캐시의 구문이 사용된 횟수입니다.

PreparedStatementCacheMissCount

문 요청이 캐시의 문에 충족할 수 없는 횟수입니다.

A.19. 트랜잭션 관리자 구성 옵션

Expand
표 A.35. 트랜잭션 Cryostat 속성
속성설명

default-timeout

기본 트랜잭션 시간 초과입니다. 기본값은 300 초입니다. 이를 프로그래밍 방식으로 재정의할 수 있습니다.

enable-statistics

통계가 기본적으로 활성화되어 있는 경우 더 이상 사용되지 않습니다.

enable-tsm-status

프로세스 외 복구에 사용되는 TSM(Transaction status manager) 서비스를 활성화할지 여부입니다. 이 옵션은 out-of-process 복구 관리자를 실행하여 메모리가 아닌 다른 프로세스에서 ActionStatusService 에 문의하면 지원되지 않습니다.

hornetq-store-enable-async-io

더 이상 사용되지 않는 journal-store-enable-async-io.

jdbc-action-store-drop-table

JDBC 작업 저장소가 테이블을 삭제해야 하는지 여부입니다. 기본값은 false입니다.

jdbc-action-store-table-prefix

구성된 JDBC 작업 저장소에서 트랜잭션 로그를 작성하는 데 사용되는 테이블에 대한 선택적 접두사입니다.

jdbc-communication-store-drop-table

JDBC 통신 저장소가 테이블을 삭제해야 하는지 여부입니다. 기본값은 false입니다.

jdbc-communication-store-table-prefix

구성된 JDBC 통신 저장소에서 트랜잭션 로그를 작성하는 데 사용되는 테이블에 대한 선택적 접두사입니다.

jdbc-state-store-drop-table

JDBC 상태 저장소가 테이블을 삭제해야 하는지 여부입니다. 기본값은 false입니다.

jdbc-state-store-table-prefix

구성된 JDBC 상태 저장소에서 트랜잭션 로그를 작성하는 데 사용되는 테이블에 대한 선택적 접두사입니다.

jdbc-store-datasource

사용된 비 XA 데이터 소스의 JNDI 이름입니다. 데이터 소스는 데이터 소스 하위 시스템에서 정의해야 합니다.

journal-store-enable-async-io

저널 저장소에 대해 AsyncIO 를 활성화해야 하는지 여부입니다. 기본값은 false입니다. 이 설정을 적용하려면 서버를 다시 시작해야 합니다.

JTS

JTS(Java Transaction Service) 트랜잭션을 사용할지 여부입니다. 기본값은 JTA 트랜잭션만 사용하는 false 입니다.

node-identifier

트랜잭션 관리자의 노드 식별자입니다. 이 옵션을 설정하지 않으면 서버 시작 시 경고가 표시됩니다. 이 옵션은 다음과 같은 경우에 필요합니다.

  • JTS에서 JTS 간 통신의 경우
  • 두 개의 트랜잭션 관리자가 공유 리소스 관리자에 액세스하는 경우
  • 두 트랜잭션 관리자가 공유 개체 저장소에 액세스하는 경우

복구 중에 데이터 무결성을 강제 적용하는 데 필요하므로 노드 ID는 각 트랜잭션 관리자마다 고유해야 합니다. 여러 노드가 동일한 리소스 관리자와 상호 작용하거나 트랜잭션 오브젝트 저장소를 공유할 수 있으므로 node-identifier는 JTA에 대해 고유해야 합니다.

object-store-path

트랜잭션 관리자 오브젝트 저장소가 데이터를 저장하는 상대 또는 절대 파일 시스템 경로입니다. 기본적으로 object-store-relative-to 매개변수의 값을 기준으로 합니다. object-store-relative-to 가 빈 문자열로 설정된 경우 이 값은 절대 경로로 처리됩니다.

object-store-relative-to

도메인 모델의 글로벌 경로 구성을 참조합니다. 기본값은 JBoss EAP의 데이터 디렉터리입니다. 속성 값인 jboss.server.data.dir, 관리형 도메인의 경우 기본값은 EAP_HOME/domain/data/ 또는 독립 실행형 서버 인스턴스의 EAP_HOME/standalone/data/ 입니다. 오브젝트 저장소 object-store-path 트랜잭션 관리자 속성의 값은 이 경로와 관련이 있습니다. object-store-path 를 절대 경로로 처리하도록 이 속성을 빈 문자열로 설정합니다.

process-id-socket-binding

트랜잭션 관리자가 소켓 기반 프로세스 ID를 사용해야 하는 경우 사용할 소켓 바인딩 구성의 이름입니다. process-id-uuidtrue 인 경우 이 정의되지 않습니다. 그렇지 않으면 설정해야 합니다.

process-id-socket-max-ports

트랜잭션 관리자는 각 트랜잭션 로그에 대해 고유 식별자를 생성합니다. 두 가지 다른 메커니즘이 고유 식별자 생성을 위해 제공됩니다: 소켓 기반 메커니즘 및 프로세스의 프로세스 식별자를 기반으로 하는 메커니즘.

소켓 기반 식별자의 경우 소켓이 열리고 해당 포트 번호가 식별자에 사용됩니다. 포트가 이미 사용 중인 경우 무료 포트를 찾을 때까지 다음 포트가 검색됩니다. process-id-socket-max-ports는 트랜잭션 관리자가 실패하기 전에 시도할 최대 소켓 수를 나타냅니다. 기본값은 10 입니다.

process-id-uuid

프로세스 ID를 사용하여 각 트랜잭션에 대한 고유 식별자를 만들려면 true 로 설정합니다. 그렇지 않으면 소켓 기반 메커니즘이 사용됩니다. 기본값은 true 입니다. 자세한 내용은 process-id-socket-max-ports 를 참조하십시오. process-id-socket-binding 을 활성화하려면 process-id-uuidfalse 로 설정합니다.

recovery-listener

트랜잭션 복구 프로세스가 네트워크 소켓에서 수신 대기해야 하는지 여부입니다. 기본값은 false입니다.

socket-binding

recovery-listenertrue 로 설정된 경우 트랜잭션 주기 복구 리스너에서 사용하는 소켓 바인딩의 이름을 지정합니다.

statistics-enabled

통계를 활성화해야 하는지 여부입니다. 기본값은 false입니다.

status-socket-binding

트랜잭션 상태 관리자에 사용할 소켓 바인딩을 지정합니다. 이 구성 옵션은 지원되지 않습니다.

use-hornetq-store

use-journal-store 대신 사용되지 않습니다.

use-jdbc-store

트랜잭션 로그를 작성하려면 JDBC 저장소를 사용합니다. 기본 로그 저장소 유형을 사용하려면 true 로 설정하고 true로 설정합니다.

use-journal-store

트랜잭션 로그를 위한 파일 기반 스토리지 대신 Apache ActiveMQ Artemis 저널링 스토리지 메커니즘을 사용합니다. 이는 기본적으로 비활성화되어 있지만 I/O 성능을 개선할 수 있습니다. 별도의 트랜잭션 관리자의 JTS 트랜잭션에는 권장되지 않습니다. 이 옵션을 변경할 때 변경 사항을 적용하려면 shutdown 명령을 사용하여 서버를 다시 시작해야 합니다.

Expand
표 A.36. 로그 저장소 속성
속성설명

expose-all-logs

모든 로그를 노출할지 여부입니다. 기본값은 false 이므로 트랜잭션 로그의 하위 집합만 노출됩니다.

type

로깅 저장소의 구현 유형을 지정합니다. 기본값은 기본값 입니다.

Expand
표 A.37. 마크 가능한 리소스 속성 커밋
속성설명

batch-size

이 CMR 리소스의 배치 크기입니다. 기본값은 100입니다.

immediate-cleanup

이 CMR 리소스에 대해 즉시 정리를 수행할지 여부입니다. 기본값은 true입니다.

JNDI-name

이 CMR 리소스의 JNDI 이름입니다.

name

XID를 저장하기 위한 테이블 이름입니다. 기본값은 xids 입니다.

A.20. IIOP Cryostat 속성

Expand
표 A.38. IIOP Cryostat 속성
속성설명

add-component-via-interceptor

IOR 인터셉터에서 SSL 구성 요소를 추가해야 하는지 여부를 나타냅니다.

auth-method

인증 방법입니다. 유효한 값은 none 이고 username_password 입니다.

caller-propagation

호출자 ID를 SAS 컨텍스트에서 전파해야 하는지 여부를 나타냅니다. 유효한 값은 none 이며 지원됩니다.

client-requires

클라이언트 SSL 필수 매개 변수를 나타내는 값입니다. 유효한 값은 None,ServerAuth,ClientAuthMutualAuth 입니다.

client-supports

클라이언트 SSL 지원 매개 변수를 나타내는 값입니다. 유효한 값은 None,ServerAuth,ClientAuthMutualAuth 입니다.

기밀성

전송 시 기밀성 보호가 필요한지 여부를 나타냅니다. 유효한 값은 none,supported, 필수 입니다.

detect-misordering

전송에 잘못 정렬 탐지가 필요한지 여부를 나타냅니다. 유효한 값은 none,supported, 필수 입니다.

detect-replay

전송에 재생 검색이 필요한지 여부를 나타냅니다.Indicates whether the transport must require replay detection or not. 유효한 값은 none,supported, 필수 입니다.

export-corbaloc

루트 컨텍스트를 corbaloc::address:port/NameService 로 내보내야 하는지 여부를 나타냅니다.

giop-version

사용할 GIOP 버전입니다.

high-water-mark

TCP 연결 캐시 매개변수입니다. 연결 수가 이 값을 초과할 때마다 ORB는 연결을 회수하려고 합니다. 회수된 연결 수는 number-to-reclaim 속성으로 지정됩니다. 이 속성이 설정되지 않은 경우 OpenJDK ORB 기본값이 사용됩니다.

무결성

전송에 무결성 보호가 필요한지 여부를 나타냅니다. 유효한 값은 none,supported, 필수 입니다.

number-to-reclaim

TCP 연결 캐시 매개변수입니다. 연결 수가 high-water-mark 속성을 초과할 때마다 ORB는 연결을 회수하려고 합니다. 회수된 연결 수는 이 속성으로 지정됩니다. 설정되지 않은 경우 OpenJDK ORB 기본값이 사용됩니다.

persistent-server-id

서버의 영구 ID입니다. 영구 오브젝트 참조는 서버의 여러 활성화에 걸쳐 유효하며 이 속성을 사용하여 식별합니다. 따라서 동일한 서버의 많은 활성화에는 이 속성이 동일한 값으로 설정되어야 하며 동일한 호스트에서 실행 중인 다른 서버 인스턴스에는 다른 서버 ID가 있어야 합니다.

속성

일반 키/값 속성 목록입니다.

realm

인증 서비스 영역 이름입니다.

필수 항목

인증이 필요한지 여부를 나타냅니다.

root-context

이름 지정 서비스 루트 컨텍스트입니다.

보안

보안 인터셉터를 설치할지 여부를 나타냅니다. 유효한 값은 client,identity, none 입니다.

security-domain

SSL 연결을 설정하는 데 사용할 키 및 신뢰 저장소를 보유하는 보안 도메인의 이름입니다.

server-requires

서버 SSL 필수 매개 변수를 나타내는 값입니다. 유효한 값은 None,ServerAuth,ClientAuthMutualAuth 입니다.

server-supports

서버 SSL 지원 매개 변수를 나타내는 값입니다. 유효한 값은 None,ServerAuth,ClientAuthMutualAuth 입니다.

socket-binding

ORB 포트를 지정하는 소켓 바인딩 구성의 이름입니다.

ssl-socket-binding

ORB SSL 포트를 지정하는 소켓 바인딩 구성의 이름입니다.

support-ssl

SSL이 지원되는지 여부를 나타냅니다.

트랜잭션

트랜잭션 인터셉터를 설치할지 여부를 나타냅니다. 유효한 값은 full,spec, none 입니다. spec 값이 full 인 상태에서는 JTS를 사용하면 들어오는 트랜잭션 컨텍스트를 거부하는 JTS 이외의 사양 호환 모드를 사용할 수 있습니다.

trust-in-client

전송 시 클라이언트의 신뢰가 설정되어야 하는지 여부를 나타냅니다.Indicates if the transport must require trust in client to be established. 유효한 값은 none,supported, 필수 입니다.

trust-in-target

전송이 대상에 대한 신뢰가 설정되어야 하는지 여부를 나타냅니다.Indicates if the transport must require trust in target to be established. 유효한 값은 none 이며 지원됩니다.

A.21. 리소스 어댑터 속성

다음 표에서는 리소스 어댑터 특성에 대해 설명합니다.

Expand
표 A.39. 기본 속성
속성설명

archive

리소스 어댑터 아카이브입니다.

Cryostatvalidationgroups

사용해야 하는 8080 검증 그룹입니다.

bootstrap-context

사용해야 하는 부트스트랩 컨텍스트의 고유 이름입니다.

config-properties

사용자 정의 정의된 구성 속성입니다.

module

리소스 어댑터가 로드될 모듈입니다.

statistics-enabled

런타임 통계가 활성화되어 있는지 여부입니다.

transaction-support

리소스 어댑터의 트랜잭션 지원 수준입니다.

wm-security

이 리소스 어댑터의 wm.security 를 토글합니다. false인 경우 기본값에도 모든 wm-security-* 매개변수가 무시됩니다.

wm-security-default-groups

사용된 주체 인스턴스에 추가해야 하는 기본 그룹 목록입니다.

wm-security-default-principal

사용된 주체 인스턴스에 추가해야 하는 기본 주체 이름입니다.

wm-security-domain

사용해야 하는 보안 도메인의 이름입니다.

WM-security-mapping-groups

그룹 매핑 목록입니다.

WM-security-mapping-required

보안 자격 증명에 매핑이 필요한지 여부를 정의합니다.

wm-security-mapping-users

사용자 매핑 목록입니다.

Expand
표 A.40. admin-objects 특성
속성설명

class-name

관리 오브젝트의 정규화된 클래스 이름입니다.

enabled

관리 오브젝트를 활성화해야 하는지 여부를 지정합니다.

JNDI-name

관리 오브젝트의 JNDI 이름입니다.

use-java-context

이를 false로 설정하면 오브젝트를 글로벌 JNDI에 바인딩합니다.

Expand
표 A.41. connection-definitions 속성
속성설명

allocation-retry

예외를 throw하기 전에 연결 할당을 시도해야 하는 횟수를 나타냅니다.Indicates the number of times that allocating a connection should be tried before throwing an exception.

allocation-retry-wait-millis

연결을 할당하기 위해 재시도할 때까지 대기하는 시간(밀리초)입니다.

background-validation

사용하기 전에 유효성을 검사하는 대신 백그라운드 스레드에서 연결을 검증하도록 지정합니다. 이 값을 변경하려면 서버를 다시 시작해야 합니다.

background-validation-millis

백그라운드 유효성 검사가 실행되는 시간(밀리초)입니다. 이 값을 변경하려면 서버를 다시 시작해야 합니다.

blocking-timeout-wait-millis

예외를 throw하기 전에 연결을 기다리는 동안 차단할 최대 시간(밀리초)입니다. 이 블록은 연결을 잠그는 동안에만 차단되며 새 연결을 만드는 데 시간이 오래 걸리는 경우 예외가 발생하지 않습니다.

capacity-decrementer-class

풀에서 연결 감소를 위한 정책을 정의하는 클래스입니다.

capacity-decrementer-properties

풀에서 연결 감소를 위한 정책을 정의하는 클래스에 삽입할 속성입니다.

capacity-incrementer-class

풀에서 연결을 늘리기 위한 정책을 정의하는 클래스입니다.

capacity-incrementer-properties

풀에서 연결을 늘리기 위한 정책을 정의하는 클래스에 삽입할 속성입니다.

class-name

관리되는 연결 팩토리 또는 admin 오브젝트의 정규화된 클래스 이름입니다.

connectable

CMR 사용을 활성화합니다. 이 기능은 로컬 리소스가 XA 트랜잭션에 안정적으로 참여할 수 있음을 의미합니다.

enabled

리소스 어댑터를 활성화해야 하는지 여부를 지정합니다.

Enlistment

리소스 어댑터에서 지원하는 경우 lazy Enlistment를 사용해야 하는지 여부를 지정합니다.

enlistment-trace

JBoss EAP/IronJacamar가 등록 추적을 기록해야 하는지 여부를 지정합니다.

flush-strategy

오류 발생 시 풀을 플러시하는 방법을 지정합니다. 유효한 값은 다음과 같습니다.

FailingConnectionOnly
실패한 연결만 제거됩니다. 이 설정은 기본 설정입니다.
InvalidIdleConnections
동일한 자격 증명을 공유하고 ValidatingManagedConnectionFactory.getInvalidConnections(…​) 메서드로 잘못된 연결 및 유휴 연결이 반환됩니다.
IdleConnections
동일한 자격 증명을 공유하는 실패한 연결 및 유휴 연결이 제거됩니다.
정상적으로
동일한 자격 증명을 공유하는 실패한 연결 및 유휴 연결이 제거됩니다. 동일한 자격 증명을 공유하는 활성 연결은 풀로 돌아갈 때 삭제됩니다.
EntirePool
동일한 자격 증명을 공유하는 실패한 연결 및 유휴 상태 및 활성 연결이 제거됩니다. 이 설정은 프로덕션 시스템에는 권장되지 않습니다.
AllInvalidIdleConnections
ValidatingManagedConnectionFactory.getInvalidConnections(…​) 메서드에서 유효하지 않은 상태로 반환되는 실패한 연결 및 유휴 연결이 제거됩니다.
AllIdleConnections
실패한 연결 및 모든 유휴 연결이 제거됩니다.
AllGracefully
실패한 연결 및 모든 유휴 연결이 제거됩니다. 활성 연결은 풀로 돌아갈 때 제거됩니다.
AllConnections
실패한 연결 및 모든 유휴 및 활성 연결이 제거됩니다. 이 설정은 프로덕션 시스템에는 권장되지 않습니다.

idle-timeout-minutes

최대 시간(분)은 닫히기 전에 유휴 상태일 수 있습니다. 실제 최대 시간은 모든 풀의 가장 작은 idle-timeout-minutes 값의 절반인 IdleRemover 검사 시간에 따라 다릅니다. 이 값을 변경하려면 서버를 다시 시작해야 합니다.

initial-pool-size

풀이 유지해야 하는 초기 연결 수입니다.

interleaving

XA 연결에 대해 인터리브를 활성화할지 여부를 지정합니다.

JNDI-name

연결 팩토리에 대한 JNDI 이름입니다.

max-pool-size

풀의 최대 연결 수입니다. 각 하위 풀에 더 이상 연결이 생성되지 않습니다.

mcp

ManagedConnectionPool 구현 예: org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.

min-pool-size

풀에 대한 최소 연결 수입니다.

복구되지 않음

연결 풀을 복구에서 제외해야 하는지 여부를 지정합니다.

no-tx-separate-pool

Oracle은 JTA 트랜잭션 내부 및 외부에서 사용되는 XA 연결을 선호하지 않습니다. 문제를 해결하려면 다른 컨텍스트에 대해 별도의 하위 풀을 생성할 수 있습니다.

Pad-xid

Xid를 패딩해야 하는지 여부를 지정합니다.

pool-fair

풀 사용을 공정하게 사용해야 하는지 여부를 지정합니다.

pool-prefill

풀을 미리 채워야 하는지 여부를 지정합니다. 이 값을 변경하려면 서버를 다시 시작해야 합니다.

pool-use-strict-min

min-pool-size 가 strict으로 간주되어야 하는지 여부를 지정합니다.

recovery-password

복구에 사용되는 암호입니다.

recovery-plugin-class-name

복구 플러그인 구현의 정규화된 클래스 이름입니다.

recovery-plugin-properties

복구 플러그인의 속성입니다.

recovery-security-domain

복구에 사용되는 보안 도메인입니다.

recovery-username

복구에 사용되는 사용자 이름입니다.

same-rm-override

기본적으로 javax. Cryostat.xa.XAResource.isSameRM(XAResource) 이 true 또는 false를 반환하는지 여부를 설정합니다.

security-application

getConnection(user, pw) 와 같은 애플리케이션 제공 매개 변수가 풀에서 연결을 구분하는 데 사용됨을 나타냅니다.

security-domain

풀에서 연결을 구분하는 데 사용되는 javax.security.auth.Subject 를 정의하는 보안 도메인입니다.

security-domain-and-application

getConnection(user, pw) 와 같은 애플리케이션 제공 매개 변수 또는 주체 (보안 도메인의 대상)가 풀의 연결을 구분하는 데 사용됨을 나타냅니다.

sharable

지원되는 경우 lazy 연결을 활성화할 수 있는 sharable 연결 사용을 활성화합니다.

추적

controlPlaneJacamar이 트랜잭션 경계에서 연결 처리를 추적해야 하는지 여부를 지정합니다.

use-ccm

캐시된 연결 관리자 사용을 활성화합니다.

use-fast-fail

첫 번째 시도에서 연결 할당이 유효하지 않은 경우(true) 또는 풀이 모든 잠재적인 연결에서 소진될 때까지 계속 시도합니다(false).

use-java-context

이를 false 로 설정하면 오브젝트를 글로벌 JNDI에 바인딩합니다.

validate-on-match

연결 팩토리에서 관리형 연결과 일치하려고 할 때 연결 유효성 검사를 수행해야 하는지 여부를 지정합니다. 이는 일반적으로 배경 검증 사용에 한정적입니다.

wrap-xa-resource

XAResource 인스턴스를 org.jboss.tm.XAResourceWrapper 인스턴스에서 래핑해야 하는지 여부를 지정합니다.

XA-resource-timeout

이 값은 XAResource.setTransactionTimeout() 에 전달됩니다. 기본값은 0입니다.

리소스 어댑터 스키마는 EAP_HOME/docs/schema/wildfly-resource-adapters_4_0.xsd 에서 확인할 수 있습니다.

A.22. 리소스 어댑터 통계

Expand
표 A.42. 리소스 어댑터 통계
이름설명

ActiveCount

활성 연결 수입니다. 각 연결은 애플리케이션에서 사용 중이거나 풀에서 사용할 수 있습니다.

AvailableCount

풀에서 사용 가능한 연결 수입니다.

AverageBlockingTime

풀에서 독점 잠금을 얻는 데 걸리는 평균 시간입니다. 값은 밀리초 단위입니다.

AverageCreationTime

연결을 만드는 데 걸리는 평균 시간입니다. 값은 밀리초 단위입니다.

CreatedCount

생성된 연결 수입니다.

DestroyedCount

삭제된 연결 수입니다.

InUseCount

현재 사용 중인 연결 수입니다.

MaxCreationTime

연결을 만드는 데 걸리는 최대 시간입니다. 값은 밀리초 단위입니다.

MaxUsedCount

사용된 최대 연결 수입니다.

MaxWaitCount

동시에 연결을 기다리는 최대 요청 수입니다.

MaxWaitTime

풀에서 독점 잠금을 기다리는 데 걸리는 최대 시간입니다.

TimedOut

시간 초과된 연결 수입니다.

TotalBlockingTime

풀에서 독점 잠금을 기다리는 총 시간입니다. 값은 밀리초 단위입니다.

TotalCreationTime

연결을 만드는 데 소요된 총 시간입니다. 값은 밀리초 단위입니다.

WaitCount

연결을 기다려야 하는 요청 수입니다.

A.23. Cryostat Cryostat 속성

Expand
표 A.43. Cryostat 속성
속성기본설명

default-security-domain

기타

웹 배포에서 사용하는 기본 보안 도메인입니다.

default-server

default-server

배포에 사용할 기본 서버입니다.

default-servlet-container

default

배포에 사용할 기본 서블릿 컨테이너입니다.

default-virtual-host

default-host

배포에 사용할 기본 가상 호스트입니다.

instance-id

${jboss.node.name}

클러스터 인스턴스 ID입니다.

statistics-enabled

false

통계가 활성화되어 있는지 여부입니다.

버퍼 캐시 속성
Expand
표 A.44. buffer-cache 속성
속성기본설명

buffer-size

1024

버퍼의 크기입니다. 더 작은 버퍼를 사용하면 공간을 보다 효과적으로 활용할 수 있습니다.

buffers-per-region

1024

영역당 버퍼 수입니다.

max-regions

10

최대 지역 수입니다. 캐싱에 사용할 수 있는 최대 메모리 양을 제어합니다.

서블릿 컨테이너 속성

서블릿 컨테이너 구성 요소에는 다음과 같은 구조가 있습니다.

서블릿 컨테이너 속성
Expand
표 A.45. 서블릿 컨테이너 속성
속성기본설명

allow-non-standard-wrappers

false

표준 래퍼 클래스를 확장하지 않는 요청 및 응답 래퍼를 사용할 수 있는지 여부입니다.

default-buffer-cache

default

정적 리소스를 캐싱하는 데 사용할 버퍼 캐시입니다.

default-encoding

 

배포된 모든 애플리케이션에 사용할 기본 인코딩입니다.

default-session-timeout

30

컨테이너에 배포된 모든 애플리케이션에 대한 기본 세션 제한 시간(분)입니다.

directory-listing

 

기본 서블릿에 대해 디렉터리 목록을 활성화해야 하는 경우

disable-caching-for-secured-pages

true

보안 페이지링을 위해 캐싱을 비활성화하도록 헤더를 설정할지 여부입니다. 이렇게 비활성화하면 중개자가 민감한 페이지를 캐시할 수 있으므로 보안 문제가 발생할 수 있습니다.

eager-filter-initialization

false

첫 번째 요청보다 배포 시 init() 필터를 호출할지 여부입니다.

ignore-flush

false

서블릿 출력 스트림에서 플러시를 무시합니다. 대부분의 경우 이는 좋은 이유없이 성능이 저하됩니다.

max-sessions

 

한 번에 활성화할 수 있는 최대 세션 수입니다.

proactive-authentication

false

사전 인증을 사용해야 하는지 여부입니다. 인증 정보가 있는 경우 사용자가 항상 인증됩니다.

session-id-length

30

생성된 세션 ID의 길이입니다. 세션 ID가 길수록 안전합니다.

stack-trace-on-error

로컬 전용

스택 추적이 있는 오류 페이지를 오류 발생 시 생성해야 하는 경우 값은 all, none 및 local-only입니다.

use-listener-encoding

false

리스너에 정의된 인코딩을 사용합니다.

MIME-mapping 속성
Expand
표 A.46. MIME-mapping 속성
속성기본설명

value

 

이 매핑의 mime 유형입니다.

welcome-file 속성

시작 파일을 정의하고 옵션이 없습니다.

Crawler-session-management 속성

크롤러 봇에 대한 특수 세션 처리를 구성합니다.

참고

관리 CLI를 사용하여 protocoler -session-management 요소를 관리하는 경우 서블릿 컨테이너 요소의 설정에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.

/subsystem=undertow/servlet-container=default/setting=crawler-session-management:add
/subsystem=undertow/servlet-container=default/setting=crawler-session-management:read-resource
Copy to Clipboard Toggle word wrap
Expand
표 A.47. Crawler-session-management 속성
속성기본설명

session-timeout

 

크롤러가 소유한 세션의 제한 시간(초)입니다.

user-agents

 

크롤러의 사용자 에이전트와 일치시키는 데 사용되는 정규식입니다.

JSP 속성
참고

관리 CLI를 사용하여 jsp 요소를 관리하는 경우 서블릿 컨테이너 요소의 설정에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.

/subsystem=undertow/servlet-container=default/setting=jsp:read-resource
Copy to Clipboard Toggle word wrap
Expand
표 A.48. JSP 속성
속성기본설명

check-interval

0

백그라운드 스레드를 사용하여 JSP 업데이트 간격을 확인합니다.

Development

false

JSP를 즉시 다시 로드할 수 있는 개발 모드를 활성화합니다.

비활성화됨

false

JSP 컨테이너를 활성화합니다.

display-source-fragment

true

런타임 오류가 발생하면 해당 JSP 소스 조각을 표시하려고 합니다.

dump-smap

false

파일에 SMAP 데이터를 작성합니다.

error-on-use-bean-invalid-class-attribute

false

useBean에서 잘못된 클래스를 사용할 때 오류를 활성화합니다.

generate-strings-as-char-arrays

false

문자열 상수를 char 배열로 생성합니다.

java-encoding

UTF8

Java 소스에 사용되는 인코딩을 지정합니다.

계속 생성됨

true

생성된 서블릿을 유지합니다.

mapped-file

true

JSP 소스에 매핑합니다.

modification-test-interval

4

업데이트를 위해 두 테스트 사이의 최소 시간(초)입니다.

optimize-scriptlets

false

JSP 스크립트릿이 문자열 연결을 제거하도록 최적화되어야 하는 경우

recompile-on-fail

false

각 요청에서 실패한 JSP 컴파일을 다시 시도합니다.

scratch-dir

 

다른 작업 디렉터리를 지정합니다.

smap

true

SMAP를 활성화합니다.

source-vm

1.8

컴파일을 위한 소스 VM 수준입니다.

tag-pooling

true

태그 풀링을 활성화합니다.

target-vm

1.8

컴파일을 위한 대상 VM 수준입니다.

Trim-spaces

false

생성된 서블릿에서 일부 공백을 해결합니다.

x-powered-by

true

x-powered-by에서 JSP 엔진 알림을 활성화합니다.

persistent-sessions 속성
참고

관리 CLI를 사용하여 persistent-sessions 요소를 관리하는 경우 서블릿 컨테이너 요소의 설정에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.

/subsystem=undertow/servlet-container=default/setting=persistent-sessions:add
/subsystem=undertow/servlet-container=default/setting=persistent-sessions:read-resource
Copy to Clipboard Toggle word wrap
Expand
표 A.49. persistent-sessions 속성
속성기본설명

path

 

영구 세션 데이터 디렉터리의 경로입니다. 이 값이 null이면 세션이 메모리에 저장됩니다.

relative-to

 

경로가 상대적인 디렉터리입니다.

참고

관리 CLI를 사용하여 session-cookie 요소를 관리하는 경우 서블릿 컨테이너 요소의 설정에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.

/subsystem=undertow/servlet-container=default/setting=session-cookie:add
/subsystem=undertow/servlet-container=default/setting=session-cookie:read-resource
Copy to Clipboard Toggle word wrap
Expand
표 A.50. 세션 쿠키 속성
속성기본설명

댓글

 

쿠키 댓글.

domain

 

쿠키 도메인.

HTTP 전용

 

쿠키가 http 전용인지 여부입니다.

max-age

 

쿠키의 최대 사용 기간입니다.

name

 

쿠키 이름입니다.

보안

 

쿠키가 안전한지 여부입니다.

WebSockets 속성
참고

관리 CLI를 사용하여 websockets 요소를 관리하는 경우 서블릿 컨테이너 요소의 설정에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.

/subsystem=undertow/servlet-container=default/setting=websockets:read-resource
Copy to Clipboard Toggle word wrap
Expand
표 A.51. WebSockets 속성
속성기본설명

buffer-pool

default

websocket 배포에 사용할 버퍼 풀입니다.

dispatch-to-worker

true

콜백을 작업자 스레드에 디스패치해야 하는지 여부입니다. 이 값이 false 이면 IO 스레드에서 실행되므로 더 빠르지만 차단 작업을 수행하지 않도록 주의해야 합니다.

worker

default

websocket 배포에 사용할 작업자입니다.

속성 필터링
custom-filter 필터
Expand
표 A.52. 사용자 정의 필터 속성
속성기본설명

class-name

 

class name의 class name입니다.

module

 

클래스를 로드할 수 있는 모듈 이름입니다.

parameters

 

필터 매개 변수.

오류 페이지 필터

오류 페이지

Expand
표 A.53. 오류 페이지 속성
속성기본설명

코드

 

페이지 코드 오류 발생.

path

 

오류 페이지 경로입니다.

expression-filter 필터

Cryostat 표현식 언어에서 구문 분석된 필터입니다.

Expand
표 A.54. 표현식-filter 속성
속성기본설명

expression

 

필터를 정의하는 표현식입니다.

module

 

필터 정의를 로드하는 데 사용하는 모듈입니다.

gzip 필터

gzip 필터를 정의하고 속성이 없습니다.

MOD-cluster 필터

mod-cluster 필터 구성 요소에는 다음과 같은 구조가 있습니다.

Expand
표 A.55. MOD-cluster 속성
속성기본설명

advertise-frequency

10000

mod_cluster가 네트워크에서 자신을 알리는 빈도(밀리초)입니다.

advertise-path

/

mod_cluster가 등록된 경로입니다.

advertise-protocol

http

사용 중인 프로토콜입니다.

advertise-socket-binding

 

알리는 데 사용되는 멀티 캐스트 그룹입니다.

broken-node-timeout

60000

손상된 노드가 테이블에서 제거되기 전에 경과해야 하는 시간입니다.

cached-connections-per-thread

5

연결 수가 무기한 유지되는 연결 수입니다.

connection-idle-timeout

60

연결이 닫히기 전에 유휴 상태일 수 있는 시간입니다. 풀 크기가 구성된 최소값까지 감소하면 연결이 시간 초과되지 않으며 cached-connections-per-thread 로 구성됩니다.

connections-per-thread

10

IO 스레드당 백엔드 서버에 유지 관리할 연결 수입니다.

enable-http2

false

로드 밸런서에서 백엔드 연결을 HTTP/2로 업그레이드해야 하는지 여부입니다. HTTP/2가 지원되지 않으면 HTTP 또는 HTTPS가 정상적으로 사용됩니다.

health-check-interval

10000

백엔드 노드에 대한 상태 점검 ping 빈도입니다.

management-access-predicate

 

들어오는 요청에 적용되는 서술자로, mod 클러스터 관리 명령을 수행할 수 있는지 확인합니다. management-socket-binding 에서 시작된 요청에 대한 관리를 제한하여 제공되는 항목에 대한 추가 보안을 제공합니다.

management-socket-binding

 

mod_cluster 관리 포트의 소켓 바인딩입니다. mod_cluster를 사용하는 경우, 요청을 처리할 공용 HTTP 리스너와 mod cluster 명령을 처리하기 위해 내부 네트워크에 바인딩된 두 개의 HTTP 리스너를 정의해야 합니다. 이 소켓 바인딩은 내부 리스너에 일치해야 하며 공개적으로 액세스할 수 없어야 합니다.

max-request-time

-1

백엔드 노드에 대한 요청이 종료되기 전에 수행할 수 있는 최대 시간입니다.

request-queue-size

10

503에서 요청이 거부되기 전에 연결 풀이 가득 차면 대기열에 있을 수 있는 요청 수입니다.

security-key

 

mod_cluster 그룹에 사용되는 보안 키입니다. 모든 멤버는 동일한 보안 키를 사용해야 합니다.

security-realm

 

SSL 구성을 제공하는 보안 영역입니다.

use-alias

false

별칭 확인이 수행되었는지 여부입니다.

worker

default

광고 알림을 보내는 데 사용되는 XNIO 작업자입니다.

Expand
표 A.56. 밸런서 속성
속성기본설명

max-attempts

 

요청을 백엔드 서버로 전송하려는 시도 횟수입니다.

sticky-session

 

고정 세션이 활성화된 경우입니다.

sticky-session-cookie

 

세션 쿠키 이름입니다.

sticky-session-force

 

true 인 경우 요청이 고정 노드로 라우팅될 수 없는 경우 오류가 반환됩니다. 그렇지 않으면 다른 노드로 라우팅됩니다.

sticky-session-path

 

고정 세션 쿠키의 경로입니다.

sticky-session-remove

 

요청을 올바른 호스트로 라우팅할 수 없는 경우 세션 쿠키를 제거합니다.

wait-worker

 

사용 가능한 작업자를 대기하는 시간(초)입니다.

load-balancing-group 특성

로드 밸런싱 그룹을 정의하고 옵션이 없습니다.

Expand
표 A.57. 노드 속성
속성기본설명

별칭

 

노드 별칭입니다.

cache-connections

 

무기한 상태를 유지할 연결 수입니다.

선택됨

 

선택한 개수입니다.

flush-packets

 

수신된 데이터가 즉시 플러시되어야 하는 경우

load

 

이 노드의 현재 로드입니다.

load-balancing-group

 

이 노드가 속한 로드 밸런싱 그룹입니다.

max-connections

 

IO 스레드당 최대 연결 수입니다.

open-connections

 

현재 열려 있는 연결 수입니다.

ping

 

노드가 ping됩니다.

queue-new-requests

 

요청이 수신되고 작업자를 즉시 사용할 수 없는 경우 대기해야 합니다.

읽기

 

노드에서 읽은 바이트 수입니다.

request-queue-size

 

요청 큐의 크기입니다.

status

 

이 노드의 현재 상태입니다.

timeout

 

요청 시간 초과입니다.

ttl

 

연결 수가 cache-connections 보다 큰 경우 시간 연결은 닫히기 전에 요청 없이 활성 상태로 유지됩니다.

URI

 

로드 밸런서에서 노드에 연결하는 데 사용하는 URI입니다.

기록됨

 

노드에 전송된 바이트 수입니다.

Expand
표 A.58. 컨텍스트 속성
속성기본설명

requests

 

이 컨텍스트에 대한 요청 수입니다.

status

 

이 컨텍스트의 상태입니다.

요청 제한 필터
Expand
표 A.59. 요청 제한 속성
속성기본설명

max-concurrent-requests

 

최대 동시 요청 수입니다.

queue-size

 

거부되기 전에 대기열에 요청할 요청 수입니다.

response-header 필터

응답 헤더 필터를 사용하면 사용자 지정 헤더를 추가할 수 있습니다.

Expand
표 A.60. response-header 특성
속성기본설명

header-name

 

헤더 이름입니다.

header-value

 

헤더 값입니다.

필터 다시 작성
Expand
표 A.61. 속성 다시 작성
속성기본설명

리디렉션

false

재작성 대신 리디렉션을 수행할지 여부입니다.

target

 

대상을 정의하는 표현식입니다. 상수 대상으로 리디렉션하는 경우 값 주위에 작은따옴표를 넣습니다.

처리기 속성
파일 속성
Expand
표 A.62. 파일 속성
속성기본설명

cache-buffer-size

1024

버퍼의 크기입니다.

cache-buffers

1024

버퍼 수입니다.

대소문자를 구분합니다.

true

대소문자를 구분하는 파일 처리 사용 여부입니다. 이는 민감하지 않은 경우 이를 false 로 설정하면 기본 파일 시스템이 대소문자를 구분하지 않는 경우에만 작동합니다.

directory-listing

false

디렉터리 목록을 활성화할지 여부입니다.

follow-symlink

false

다음 심볼릭 링크를 활성화할지 여부입니다.

path

 

파일 핸들러가 리소스를 제공하는 파일 시스템의 경로입니다.

safe-symlink-paths

 

심볼릭 링크의 대상이 되는 것이 안전한 경로입니다.

정적 리소스에 Cryostat 사용

이전 버전의 JBoss EAP는 WebdavServlet 을 통해 하위 시스템에서 Cryostat를 사용하여 정적 리소스를 호스팅하고 해당 파일에 액세스하고 조작하기 위한 추가 HTTP 메서드를 활성화할 수 있었습니다. JBoss EAP 7에서 undertow 하위 시스템은 파일 핸들러를 사용하여 정적 파일을 제공하는 메커니즘을 제공하지만 undertow 하위 시스템은 Cryostat를 지원하지 않습니다. JBoss EAP 7과 함께 Cryostat를 사용하려면 사용자 지정 Cryostat 서블릿을 작성할 수 있습니다.

reverse-proxy 속성

reverse-proxy 처리기 구성 요소에는 다음과 같은 구조가 있습니다.

Expand
표 A.63. reverse-proxy 속성
속성기본설명

cached-connections-per-thread

5

연결 수가 무기한 유지되는 연결 수입니다.

connection-idle-timeout

60

연결이 닫히기 전에 유휴 상태일 수 있는 시간입니다. 풀 크기가 구성된 최소값( cached-connections-per-thread에 의해 구성됨)이 없으면 연결이 시간 초과되지 않습니다.

connections-per-thread

10

IO 스레드당 백엔드 서버에 유지 관리할 연결 수입니다.

max-request-time

-1

프록시 요청을 종료하기 전에 활성화할 수 있는 최대 시간입니다. 기본값은 무제한입니다.

problem-server-retry

30

다운된 서버에 다시 연결을 시도하기 전에 대기하는 시간(초)입니다.

request-queue-size

10

503에서 요청이 거부되기 전에 연결 풀이 가득 차면 대기열에 있을 수 있는 요청 수입니다.

session-cookie-names

JSESSIONID

쉼표로 구분된 세션 쿠키 이름 목록입니다. 일반적으로 이것은 JSESSIONID가 될 것입니다.

Expand
표 A.64. 호스트 속성
속성기본설명

instance-id

 

고정 세션을 활성화하는 데 사용할 인스턴스 ID 또는 JVM 경로입니다.

outbound-socket-binding

 

이 호스트에 대한 아웃바운드 소켓 바인딩입니다.

path

/

호스트에서 루트 리소스가 아닌 경우 선택적 경로입니다.

scheme

http

사용되는 체계의 종류입니다.

security-realm

 

호스트 연결에 대한 SSL 구성을 제공하는 보안 영역입니다.

서버 속성

서버 구성 요소에는 다음과 같은 구조가 있습니다.

서버 속성
Expand
표 A.65. 서버 속성
속성기본설명

default-host

default-host

서버의 기본 가상 호스트입니다.

servlet-container

default

서버의 기본 서블릿 컨테이너입니다.

HTTP-listener 속성
Expand
표 A.66. HTTP-listener 속성
속성기본설명

allow-encoded-slash

false

요청이 인코딩된 문자(예: %2F )와 함께 제공되는 경우 이러한 요청이 디코딩되는지 여부입니다.

allow-equals-in-cookie-value

false

이스케이프되지 않은 쿠키 값으로 이스케이프되지 않은 문자를 허용할지 여부입니다. 따옴표가 없는 쿠키 값은 동일한 문자를 포함할 수 없습니다. 값이 있는 경우 등호 앞에 값이 종료됩니다. 쿠키 값의 나머지 부분은 삭제됩니다.

always-set-keep-alive

true

Connection: keep-alive 헤더가 사양에 엄격하게 필요하지 않은 경우에도 응답에 추가되는지 여부입니다.

buffer-pipelined-data

false

파이프라인된 요청을 버퍼링할지 여부입니다.

buffer-pool

default

리스너의 버퍼 풀입니다.

certificate-forwarding

false

인증서 전달을 활성화해야 하는지 여부입니다. 이를 활성화하면 리스너는 SSL_CLIENT_CERT 속성에서 인증서를 가져옵니다. 프록시 뒤의 경우에만 활성화해야 하며 프록시는 항상 이러한 헤더를 설정하도록 구성됩니다.

decode-url

true

구문 분석기가 선택한 문자 인코딩을 사용하여 URL 및 쿼리 매개변수를 디코딩하는지 여부(기본적으로 UTF-8). 이 값이 false이면 디코딩되지 않습니다. 이렇게 하면 이후 처리기에서 원하는 모든 charset으로 디코딩할 수 있습니다.

disallowed-methods

["TRACE"]

허용되지 않는 쉼표로 구분된 HTTP 메서드 목록입니다.

enable-http2

false

이 리스너에 HTTP/2 지원을 활성화할지 여부입니다.

enabled

true

리스너가 활성화되어 있는지 여부입니다.

http2-enable-push

true

이 연결에 서버 푸시가 활성화되었는지 여부입니다.

http2-header-table-size

 

HPACK 압축에 사용되는 헤더 테이블의 크기(바이트)입니다. 이 메모리 양은 압축을 위해 연결별로 할당됩니다. 큰 값은 더 많은 메모리를 사용하지만 압축이 개선될 수 있습니다.

http2-initial-window-size

 

클라이언트가 서버에 데이터를 보낼 수 있는 속도를 제어하는 흐름 제어 창 크기입니다.

http2-max-concurrent-streams

 

단일 연결에서 언제든지 활성화할 수 있는 최대 HTTP/2 스트림 수입니다.

http2-max-frame-size

 

최대 HTTP/2 프레임 크기입니다.

http2-max-header-list-size

 

서버가 허용할 준비가 된 요청 헤더의 최대 크기입니다.

max-buffered-request-size

16384

버퍼링된 요청의 최대 크기(바이트 요청)는 일반적으로 버퍼링되지 않으며, 가장 일반적인 경우는 POST 요청에 대해 SSL 재협정을 수행할 때이고, 게시 데이터는 재협상을 수행하기 위해 완전히 버퍼링되어야 합니다.

max-connections

 

최대 동시 연결 수입니다.

max-cookies

200

구문 분석될 최대 쿠키 수입니다. 해시 취약점으로부터 보호하는 데 사용됩니다.

max-header-size

1048576

HTTP 요청 헤더의 최대 크기(바이트)입니다.

max-headers

200

구문 분석할 최대 헤더 수입니다. 해시 취약점으로부터 보호하는 데 사용됩니다.

max-parameters

1000

구문 분석될 최대 매개변수 수입니다. 해시 취약점으로부터 보호하는 데 사용됩니다. 이는 쿼리 매개변수와 POST 데이터 모두에 적용되지만 누적되지는 않습니다. 예를 들어 max 매개변수 * 2개의 총 매개변수가 있을 수 있습니다.

max-post-size

10485760

허용되는 최대 게시물의 크기입니다.

no-request-timeout

60000

컨테이너에서 닫기 전에 연결을 유휴 상태로 설정할 수 있는 시간(밀리초)입니다.

proxy-address-forwarding

false

x-forwarded-host 및 유사한 헤더를 활성화하고 원격 IP 주소와 호스트 이름을 설정합니다.

read-timeout

 

소켓에 대한 읽기 제한 시간을 밀리초 단위로 구성합니다. 읽기가 성공하지 않고 경과되는 시간이 주어진 경우 소켓의 다음 읽기는 {@link ReadTimeoutException}을(를) 생성합니다.

receive-buffer

 

수신 버퍼 크기입니다.

record-request-start-time

false

요청 시작 시간을 기록할지 여부입니다. 요청 시간이 기록될 수 있습니다. 이는 작지만 측정 가능한 성능에 영향을 미칩니다.

redirect-socket

 

이 리스너가 비 SSL 요청을 지원하고 일치에 필요한 요청이 수신되면 여기에 지정된 소켓 바인딩 포트로 요청을 자동으로 리디렉션할지 여부에 관계없이 SSL 전송이 필요합니다.

request-parse-timeout

 

요청을 구문 분석하는 데 사용할 수 있는 최대 시간(밀리초)입니다.

resolve-peer-address

false

호스트 DNS 조회를 활성화합니다.

send-buffer

 

전송 버퍼 크기입니다.

socket-binding

 

리스너의 소켓 바인딩

tcp-backlog

 

지정된 백로그를 사용하여 서버를 구성합니다.

tcp-keep-alive

 

구현에 따라 TCP keep-alive 메시지를 보내도록 채널을 구성합니다.

url-charset

UTF-8

URL 문자 집합.

worker

default

리스너의 XNIO 작업자입니다.

write-timeout

 

소켓에 대한 쓰기 제한 시간을 밀리초 단위로 구성합니다. 쓰기가 성공하지 않고 지정된 시간이 지나면 소켓의 다음 쓰기가 {@link WriteTimeoutException}을(가) 발생합니다.

다음 속성은 읽기 전용이며 undertow 하위 시스템에서 통계가 활성화된 경우에만 사용할 수 있습니다.

Expand
표 A.67. HTTP-listener Metric 특성
속성기본설명

bytes-received

 

이 리스너에서 수신한 바이트 수입니다.

bytes-sent

 

이 리스너에서 전송된 바이트 수입니다.

error-count

 

이 리스너에 의해 전송된 500개의 응답 수입니다.

max-processing-time

 

이 리스너에 대한 요청에 의해 걸린 최대 처리 시간입니다.

처리 시간

 

이 리스너에 의해 전달되는 모든 요청의 총 처리 시간입니다.

request-count

 

이 리스너에서 제공한 요청 수입니다.

https-listener 속성
Expand
표 A.68. https-listener 속성
속성기본설명

allow-encoded-slash

false

요청이 인코딩된 문자(예: %2F )와 함께 제공되는 경우 이러한 요청이 디코딩되는지 여부입니다.

allow-equals-in-cookie-value

false

이스케이프되지 않은 쿠키 값으로 이스케이프되지 않은 문자를 허용할지 여부입니다. 따옴표가 없는 쿠키 값은 동일한 문자를 포함할 수 없습니다. 값이 있는 경우 등호 앞에 값이 종료됩니다. 쿠키 값의 나머지 부분은 삭제됩니다.

always-set-keep-alive

true

Connection: keep-alive 헤더가 사양에 엄격하게 필요하지 않은 경우에도 응답에 추가되는지 여부입니다.

buffer-pipelined-data

false

파이프라인된 요청을 버퍼링할지 여부입니다.

buffer-pool

default

리스너의 버퍼 풀입니다.

decode-url

true

구문 분석기가 선택한 문자 인코딩을 사용하여 URL 및 쿼리 매개변수를 디코딩하는지 여부(기본적으로 UTF-8). 이 값이 false이면 디코딩되지 않습니다. 이렇게 하면 이후 처리기에서 원하는 모든 charset으로 디코딩할 수 있습니다.

disallowed-methods

["TRACE"]

허용되지 않는 쉼표로 구분된 HTTP 메서드 목록입니다.

enable-http2

false

이 리스너에 대한 HTTP/2 지원을 활성화합니다.

enable-spdy

false

이 리스너에 대한 SPDY 지원을 활성화합니다.

enabled

true

리스너가 활성화된 경우

enabled-cipher-suites

 

활성화된 SSL 암호를 구성합니다.

enabled-protocols

 

SSL 프로토콜을 구성합니다.

http2-enable-push

true

이 연결에 서버 푸시가 활성화된 경우

http2-header-table-size

 

HPACK 압축에 사용되는 헤더 테이블의 크기(바이트)입니다. 이 메모리 양은 압축을 위해 연결별로 할당됩니다. 큰 값은 더 많은 메모리를 사용하지만 압축이 개선될 수 있습니다.

http2-initial-window-size

 

클라이언트가 서버에 데이터를 보낼 수 있는 속도를 제어하는 흐름 제어 창 크기입니다.

http2-max-concurrent-streams

 

단일 연결에서 언제든지 활성화할 수 있는 최대 HTTP/2 스트림 수입니다.

http2-max-frame-size

 

최대 HTTP/2 프레임 크기입니다.

http2-max-header-list-size

 

서버가 허용할 준비가 된 요청 헤더의 최대 크기입니다.

max-buffered-request-size

16384

버퍼링된 요청의 최대 크기(바이트 요청)는 일반적으로 버퍼링되지 않으며, 가장 일반적인 경우는 POST 요청에 대해 SSL 재협정을 수행할 때이고, 게시 데이터는 재협상을 수행하기 위해 완전히 버퍼링되어야 합니다.

max-connections

 

최대 동시 연결 수입니다.

max-cookies

100

구문 분석될 최대 쿠키 수입니다. 해시 취약점으로부터 보호하는 데 사용됩니다.

max-header-size

1048576

HTTP 요청 헤더의 최대 크기(바이트)입니다.

max-headers

200

구문 분석할 최대 헤더 수입니다. 이는 해시 취약점으로부터 보호하는 데 사용됩니다.

max-parameters

1000

구문 분석될 최대 매개변수 수입니다. 해시 취약점으로부터 보호하는 데 사용됩니다. 이는 쿼리 매개변수와 POST 데이터 모두에 적용되지만 누적되지는 않습니다. 예를 들어 max 매개변수 * 2개의 총 매개변수가 있을 수 있습니다.

max-post-size

10485760

허용되는 최대 게시물의 크기입니다.

no-request-timeout

60000

컨테이너에서 닫기 전에 연결을 유휴 상태로 설정할 수 있는 시간(밀리초)입니다.

read-timeout

 

소켓에 대한 읽기 제한 시간을 밀리초 단위로 구성합니다. 읽기가 성공하지 않고 경과되는 시간이 주어진 경우 소켓의 다음 읽기는 {@link ReadTimeoutException}을(를) 생성합니다.

receive-buffer

 

수신 버퍼 크기입니다.

record-request-start-time

false

요청 시작 시간을 기록할지 여부입니다. 요청 시간이 기록될 수 있습니다. 이는 작지만 측정 가능한 성능에 영향을 미칩니다.

request-parse-timeout

 

요청을 구문 분석하는 데 사용할 수 있는 최대 시간(밀리초)입니다.

resolve-peer-address

false

호스트 DNS 조회를 활성화합니다.

security-realm

 

리스너의 보안 영역입니다.

send-buffer

 

전송 버퍼 크기입니다.

socket-binding

 

리스너의 소켓 바인딩입니다.

ssl-session-cache-size

 

활성 SSL 세션의 최대 수입니다.

SSL-session-timeout

 

SSL 세션의 제한 시간(초)입니다.

tcp-backlog

 

지정된 백로그를 사용하여 서버를 구성합니다.

tcp-keep-alive

 

구현에 따라 TCP keep-alive 메시지를 보내도록 채널을 구성합니다.

url-charset

UTF-8

URL 문자 집합.

verify-client

NOT_REQUESTED

SSL 채널에 대해 원하는 SSL 클라이언트 인증 모드입니다.

worker

default

리스너의 XNIO 작업자입니다.

write-timeout

 

소켓에 대한 쓰기 제한 시간을 밀리초 단위로 구성합니다. 쓰기가 성공하지 않고 지정된 시간이 지나면 소켓의 다음 쓰기가 {@link WriteTimeoutException}을(가) 발생합니다.

다음 속성은 읽기 전용이며 undertow 하위 시스템에서 통계가 활성화된 경우에만 사용할 수 있습니다.

Expand
표 A.69. https-listener Metric 특성
속성기본설명

bytes-received

 

이 리스너에서 수신한 바이트 수입니다.

bytes-sent

 

이 리스너에서 전송된 바이트 수입니다.

error-count

 

이 리스너에 의해 전송된 500개의 응답 수입니다.

max-processing-time

 

이 리스너에 대한 요청에 의해 걸린 최대 처리 시간입니다.

처리 시간

 

이 리스너에 의해 전달되는 모든 요청의 총 처리 시간입니다.

request-count

 

이 리스너에서 제공한 요청 수입니다.

Cryostat-listener 속성
Expand
표 A.70. Cryostat-listener 속성
속성기본설명

allow-encoded-slash

false

요청이 인코딩된 문자(예: %2F )와 함께 제공되는 경우 이러한 요청이 디코딩되는지 여부입니다.

allow-equals-in-cookie-value

false

이스케이프되지 않은 쿠키 값으로 이스케이프되지 않은 문자를 허용할지 여부입니다. 따옴표가 없는 쿠키 값은 동일한 문자를 포함할 수 없습니다. 값이 있는 경우 등호 앞에 값이 종료됩니다. 쿠키 값의 나머지 부분은 삭제됩니다.

always-set-keep-alive

true

Connection: keep-alive 헤더가 사양에 엄격하게 필요하지 않은 경우에도 응답에 추가되는지 여부입니다.

buffer-pipelined-data

false

파이프라인된 요청을 버퍼링할지 여부입니다.

buffer-pool

default

Cryostat 리스너의 버퍼 풀입니다.

decode-url

true

이 값이 true이면 구문 분석기는 선택한 문자 인코딩(기본적으로UTF-8)을 사용하여 URL 및 쿼리 매개변수를 디코딩합니다. 이 값이 false이면 디코딩되지 않습니다. 이렇게 하면 이후 처리기에서 원하는 모든 charset으로 디코딩할 수 있습니다.

disallowed-methods

["TRACE"]

허용되지 않는 쉼표로 구분된 HTTP 메서드 목록입니다.

enabled

true

리스너가 활성화된 경우

max-ajp-packet-size

 

지원되는 최대 패킷 크기입니다. 이 문제가 수정되면 로드 밸런서 및 백엔드 서버에서 증가했습니다.

max-buffered-request-size

16384

버퍼링된 요청의 최대 크기(바이트 요청)는 일반적으로 버퍼링되지 않으며, 가장 일반적인 경우는 POST 요청에 대해 SSL 재협정을 수행할 때이고, 게시 데이터는 재협상을 수행하기 위해 완전히 버퍼링되어야 합니다.

max-connections

 

최대 동시 연결 수입니다.

max-cookies

200

구문 분석될 최대 쿠키 수입니다. 해시 취약점으로부터 보호하는 데 사용됩니다.

max-header-size

1048576

HTTP 요청 헤더의 최대 크기(바이트)입니다.

max-headers

200

구문 분석할 최대 헤더 수입니다. 해시 취약점으로부터 보호하는 데 사용됩니다.

max-parameters

100

구문 분석될 최대 매개변수 수입니다. 해시 취약점으로부터 보호하는 데 사용됩니다. 이는 쿼리 매개변수와 POST 데이터 모두에 적용되지만 누적되지는 않습니다. 예를 들어 max 매개변수 * 2개의 총 매개변수가 있을 수 있습니다.

max-post-size

10485760

허용되는 최대 게시물 크기

no-request-timeout

60000

컨테이너에서 닫기 전에 연결을 유휴 상태로 설정할 수 있는 시간(밀리초)입니다.

read-timeout

 

소켓에 대한 읽기 제한 시간을 밀리초 단위로 구성합니다. 읽기가 성공하지 않고 경과되는 시간이 주어진 경우 소켓의 다음 읽기는 {@link ReadTimeoutException}을(를) 생성합니다.

receive-buffer

 

수신 버퍼 크기입니다.

record-request-start-time

false

요청 시작 시간을 기록할지 여부입니다. 요청 시간이 기록될 수 있습니다. 이는 작지만 측정 가능한 성능에 영향을 미칩니다.

redirect-socket

 

이 리스너가 비 SSL 요청을 지원하고 일치에 필요한 요청이 수신되면 여기에 지정된 소켓 바인딩 포트로 요청을 자동으로 리디렉션할지 여부에 관계없이 SSL 전송이 필요합니다.

request-parse-timeout

 

요청을 구문 분석하는 데 사용할 수 있는 최대 시간(밀리초)입니다.

resolve-peer-address

false

호스트 DNS 조회를 활성화합니다.

scheme

 

리스너 스키마는 HTTP 또는 HTTPS일 수 있습니다. 기본적으로 스키마는 들어오는 Cryostat 요청에서 가져옵니다.

send-buffer

 

전송 버퍼 크기입니다.

socket-binding

 

Cryostat 리스너의 소켓 바인딩입니다.

tcp-backlog

 

지정된 백로그를 사용하여 서버를 구성합니다.

tcp-keep-alive

 

구현에 따라 TCP keep-alive 메시지를 보내도록 채널을 구성합니다.

url-charset

UTF-8

URL 문자 집합.

worker

default

리스너의 XNIO 작업자입니다.

write-timeout

 

소켓에 대한 쓰기 제한 시간을 밀리초 단위로 구성합니다. 쓰기가 성공하지 않고 지정된 시간이 지나면 소켓의 다음 쓰기가 {@link WriteTimeoutException}을(가) 발생합니다.

다음 속성은 읽기 전용이며 undertow 하위 시스템에서 통계가 활성화된 경우에만 사용할 수 있습니다.

Expand
표 A.71. Cryostat-listener Metric 특성
속성기본설명

bytes-received

 

이 리스너에서 수신한 바이트 수입니다.

bytes-sent

 

이 리스너에서 전송된 바이트 수입니다.

error-count

 

이 리스너에 의해 전송된 500개의 응답 수입니다.

max-processing-time

 

이 리스너에 대한 요청에 의해 걸린 최대 처리 시간입니다.

처리 시간

 

이 리스너에 의해 전달되는 모든 요청의 총 처리 시간입니다.

request-count

 

이 리스너에서 제공한 요청 수입니다.

호스트 속성
Expand
표 A.72. 호스트 속성
속성기본설명

별칭

 

호스트에 대한 쉼표로 구분된 별칭 목록입니다.

default-response-code

404

설정된 경우 요청된 컨텍스트가 서버에 없는 경우 이 응답 코드가 다시 전송됩니다.

default-web-module

ROOT.war

기본 웹 모듈.

disable-console-redirect

false

true로 설정하면 이 호스트에 대해 /console 리디렉션이 활성화되지 않습니다.

filter-ref 속성
Expand
표 A.73. filter-ref 속성
속성기본설명

predicate

 

서술자는 교환을 기반으로 true/false 결정을 내릴 수 있는 간단한 방법을 제공합니다. 많은 처리기에는 조건부로 적용되는 요구 사항이 있으며 서술자는 일반적으로 조건을 지정하는 일반적인 방법을 제공합니다.

priority

1

필터 순서를 정의합니다. 1 이상으로 설정해야 합니다. 숫자가 클수록 처리기 체인의 앞부분에 동일한 컨텍스트 아래의 다른 컨텍스트보다 서버에 포함되도록 지시합니다.

access-log 속성
참고

관리 CLI를 사용하여 access-log 요소를 관리하는 경우 호스트 요소의 설정에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.

/subsystem=undertow/server=default-server/host=default-host/setting=access-log:add
/subsystem=undertow/server=default-server/host=default-host/setting=access-log:read-resource
Copy to Clipboard Toggle word wrap
Expand
표 A.74. access-log 속성
속성기본설명

디렉터리

${jboss.server.log.dir}

로그를 저장할 디렉터리입니다.

확장됨

false

로그에서 확장 로그 파일 형식을 사용하는지 여부입니다.

패턴

공통

액세스 로그 패턴입니다.

predicate

 

요청을 로깅해야 하는지 결정하는 서술자입니다.

접두사

access_log.

로그 파일 이름에 대한 접두사입니다.

relative-to

 

경로가 상대적인 디렉터리입니다.

rotate

true

매일 액세스 로그를 순환할지 여부입니다.

suffix

log

로그 파일 이름의 접미사입니다.

use-server-log

false

별도의 파일이 아닌 서버 로그에 로그를 쓸지 여부입니다.

worker

default

로깅에 사용할 작업자의 이름입니다.

Single-sign-on 속성
참고

관리 CLI를 사용하여 Single Sign-On 요소를 관리하는 경우 호스트 요소의 설정에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.

/subsystem=undertow/server=default-server/host=default-host/setting=single-sign-on:add
/subsystem=undertow/server=default-server/host=default-host/setting=single-sign-on:read-resource
Copy to Clipboard Toggle word wrap
중요

분산 Single Sign-On은 이전 버전의 JBoss EAP와의 애플리케이션 관점과 다르지 않지만 JBoss EAP 7에서는 인증 정보의 캐싱 및 배포가 다르게 처리됩니다. JBoss EAP 7의 경우 HA 프로필을 실행할 때 기본적으로 각 호스트에는 관련 세션 및 SSO 쿠키 정보를 저장할 자체 Infinispan 캐시가 있습니다. 이 캐시는 웹 캐시 컨테이너의 기본 캐시를 기반으로 합니다. JBoss EAP는 모든 호스트의 개별 캐시 간에 전파 정보를 처리합니다.

Expand
표 A.75. Single-sign-on 속성
속성기본설명

cookie-name

JSESSIONIDSSO

쿠키 이름입니다.

domain

 

사용할 쿠키 도메인입니다.

HTTP 전용

false

쿠키 httpOnly 특성을 설정합니다.

path

/

쿠키 경로입니다.

보안

false

쿠키 보안 속성을 설정합니다.

위치 속성
Expand
표 A.76. 위치 속성
속성기본설명

handler

 

이 위치의 기본 처리기입니다.

A.24. HTTP 메서드의 기본 동작

이전 JBoss EAP 릴리스의 하위 시스템과 비교했을 때 JBoss EAP 7.0의 undertow 하위 시스템은 HTTP 메서드의 기본 동작이 다릅니다. 다음 표에는 JBoss EAP 7.0의 기본 동작이 요약되어 있습니다.

Expand
표 A.77. HTTP 메서드 기본 동작
HTTP 메서드JSP서블릿Static HTML

GET

OK

구현에 따라 다름

OK

POST

OK

구현에 따라 다름

NOT_ALLOWED

HEAD

OK

구현에 따라 다름

OK

PUT

NOT_ALLOWED

구현에 따라 다름

NOT_ALLOWED

TRACE

NOT_ALLOWED

NOT_ALLOWED

NOT_ALLOWED

DELETE

NOT_ALLOWED

구현에 따라 다름

NOT_ALLOWED

옵션

NOT_ALLOWED

구현에 따라 다름

OK

A.25. IO Cryostat 속성

Expand
표 A.78. 작업자 속성
속성기본설명

io-threads

 

사용할 IO 스레드 수입니다.

stack-size

0

스택의 크기입니다.

task-keepalive

60

작업에 대한 연결 시간을 유지합니다. 이 속성은 현재 무시되므로 사용해서는 안 됩니다.

task-max-threads

 

작업의 최대 스레드 수입니다.

Expand
표 A.79. buffer-pool 속성
속성기본설명

buffer-size

 

버퍼의 크기입니다.

buffers-per-slice

 

슬라이스당 버퍼 수입니다.

direct-buffers

 

버퍼 풀이 직접 버퍼를 사용합니까.

A.26. remoting Cryostat 속성

Expand
표 A.80. 속성 리모팅
속성기본설명

worker-read-threads

1

remoting 작업자에 대해 생성할 읽기 스레드 수입니다.

worker-task-core-threads

4

remoting 작업자 작업 스레드 풀의 코어 스레드 수입니다.

worker-task-keepalive

60

코어가 아닌 작업자 작업 스레드를 활성 상태로 유지하는 시간(밀리초)입니다.

worker-task-limit

16384

거부하기 전에 허용할 최대 작업자 작업 수입니다.

worker-task-max-threads

16

remoting 작업자 작업 스레드 풀에 대한 최대 스레드 수입니다.

worker-write-threads

1

remoting 작업자에 대해 생성할 쓰기 스레드 수입니다.

중요

위의 remoting 요소는 더 이상 사용되지 않습니다. 이러한 속성은 이제 io 하위 시스템을 사용하여 구성해야 합니다.

Expand
표 A.81. 엔드포인트 속성
속성기본설명

auth-realm

 

인증 콜백 처리기가 지정되지 않은 경우 사용할 인증 영역입니다.

authentication-retries

3

연결을 닫기 전에 클라이언트가 인증을 다시 시도할 수 있는 횟수를 지정합니다.

authorize-id

 

SASL 권한 부여 ID입니다. 인증 콜백 처리기가 지정되지 않고 선택한 SASL 메커니즘에 사용자 이름이 필요한 경우 사용할 인증 사용자 이름으로 사용됩니다.

buffer-region-size

 

할당된 버퍼 영역의 크기입니다.

heartbeat-interval

2147483647

연결 하트비트에 사용할 간격(밀리초)입니다. 연결이 이 시간 동안 아웃바운드 방향으로 유휴 상태인 경우 ping 메시지가 전송되어 해당 응답 메시지가 트리거됩니다.

max-inbound-channels

40

채널의 최대 동시 인바운드 메시지 수입니다.

max-inbound-message-size

9223372036854775807

허용되는 최대 인바운드 메시지 크기입니다. 이 크기를 초과하는 메시지는 읽기 측면과 쓰기 측에서 예외가 발생합니다.

max-inbound-messages

80

연결을 지원할 최대 인바운드 채널 수입니다.

max-outbound-channels

40

채널의 최대 동시 아웃바운드 메시지 수입니다.

max-outbound-message-size

9223372036854775807

보낼 최대 아웃바운드 메시지 크기입니다. 이 메시지보다 큰 메시지는 전송되지 않습니다. 이렇게 시도하면 쓰기 측면에서 예외가 발생합니다.

max-outbound-messages

65535

연결을 지원할 최대 아웃바운드 채널 수입니다.

receive-buffer-size

8192

이 끝점이 연결을 통해 수락할 가장 큰 버퍼의 크기입니다.

receive-window-size

131072

연결 채널에 대한 수신 방향의 최대 창 크기(바이트)입니다.

sasl-protocol

Remoting

여기서 saslServer 또는 saslClient는 기본적으로 지정된 프로토콜이 리모팅 인 경우 이 프로토콜을 재정의하는 데 사용할 수 있습니다.

send-buffer-size

8192

이 끝점이 연결을 통해 전송할 가장 큰 버퍼의 크기입니다.

server-name

 

연결 서버 측은 초기 인사말에 있는 클라이언트에 이름을 전달합니다. 기본적으로 이름은 연결의 로컬 주소에서 자동으로 검색되거나 이를 사용하여 재정의할 수 있습니다.

transmit-window-size

131072

연결 채널에 대한 전송 방향의 최대 창 크기(바이트)입니다.

worker

default

사용할 작업자

참고

관리 CLI를 사용하여 끝점 요소를 업데이트할 때 /subsystem=remoting/ configuration =endpoint/ 와 같은 remoting 요소의 구성에서 사용할 수 있습니다.

커넥터 속성

커넥터 구성 요소에는 다음과 같은 구조가 있습니다.

Expand
표 A.82. 커넥터 속성
속성기본설명

authentication-provider

 

authentication-provider 요소에는 들어오는 연결에 사용할 인증 공급자의 이름이 포함되어 있습니다.

sasl-protocol

remote

인증에 사용되는 SASL 메커니즘에 전달하는 프로토콜입니다.

security-realm

 

이 커넥터에 대한 인증에 사용할 연결된 보안 영역입니다.

server-name

 

초기 메시지 교환 및 SASL 기반 인증에서 보낼 서버 이름입니다.

socket-binding

 

연결할 소켓 바인딩의 이름(또는 이름)입니다.

Expand
표 A.83. 속성 속성
속성기본설명

value

 

속성 값입니다.

보안 속성

보안 구성 요소를 사용하면 커넥터에 대한 보안을 구성할 수 있지만 직접 구성 속성은 포함되어 있지 않습니다. sasl 과 같은 중첩된 구성 요소를 사용하여 구성할 수 있습니다.

Expand
표 A.84. SASL 속성
속성기본설명

include-mechanisms

 

선택적 중첩된 include-mechanisms 요소에는 허용되는 SASL 메커니즘 이름의 허용 목록이 포함되어 있습니다. 이 목록에 없는 메커니즘은 허용되지 않습니다.

QoP

 

선택적 중첩된 qop 요소는 기본 설정 순서를 줄인 품질 보호 값 목록을 포함합니다.

reuse-session

false

선택적 중첩된 reuse-session 부울 요소는 서버가 이전에 인증된 세션 정보를 재사용해야 하는지 여부를 지정합니다. 이 메커니즘은 이러한 재사용을 지원하거나 지원하지 않을 수 있으며, 다른 요인은 또한 이를 방지할 수 있습니다.

server-auth

false

선택적 중첩된 server-auth 부울 요소는 서버가 클라이언트에 인증해야 하는지 여부를 지정합니다. 모든 메커니즘이 이 설정을 지원할 수 있는 것은 아닙니다.

strength

 

선택적 중첩된 "strength" 요소에는 기본 설정 순서를 줄이는 방식으로 암호화 강도 값 목록이 포함되어 있습니다.

SASL-policy 속성

sasl-policy 구성 요소를 사용하면 사용 가능한 메커니즘 집합을 좁히는 데 사용할 선택적 정책을 지정할 수 있지만 직접 구성 속성은 포함되지 않습니다. 정책과 같은 중첩된 구성 요소를 사용하여 구성할 수 있습니다.

Expand
표 A.85. 정책 속성
속성기본설명

forward-secrecy

true

선택적 중첩된 forward-secrecy 요소에는 세션 간 전달 보안을 구현하는 메커니즘을 지정하는 부울 값이 포함되어 있습니다. 전달 보안은 한 세션으로 분할하면 향후 세션으로 침입하기 위한 정보가 자동으로 제공되지 않음을 의미합니다.

no-active

true

선택적 중첩된 no-active 요소에는 메커니즘이 활성(사전이 아닌) 공격에 허용되는지 여부를 지정하는 부울 값이 포함되어 있습니다. false 허용, 사실 거부할 수 있습니다.

no-anonymous

true

선택적 중첩된 no-anonymous 요소에는 익명 로그인을 허용하는 메커니즘을 지정하는 부울 값이 포함되어 있습니다. false 허용, 사실 거부할 수 있습니다.

no-dictionary

true

선택적 중첩된 no-dictionary 요소에는 메커니즘이 수동 사전 공격에 취약할 수 있는지 여부를 지정하는 부울 값이 포함되어 있습니다. false 허용, 사실 거부할 수 있습니다.

no-plain-text

true

선택적 중첩된 no-plain-text 요소에는 간단한 일반 수동 공격에 메커니즘이 허용되는지 여부를 지정하는 부울 값이 포함되어 있습니다(예: PLAIN). false 허용, 사실 거부할 수 있습니다.

pass-credentials

true

선택적 중첩된 pass-credentials 요소에는 클라이언트 자격 증명을 전달하는 메커니즘을 지정하는 부울 값이 포함되어 있습니다.

HTTP 커넥터 속성

http-connector 구성 요소에는 다음과 같은 구조가 있습니다.

Expand
표 A.86. HTTP-connector 속성
속성기본설명

authentication-provider

 

authentication-provider 요소에는 들어오는 연결에 사용할 인증 공급자의 이름이 포함되어 있습니다.

Connector-ref

 

연결할 undertow 하위 시스템에서 커넥터의 이름(또는 이름)입니다.

sasl-protocol

remote

인증에 사용되는 SASL 메커니즘에 전달하는 프로토콜입니다.

security-realm

 

이 커넥터에 대한 인증에 사용할 연결된 보안 영역입니다.

server-name

 

초기 메시지 교환 및 SASL 기반 인증에서 보낼 서버 이름입니다.

아웃바운드 연결 속성

outbound-connection 구성 요소에는 다음과 같은 구조가 있습니다.

Expand
표 A.87. outbound-connection 속성
속성기본설명

URI

 

아웃바운드 연결의 연결 URI입니다.

Expand
표 A.88. 속성 속성
속성기본설명

value

 

속성 값입니다.

참고

위의 속성 속성은 연결 생성 중에 사용할 XNIO 옵션과 관련이 있습니다.

원격 아웃 바운드 연결

remote-outbound-connection 구성 요소에는 다음과 같은 구조가 있습니다.

Expand
표 A.89. remote-outbound-connection 특성
속성기본설명

outbound-socket-binding-ref

 

연결의 대상 주소와 포트를 결정하는 데 사용할 outbound-socket-binding 의 이름입니다.

프로토콜

HTTP-Remoting

원격 연결에 사용할 프로토콜입니다. 기본값은 http-remoting 입니다.

security-realm

 

암호 및 SSL 구성을 가져오는 데 사용할 보안 영역에 대한 참조입니다.

사용자 이름

 

원격 서버에 대해 인증할 때 사용할 사용자 이름입니다.

로컬 아웃 바운드 연결 속성

local-outbound-connection 구성 요소에는 다음과 같은 구조가 있습니다.

Expand
표 A.90. local-outbound-connection 속성
속성기본설명

outbound-socket-binding-ref

 

연결의 대상 주소와 포트를 결정하는 데 사용할 outbound-socket-binding 의 이름입니다.

A.27. Apache HTTP Server mod_cluster/1.1s

mod_cluster 커넥터는 Apache HTTP 서버 기반 로드 밸런서입니다. 통신 채널을 사용하여 Apache HTTP Server에서 애플리케이션 서버 노드 세트 중 하나로 요청을 전달합니다. 다음 지시문은 mod_cluster를 구성하도록 설정할 수 있습니다.

참고

mod_cluster가 Apache HTTP 서버로 전달되어야 하는 URL을 자동으로 구성하므로 ProxyPass 지시문을 사용할 필요가 없습니다.

Expand
표 A.91. mod_cluster Cryostats
지시문설명

CreateBalancers

Apache HTTP Server VirtualHosts에서 밸런서가 생성되는 방법을 정의합니다. 이렇게 하면 ProxyPass /balancer://mycluster1/ 와 같은 지시문이 허용됩니다.

  • 0: Apache HTTP Server에 정의된 모든 VirtualHost를 생성
  • 1: 밸런서를 생성하지 마십시오 (연결 장치 이름을 정의하려면 하나 이상의 ProxyPass 또는 ProxyMatch 가 필요합니다)
  • 2: 주 서버 만 생성 (기본값)

UseAlias

별칭이 서버 이름에 해당하는지 확인합니다.

  • 0: 별칭 무시 (기본값)
  • 1: 별칭 확인

LBstatusRecalTime

노드 상태를 다시 계산하는 로드 밸런싱 논리의 시간 간격(초)입니다.

기본값: 5초

WaitBeforeRemove

httpd에 의해 제거된 노드가 해제되기 전의 시간(초)입니다.

기본값: 10초

ProxyPassMatch/ProxyPass

ProxyPassMatch 및 ProxyPass는 mod_proxy 지시문으로, ! ( back-end URL 대신)를 사용할 때 경로에서 reverse-proxy를 방지합니다. 이는 Apache HTTP Server가 정적 콘텐츠를 제공할 수 있도록 허용하는 데 사용됩니다. 예: ProxyPassMatch ^(/.*\.gif)$ ! 이 예제에서는 Apache HTTP Server에서 .gif 파일을 직접 제공할 수 있습니다.

 
참고

JBoss EAP 7의 세션에 대한 성능 최적화로 인해 핫스앤비 노드 구성은 지원되지 않습니다.

mod_manager

mod_manager 지시문의 컨텍스트는 달리 언급된 경우를 제외하고 모든 경우에 VirtualHost입니다. 서버 구성 컨텍스트는 지시문이 VirtualHost 구성 외부에 있어야 함을 나타냅니다. 그렇지 않으면 오류 메시지가 표시되고 Apache HTTP Server가 시작되지 않습니다.

Expand
표 A.92. mod_manager guides
지시문설명

EnableMCPMReceive

VirtualHost가 노드에서 MCPM 을 수신하도록 허용합니다. mod_cluster가 작동할 수 있도록 Apache HTTP Server 구성에 EnableMCPMReceive 를 포함합니다. 광고를 구성하는 VirtualHost에 저장합니다.

 

MemManagerFile

mod_manager 가 구성을 저장하는 데 사용하는 이름의 기본 이름, 공유 메모리 또는 잠긴 파일의 키를 생성합니다. 절대 경로 이름이어야 합니다. 필요한 경우 디렉토리가 생성됩니다. 이러한 파일은 NFS 공유가 아닌 로컬 드라이브에 배치되는 것이 좋습니다. 컨텍스트: 서버 구성

$server_root/logs/

maxcontext

mod_cluster에서 지원하는 최대 컨텍스트 수입니다. 컨텍스트: 서버 구성

기본값: 100

Maxnode

mod_cluster에서 지원하는 최대 노드 수입니다. 컨텍스트: 서버 구성

기본값: 20

Maxhost

mod_cluster에서 지원하는 최대 호스트(라이스) 수입니다. 또한 최대 밸런서 수를 포함합니다. 컨텍스트: 서버 구성

기본값: 20

Maxsessionid

mod_cluster-manager 처리기에서 활성 세션 수를 제공하기 위해 저장된 활성 세션 id 수입니다. mod_cluster가 5분 이내에 세션에서 정보를 수신하지 않으면 세션이 비활성화됩니다. 컨텍스트: 서버 구성. 이 필드는 데모 및 디버깅 목적으로만 사용됩니다.

0: 논리가 활성화되지 않았습니다.

MaxMCMPMaxMessSize

다른 Max 지시문의 MCMP 메시지의 최대 크기

다른 Max 지시문에서 계산됩니다. 분: 1024

ManagerBalancerName

JBoss EAP 인스턴스에서 밸런서 이름을 제공하지 않을 때 사용할 밸런서의 이름입니다.

mycluster

PersistSlots

mod_slotmem에 파일에 노드, 별칭 및 컨텍스트를 유지하도록 지시합니다. 컨텍스트: 서버 구성

off

CheckNonce

mod_cluster-manager 핸들러를 사용할 때 nonce 를 전환합니다.

On/off Default: on - Nonce checked

AllowDisplay

mod_cluster-manager 메인 페이지에서 추가 표시를 전환합니다.

on/off Default: off - 버전만 표시됩니다

AllowCmd

mod_cluster-manager URL을 사용하여 명령을 허용합니다.

on/off Default: on - Commands allowed

ReduceDisplay

페이지에 더 많은 노드를 표시할 수 있도록 기본 mod_cluster-manager 페이지에 표시되는 정보를 줄입니다.

On/off Default: off - 전체 정보가 표시됨

SetHandler mod_cluster-manager

mod_cluster가 클러스터에서 볼 수 있는 노드에 대한 정보를 표시합니다. 정보는 일반 정보를 포함하며 활성 세션 수를 추가로 계산합니다.

<Location /mod_cluster-manager>
  SetHandler mod_cluster-manager
  Require ip 127.0.0.1
</Location>
Copy to Clipboard Toggle word wrap

on/off 기본값: off

참고

httpd.conf 에 정의된 위치에 액세스하는 경우:

  • transferred: 백엔드 서버로 전송된 POST 데이터를 수정합니다.
  • connected: mod_cluster 상태 페이지가 요청될 때 처리된 요청 수를 수정합니다.
  • Num_sessions: mod_cluster 보고서(지난 5분 내에 요청이 있는 경우)의 세션 수에 해당합니다. 이 필드는 Maxsessionid가 0일 때 존재하지 않으며 데모 및 디버깅 목적으로만 사용됩니다.

A.28. modcluster Cryostat 속성

modcluster 하위 시스템에는 다음과 같은 구조가 있습니다.

Expand
표 A.93. MOD-cluster-config 구성 옵션
속성기본설명

advertise

true

광고가 활성화되었는지 여부입니다.

advertise-security-key

 

Advertise 논리에 대한 보안 키가 포함된 문자열입니다.

advertise-socket

 

Advertise 소켓에 사용할 소켓 바인딩의 이름입니다.

auto-enable-contexts

true

false 로 설정하면 컨텍스트가 비활성화됨으로 역방향 프록시와 함께 등록됩니다. enable-context 작업을 사용하거나 mod_cluster_manager 콘솔을 사용하여 컨텍스트를 활성화할 수 있습니다.

balancer

 

등록할 역방향 프록시의 밸런서 이름입니다. 설정되지 않은 경우 이 값은 기본적으로 myclusterManagerBalancerName 지시문을 사용하여 Apache HTTP Server 측에 구성됩니다.

Connector

 

mod_cluster 역방향 프록시가 연결할 Cryostat 리스너의 이름입니다.

excluded-contexts

 

역방향 프록시와 함께 등록에서 제외할 컨텍스트 목록입니다. 호스트가 표시되지 않는 경우 호스트는 localhost 로 간주됩니다. ROOT 는 웹 애플리케이션의 루트 컨텍스트를 나타냅니다.

flush-packets

false

웹 서버로 패킷 플러시를 활성화할지 여부입니다.

flush-wait

-1

httpd에서 패킷을 플러시하기 전에 대기하는 시간입니다. Max 값은 2,147,483,647 입니다.

load-balancing-group

 

설정된 경우 요청이 로드 밸런서에서 지정된 로드 밸런싱 그룹으로 전송됩니다.

max-attempts

1

역방향 프록시가 포기하기 전에 작업자에게 지정된 요청을 전송하려고 시도하는 횟수입니다.

node-timeout

-1

작업자에 대한 프록시 연결의 시간 제한(초)입니다. 이는 mod_cluster가 오류를 반환하기 전에 백엔드 응답을 대기하는 시간입니다. node-timeout 속성이 정의되지 않은 경우 httpd ProxyTimeout 지시문이 사용됩니다. ProxyTimeout 이 정의되지 않은 경우 httpd Timeout 지시문이 사용되며 기본값은 300초입니다.

ping

10

ping에 대한 pong 응답을 대기하는 시간(초)입니다.

프록시

 

socket-binding-groupoutbound-socket-binding 에 정의된 에 등록할 mod_cluster의 프록시 목록입니다.

proxy-list

 

프록시 목록입니다. 형식은 HOST_NAME:PORT 로, 쉼표로 구분됩니다. 프록시에 더 이상 사용되지 않습니다.

proxy-url

/

MCMP 요청의 기본 URL입니다.

session-draining-strategy

DEFAULT

웹 애플리케이션을 배포 취소하는 동안 사용되는 세션 드레이닝 전략입니다. 유효한 값은 DEFAULT, AlwaysWAY S 또는 NEVER 입니다.

DEFAULT
웹 애플리케이션이 배포되지 않은 경우에만 웹 애플리케이션 배포를 취소하기 전에 드레이닝 세션입니다.
ALWAYS
배포 가능한 웹 애플리케이션의 경우에도 웹 애플리케이션이 배포를 취소하기 전에 항상 드레이닝 세션입니다.
NEVER
웹 애플리케이션 배포 취소 전에 세션을 드레이닝하지 마십시오.

simple-load-provider

 

동적 로드 공급자가 없는 경우 사용할 간단한 로드 공급자입니다. 각 클러스터 구성원에게 1 의 로드 요소를 할당하고 부하 분산 알고리즘을 적용하지 않고도 작업을 균등하게 분배합니다.

smax

-1

httpd의 소프트 최대 유휴 연결 수입니다.

socket-timeout

20

시간 초과 전에 httpd 프록시에서 MCMP 명령으로 응답을 기다린 후 프록시에 오류로 플래그를 지정하는 시간(초)입니다.

status-interval

10

STATUS 메시지가 애플리케이션 서버에서 역방향 프록시로 전송되는 시간(초)입니다. 허용되는 값은 1 에서 2,147,483,647 사이입니다.

sticky-session

true

가능한 경우 지정된 세션에 대한 후속 요청을 동일한 노드로 라우팅해야 하는지 여부입니다.

sticky-session-force

false

밸런서가 정지된 노드로 요청을 라우팅할 수 없는 경우 역방향 프록시에서 오류를 반환해야 하는지 여부입니다. 고정 세션이 비활성화된 경우 이 설정은 무시됩니다.

sticky-session-remove

false

장애 조치에 대한 세션 정보를 제거합니다.

stop-context-timeout

10

배포 불가능한 컨텍스트의 경우 보류 중인 요청을 처리하거나 배포 가능한 컨텍스트의 활성 세션을 제거할 최대 시간(초)입니다.

ttl

-1

smax 위의 유휴 연결에 대한 실시간 시간(초)입니다. 허용되는 값은 -12,147,483,647 사이입니다.

worker-timeout

-1

사용 가능한 작업자가 요청을 처리할 때까지 httpd에서 대기하는 시간 초과입니다. 허용되는 값은 -12,147,483,647 사이입니다.

Expand
표 A.94. dynamic-load-provider 구성 옵션
속성기본설명

decay

2

decay.

내역

9

내역.

Expand
표 A.95. custom-load-metric 특성 옵션
속성기본설명

capacity

1.0

메트릭의 용량입니다.

클래스

 

사용자 정의 메트릭의 클래스 이름입니다.

속성

 

메트릭의 속성입니다.

weight

1

메트릭의 가중치입니다.

Expand
표 A.96. 로드 지표 속성 옵션
속성기본설명

capacity

1.0

메트릭의 용량입니다.

속성

 

메트릭의 속성입니다.

type

 

메트릭 유형입니다.

weight

1

메트릭의 가중치입니다.

Expand
표 A.97. SSL 속성 옵션
속성기본설명

ca-certificate-file

 

인증 기관.

ca-revocation-url

 

인증 기관 취소 목록.

certificate-key-file

${user.home}/.keystore

인증서의 키 파일입니다.

cipher-suite

 

허용되는 암호화 제품군입니다.

key-alias

 

키 별칭입니다.

암호

변경 사항

암호.

프로토콜

TLS

활성화된 SSL 프로토콜입니다.

A.29. mod_jk Worker 속성

workers.properties 파일은 mod_jk가 클라이언트 요청을 전달하는 작업자의 동작을 정의합니다. workers.properties 파일은 다양한 애플리케이션 서버가 있는 위치와 워크로드의 균형을 조정하는 방법을 정의합니다.

속성의 일반적인 구조는 worker.WORKER_NAME.DIRECTIVE 입니다. WORKER_NAMEJBoss EAP 하위 시스템에서 구성된 instance-id 와 일치해야 하는 고유한 이름입니다. DIRECTIVE 는 작업자에 적용할 설정입니다.

Apache mod_jk Load Balancer에 대한 구성 참조

템플릿은 기본 로드 밸런서 설정을 지정합니다. 로드 밸런서 설정 자체 내에서 템플릿을 재정의할 수 있습니다.

Expand
표 A.98. 글로벌 속성
속성설명

worker.list

mod_jk 에서 사용할 작업자 이름의 쉼표로 구분된 목록입니다.

Expand
표 A.99. 필수 정보
속성설명

type

작업자의 유형입니다. 기본 유형은 ajp13 입니다. 기타 가능한 값은 ajp14,lb,status 입니다. 이러한 지시문에 대한 자세한 내용은 https://tomcat.apache.org/connectors-doc/reference/workers.html 에서 Apache Tomcat 커넥터 참조를 참조하십시오.

Expand
표 A.100. Load Balancing.509s
속성설명

balance_workers

로드 밸런서에서 관리해야 하는 작업자 노드를 지정합니다. 동일한 로드 밸런서에 지시문을 여러 번 사용할 수 있습니다. 콤마로 구분된 작업자 노드 이름으로 구성됩니다.

sticky_session

동일한 세션의 요청이 항상 동일한 작업자로 라우팅되는지 여부를 지정합니다. 기본값은 1 입니다. 즉, 고정 세션이 활성화됩니다. 고정 세션을 비활성화하려면 0 으로 설정합니다. 모든 요청이 실제로 상태 비저장(stateless)되지 않는 한 일반적으로 고정 세션을 활성화해야 합니다.

Expand
표 A.101. connection servings
속성설명

host

백엔드 서버의 호스트 이름 또는 IP 주소입니다. 백엔드 서버는 ajp 프로토콜 스택을 지원해야 합니다. 기본값은 localhost 입니다.

port

정의된 프로토콜 요청을 수신하는 백엔드 서버 인스턴스의 포트 번호입니다. 기본값은 8009 이며, 이는 Cryostat13 작업자의 기본 수신 포트입니다. Cryostat14 작업자의 기본값은 8011 입니다.

ping_mode

네트워크 상태를 조사하는 연결 조건입니다. 프로브는 CPing에 빈 Cryostat13 패킷을 사용하며 이에 대한 CPong이 필요합니다. 지시문 플래그의 조합을 사용하여 조건을 지정합니다. 플래그는 쉼표 또는 공백으로 구분되지 않습니다. ping_mode는 C, P, I 및 A의 모든 조합이 될 수 있습니다.

  • c - 연결. 서버에 연결한 후 한 번 연결을 확인합니다. connect_timeout 값을 사용하여 타임아웃을 지정합니다. 그렇지 않으면 ping_timeout 값이 사용됩니다.
  • P - Prepost. 각 요청을 서버로 보내기 전에 연결을 확인합니다. prepost_timeout 지시문을 사용하여 시간 제한을 지정합니다. 그렇지 않으면 ping_timeout 값이 사용됩니다.
  • I - 간격. 있는 경우 connection_ping_interval에 지정된 간격으로 연결을 확인합니다. 그렇지 않으면 ping_timeout 값이 사용됩니다.
  • A - 모든 CPI의 바로 가기로, 모든 연결 프로브가 사용되도록 지정합니다.

ping_timeout, connect_timeout, prepost_timeout, connection_ping_interval

위의 연결 프로브 설정에 대한 시간 초과 값입니다. 값은 밀리초 단위로 지정되며 ping_timeout 의 기본값은 10000입니다.

lbfactor

개별 백엔드 서버 인스턴스의 로드 밸런싱 요소를 지정합니다. 이 기능은 더 강력한 서버를 더 많이 제공하는 데 유용합니다. 작업자 3 번 기본 로드를 제공하려면 3:worker.my_worker.lbfactor=3으로 설정합니다.

아래 예제에서는 포트 8009 에서 수신 대기하는 두 개의 작업자 노드(node1node2) 간의 고정 세션을 사용한 로드 밸런싱을 보여줍니다.

workers.properties 파일의 예

# Define list of workers that will be used for mapping requests
worker.list=loadbalancer,status

# Define Node1
# modify the host as your host IP or DNS name.
worker.node1.port=8009
worker.node1.host=node1.mydomain.com
worker.node1.type=ajp13
worker.node1.ping_mode=A
worker.node1.lbfactor=1

# Define Node2
# modify the host as your host IP or DNS name.
worker.node2.port=8009
worker.node2.host= node2.mydomain.com
worker.node2.type=ajp13
worker.node2.ping_mode=A
worker.node2.lbfactor=1

# Load-balancing behavior
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1

# Status worker for managing load balancer
worker.status.type=status
Copy to Clipboard Toggle word wrap

Apache mod_jk에 대한 자세한 구성 세부 정보는 이 문서에서 다루지 않으며 Apache 문서에서 참조하십시오.

A.30. Security Manager Cryostat 속성

security-manager 하위 시스템 자체에는 구성 가능한 속성이 없지만 구성 가능한 속성이 있는 하위 리소스( deployment-permissions=default )가 있습니다.

Expand
표 A.102. 기본 구성 옵션
속성기본설명

maximum-permissions

 

배포 또는 Cryostat에 부여할 수 있는 최대 권한 세트입니다.

최소 권한

 

배포 또는 Cryostat에 부여할 최소 권한 세트입니다.





2024-04-03에 최종 업데이트된 문서

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동