Using JBoss EAP XP 5.0


Red Hat JBoss Enterprise Application Platform 8.0

JBoss EAP XP 5.0에서 사용

Red Hat Customer Content Services

초록

이 문서에서는 JBoss EAP XP 5.0 사용에 대한 일반적인 정보를 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

JBoss EAP 문서에 대한 피드백 제공

오류를 보고하거나 문서를 개선하기 위해 Red Hat Jira 계정에 로그인하여 문제를 제출하십시오. Red Hat Jira 계정이 없는 경우 계정을 생성하라는 메시지가 표시됩니다.

프로세스

  1. 티켓을 생성하려면 다음 링크를 클릭하십시오.
  2. 요약 에 문제에 대한 간략한 설명을 입력합니다.
  3. 설명에서 문제 또는 개선 사항에 대한 자세한 설명을 제공합니다. 문서에서 문제가 발생한 위치에 URL을 포함합니다.
  4. Submit 을 클릭하고 문제를 적절한 문서 팀으로 라우팅합니다.

1장. 최신 MicroProfile 기능을 위한 JBoss EAP XP

1.1. 기존 JBoss EAP 8.0 서버 없이 JBoss EAP 5.0 설치

JBoss EAP 8.0 서버를 처음 설치하지 않고 JBoss EAP XP 5.0을 설치하려면 다음 절차를 따르십시오.

사전 요구 사항

  • 인터넷에 액세스할 수 있습니다.
  • Red Hat 고객 포털에서 계정을 생성했으며 로그인되어 있습니다.
  • jboss-eap-installation-manager 를 다운로드했습니다.

프로세스

  1. 터미널 에뮬레이터를 열고 jboss-eap-installation-manager 디렉터리로 이동합니다.
  2. jboss-eap-installation-manager 디렉토리에서 다음 명령을 실행하여 JBoss EAP XP를 설치합니다.

    ./bin/jboss-eap-installation-manager.sh install --profile eap-xp-5.0 --dir eap-xp-5
    Copy to Clipboard Toggle word wrap

1.2. 기존 JBoss EAP 8.0 설치에 JBoss EAP XP 5.0 기능 팩 추가

jboss-eap-installation-manager 를 사용하여 기존 JBoss EAP 설치에 JBoss EAP 5.0 기능 팩을 추가할 수 있습니다.

사전 요구 사항

  • Red Hat 고객 포털에 계정이 있고 로그인되어 있습니다.
  • JBoss EAP XP 5.0에서 지원되는 구성을 검토했습니다.
  • 지원되는 JDK를 설치했습니다.
  • jboss-eap-installation-manager 를 다운로드했습니다. jboss-eap-installation-manager 를 다운로드하는 방법에 대한 자세한 내용은 설치 가이드를 참조하십시오.
  • 지원되는 방법 중 하나를 사용하여 JBoss EAP 8.0을 다운로드하거나 설치했습니다. JBoss EAP 다운로드에 대한 자세한 내용은 설치 가이드를 참조하십시오.
참고

JBoss EAP XP 확장 기능을 설치하면 서버 업데이트가 자동으로 수행되어 최신 구성 요소 업데이트가 제공됩니다.

프로세스

  1. 터미널 에뮬레이터를 열고 jboss-eap-installation-manager 디렉터리로 이동합니다.
  2. 다음을 실행하여 jboss-eap-installation-manager 디렉토리에서 이 스크립트를 실행하여 서버를 JBoss EAP XP 채널에 서브스크립션합니다.

    ./bin/jboss-eap-installation-manager.sh channel add \
     --channel-name eap-xp-5.0 \
     --repositories=mrrc-ga::https://maven.repository.redhat.com/ga \
     --manifest org.jboss.eap.channels:eap-xp-5.0 \
     --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap
  3. 다음을 실행하여 JBoss EAP XP 확장 프로그램을 설치합니다.

    ./bin/jboss-eap-installation-manager.sh feature-pack add \
     --fpl org.jboss.eap.xp:wildfly-galleon-pack \
     --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap

1.3. 기존 JBoss EAP 8.0 설치에 JBoss EAP XP 5.0 기능 팩 추가 오프라인

jboss-eap-installation-manager 를 사용하여 기존 JBoss EAP 5.0 기능 팩을 오프라인으로 추가할 수 있습니다.

사전 요구 사항

  • JBoss EAP XP 5.0에서 지원되는 구성을 검토했습니다.
  • 지원되는 JDK를 설치했습니다.
  • jboss-eap-installation-manager 를 다운로드했습니다. jboss-eap-installation-manager 를 다운로드하는 방법에 대한 자세한 내용은 설치 가이드를 참조하십시오.
  • 지원되는 방법 중 하나를 사용하여 JBoss EAP 8.0을 다운로드하거나 설치했습니다. JBoss EAP 다운로드에 대한 자세한 내용은 설치 가이드를 참조하십시오.
  • JBoss EAP 8.0 및 JBoss EAP XP 5.0용 최신 오프라인 리포지토리를 다운로드하여 추출했습니다.

프로세스

  1. 터미널 에뮬레이터를 열고 jboss-eap-installation-manager 디렉터리로 이동합니다.
  2. 다음을 실행하여 jboss-eap-installation-manager 디렉토리에서 이 스크립트를 실행하여 서버를 JBoss EAP XP 채널에 서브스크립션합니다.
./bin/jboss-eap-installation-manager.sh channel add \
 --channel-name eap-xp-5.0 \
 --repositories=mrrc-ga::https://maven.repository.redhat.com/ga \
 --manifest org.jboss.eap.channels:eap-xp-5.0 \
 --dir eap-xp-5.0
Copy to Clipboard Toggle word wrap
  1. JBoss EAP XP를 설치하고 --repositories 매개변수를 사용하여 오프라인 리포지토리를 지정합니다.
./bin/jboss-eap-installation-manager.sh feature-pack add \
 --fpl org.jboss.eap.xp:wildfly-galleon-pack \
 --dir eap-xp-5.0 \
 --repositories <JBOSS_EAP_XP_OFFLINE_REPO_PATH>,<JBOSS_EAP_8.0_OFFLINE_REPO_PATH>
Copy to Clipboard Toggle word wrap
참고

기능 팩은 --dir 옵션으로 전달된 JBoss EAP 설치에 추가됩니다.

1.4. jboss-eap-installation-manager를 사용하여 JBoss EAP XP 설치 업데이트

새 업데이트를 다운로드하여 설치한 후 사용할 수 있는 경우 JBoss EAP XP를 주기적으로 업데이트할 수 있습니다.

사전 요구 사항

  • 인터넷에 액세스할 수 있습니다.
  • 지원되는 JDK를 설치했습니다.
  • jboss-eap-installation-manager 를 다운로드했습니다. jboss-eap-installation-manager 를 다운로드하는 방법에 대한 자세한 내용은 설치 가이드를 참조하십시오.
  • 지원되는 방법 중 하나를 사용하여 JBoss EAP 8.0을 다운로드하거나 설치했습니다. JBoss EAP 다운로드에 대한 자세한 내용은 설치 가이드를 참조하십시오.

프로세스

  1. 다운로드한 jboss-eap-installation-manager 를 추출합니다.
  2. 터미널 에뮬레이터를 열고 추출한 jboss-eap-installation-manager 디렉터리로 이동합니다.
  3. jboss-eap-installation-manager 디렉토리에서 이 스크립트를 실행하여 사용 가능한 업데이트를 확인합니다.

    ./bin/jboss-eap-installation-manager.sh update list --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 JBoss EAP를 업데이트합니다.

    구문

    ./bin/jboss-eap-installation-manager.sh update perform --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap

    ./bin/jboss-eap-installation-manager.sh update perform --dir eap-xp-5.0
    Updates found:
      org.wildfly.galleon-plugins:wildfly-galleon-plugins    6.3.1.Final-redhat-00001 ==>  6.3.2.Final-redhat-00001
      org.wildfly.wildfly-http-client:wildfly-http-transaction-client    2.0.1.Final-redhat-00001 ==>  2.0.2.Final-redhat-00001
    Copy to Clipboard Toggle word wrap

jboss-eap-installation-manager 를 사용하여 JBoss EAP XP 5.0 설치를 오프라인으로 업데이트할 수 있습니다.

사전 요구 사항

  • 지원되는 JDK를 설치했습니다.
  • jboss-eap-installation-manager 를 다운로드했습니다. jboss-eap-installation-manager 를 다운로드하는 방법에 대한 자세한 내용은 설치 가이드를 참조하십시오.
  • 지원되는 방법 중 하나를 사용하여 JBoss EAP 8.0을 다운로드하거나 설치했습니다. JBoss EAP 다운로드에 대한 자세한 내용은 설치 가이드를 참조하십시오.
  • JBoss EAP 8.0 및 JBoss EAP XP 5.0용 최신 오프라인 리포지토리를 다운로드하여 추출했습니다.

프로세스

  1. JBoss EAP 서버를 중지합니다.
  2. 터미널 에뮬레이터를 열고 jboss-eap-installation-manager 디렉터리로 이동합니다.
  3. jboss-eap-installation-manager 디렉토리에서 이 스크립트를 실행하여 서버 구성 요소를 업데이트합니다.

    ./bin/jboss-eap-installation-manager.sh update perform \
     --dir eap-xp-5.0  \
     --repositories <JBOSS_EAP_XP_OFFLINE_REPO_PATH>,<FEATURE_PACK_OFFLINE_REPO>,<JBOSS_EAP_8.0_OFFLINE_REPO_PATH>
    Copy to Clipboard Toggle word wrap

1.6. JBoss EAP XP 서버를 JBoss EAP로 되돌리기

jboss-eap-installation-manager 를 사용하여 JBoss EAP XP 설치를 되돌릴 수 있습니다.

사전 요구 사항

  • 인터넷에 액세스할 수 있습니다.
  • 지원되는 JDK를 설치했습니다.
  • jboss-eap-installation-manager 를 다운로드했습니다. jboss-eap-installation-manager 를 다운로드하는 방법에 대한 자세한 내용은 설치 가이드를 참조하십시오.
  • 지원되는 방법 중 하나를 사용하여 JBoss EAP 8.0을 다운로드하거나 설치했습니다. JBoss EAP 다운로드에 대한 자세한 내용은 설치 가이드를 참조하십시오.

프로세스

  1. 터미널 에뮬레이터를 열고 jboss-eap-installation-manager 디렉터리로 이동합니다.
  2. jboss-eap-installation-manager 디렉토리에서 이 스크립트를 실행하여 JBoss EAP XP 서버에 추가된 모든 기능 팩의 기록을 조사합니다.

    ./bin/jboss-eap-installation-manager.sh history --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap
  3. JBoss EAP XP 서버를 중지합니다.
  4. JBoss EAP XP 확장 기능이 추가되기 전에 버전으로 되돌립니다.

    ./bin/jboss-eap-installation-manager.sh revert perform \
     --revision <REVISION_HASH> \
     --dir eap-xp-5.0
    Copy to Clipboard Toggle word wrap

2장. MicroProfile 이해

2.1. MicroProfile Config

2.1.1. JBoss EAP의 MicroProfile Config

구성 데이터는 동적으로 변경될 수 있으며 애플리케이션은 서버를 다시 시작하지 않고도 최신 구성 정보에 액세스할 수 있어야 합니다.

MicroProfile Config는 구성 데이터의 이식 가능한 외부화를 제공합니다. 즉, 수정 또는 재패키징 없이 여러 환경에서 실행되도록 애플리케이션 및 마이크로서비스를 구성할 수 있습니다.

MicroProfile Config 기능은 SmallRye Config 구성 요소를 사용하여 JBoss EAP에서 구현되며 microprofile-config-undercloudrye 하위 시스템에서 제공합니다.

참고

MicroProfile Config는 JBoss EAP XP에서만 지원됩니다. JBoss EAP에서는 지원되지 않습니다.

중요

자체 Config 구현을 추가하는 경우 최신 버전의 Config 인터페이스에서 메서드를 사용해야 합니다.

2.1.2. MicroProfile Config에서 지원되는 MicroProfile Config 소스

MicroProfile Config 구성 속성은 다른 위치에서 가져올 수 있으며 다른 형식일 수 있습니다. 이러한 속성은 ConfigSources에서 제공합니다. ConfigSources는 org.eclipse.microprofile.config.spi.ConfigSource 인터페이스의 구현입니다.

MicroProfile Config 사양은 구성 값을 검색하기 위한 다음과 같은 기본 ConfigSource 구현을 제공합니다.

  • System.getProperties().
  • system.getenv().
  • 클래스 경로의 모든 META-INF/microprofile-config.properties 파일

microprofile-config-#159rye 하위 시스템은 구성 값을 검색하기 위해 추가 유형의 ConfigSource 리소스를 지원합니다. 다음 리소스에서 구성 값을 검색할 수도 있습니다.

  • microprofile-config-undercloudrye/config-source 관리 리소스의 속성
  • 디렉터리의 파일
  • ConfigSource 클래스
  • ConfigSourceProvider 클래스

2.2. MicroProfile Fault Tolerance

2.2.1. MicroProfile Fault Tolerance 사양 정보

MicroProfile Fault Tolerance 사양은 분산 마이크로 서비스에 내재된 오류를 처리하는 전략을 정의합니다.

MicroProfile Fault Tolerance 사양은 오류를 처리하기 위한 다음 전략을 정의합니다.

Timeout
실행을 완료해야 하는 시간을 정의합니다. 시간 초과를 정의하면 실행이 무기한 대기되지 않습니다.
Retry
실패한 실행을 재시도하는 기준을 정의합니다.
폴백
실행에 실패한 경우 대안을 제공합니다.
CircuitBreaker
일시적으로 중지되기 전에 실패한 실행 시도 수를 정의합니다. 실행을 다시 시작하기 전에 지연의 길이를 정의할 수 있습니다.
Bulkhead
시스템의 나머지 부분이 계속 작동할 수 있도록 오류를 격리합니다.
비동기
별도의 스레드에서 클라이언트 요청을 실행합니다.

2.2.2. JBoss EAP의 MicroProfile Fault Tolerance

microprofile-fault-tolerance-undercloudrye 하위 시스템은 JBoss EAP에서 MicroProfile Fault Tolerance를 지원합니다. 하위 시스템은 JBoss EAP XP 스트림에서만 사용할 수 있습니다.

microprofile-fault-tolerance-undercloudrye 하위 시스템은 인터셉터 바인딩에 대해 다음과 같은 주석을 제공합니다.

  • @timeout
  • @Retry
  • @Fallback
  • @CircuitBreaker
  • @Bulkhead
  • @Asynchronous

이러한 주석은 클래스 수준 또는 메서드 수준에서 바인딩할 수 있습니다. 클래스에 바인딩된 주석은 해당 클래스의 모든 비즈니스 메서드에 적용됩니다.

다음 규칙은 바인딩 인터셉터에 적용됩니다.

  • 구성 요소 클래스가 클래스 수준 인터셉터 바인딩을 선언하거나 상속하는 경우 다음과 같은 제한 사항이 적용됩니다.

    • 클래스는 final로 선언해서는 안 됩니다.
    • 클래스에는 정적, 개인 또는 최종 메서드가 포함되어 있지 않아야 합니다.
  • 구성 요소 클래스의 비정적, 비개인적 메서드의 메서드 수준 인터셉터 바인딩을 선언하는 경우 메서드 및 구성 요소 클래스를 final로 선언할 수 없습니다.

내결함성 작업에는 다음과 같은 제한 사항이 있습니다.

  • fault tolerance interceptor 바인딩은 Quarkus 클래스 또는 Cryostat 클래스 메서드에 적용해야 합니다.
  • 호출 시 호출은 Jakarta 컨텍스트 및 종속성 사양에 정의된 비즈니스 메서드 호출이어야 합니다.
  • 다음 두 조건이 모두 true인 경우 작업이 내결함성으로 간주되지 않습니다.

    • 방법 자체는 내결함성 인터셉터에 바인딩되지 않습니다.
    • 메서드를 포함하는 클래스는 내결함성 인터셉터에 바인딩되지 않습니다.

microprofile-fault-tolerance-undercloudrye 하위 시스템은 MicroProfile Fault Tolerance에서 제공하는 구성 옵션 외에도 다음과 같은 구성 옵션을 제공합니다.

  • io.smallrye.faulttolerance.mainThreadPoolSize
  • io.smallrye.faulttolerance.mainThreadPoolQueueSize

2.3. MicroProfile Health

2.3.1. JBoss EAP의 MicroProfile Health

JBoss EAP에는 JBoss EAP 인스턴스가 예상대로 응답하는지 확인하는 데 사용할 수 있는 SmallRye Health 구성 요소가 포함되어 있습니다. 이 기능은 기본적으로 활성화되어 있습니다.

MicroProfile Health는 JBoss EAP를 독립 실행형 서버로 실행하는 경우에만 사용할 수 있습니다.

MicroProfile Health 사양은 다음과 같은 상태 점검을 정의합니다.

준비
애플리케이션에서 요청을 처리할 준비가 되었는지 확인합니다. @Readiness 는 이 상태 점검을 제공합니다.
활성
애플리케이션이 실행 중인지 확인합니다. @Liveness 는 이 상태 점검을 제공합니다.
startup
애플리케이션이 이미 시작되었는지 여부를 확인합니다. @Startup 주석에서는 이 상태 점검을 제공합니다.

@Health 주석은 MicroProfile Health 3.0에서 제거되었습니다.

MicroProfile Health 3.1에는 새로운 시작 상태 점검 프로브가 포함되어 있습니다.

MicroProfile Health 3.1의 변경 사항에 대한 자세한 내용은 MicroProfile Health 3.1 릴리스 노트를 참조하십시오.

중요

:empty-readiness-checks-status,:empty-liveness -checks-status, :empty-startup-checks-status 관리 속성은 준비 상태, 활성 상태 또는 시작 프로브가 정의되지 않은 경우 글로벌 상태를 지정합니다.

2.4. MicroProfile JWT

2.4.1. JBoss EAP에서 MicroProfile JWT 통합

하위 시스템 microprofile-jwt-Neutronrye 는 JBoss EAP에서 MicroProfile JWT 통합을 제공합니다.

다음 기능은 microprofile-jwt-undercloudrye 하위 시스템에서 제공합니다.

  • MicroProfile JWT 보안을 사용하는 배포 감지.
  • MicroProfile JWT 지원 활성화

하위 시스템에는 구성 가능한 속성 또는 리소스가 포함되어 있지 않습니다.

org.eclipse. microprofile.jwt.auth.api 모듈은 JBoss EAP에서 MicroProfile JWT 통합을 제공합니다.

추가 리소스

2.4.2. 기존 배포와 MicroProfile JWT 배포 간의 차이점

MicroProfile JWT 배포는 기존 JBoss EAP 배포와 같은 관리형 SecurityDomain 리소스에 의존하지 않습니다. 대신, MicroProfile JWT 배포에서 가상 SecurityDomain이 생성되고 사용됩니다.

MicroProfile JWT 배포가 전적으로 MicroProfile Config 속성 및 microprofile-jwt-undercloudrye 하위 시스템 내에 구성되므로 가상 SecurityDomain에는 배포에 대한 다른 관리 구성이 필요하지 않습니다.

2.4.3. JBoss EAP에서 MicroProfile JWT 활성화

MicroProfile JWT는 애플리케이션에 auth-method 가 있는 애플리케이션에 따라 활성화됩니다.

MicroProfile JWT 통합은 다음과 같은 방식으로 애플리케이션에 대해 활성화됩니다.

  • 배포 프로세스의 일부로 JBoss EAP는 auth-method 가 있는지 애플리케이션 아카이브를 검사합니다.
  • auth-method 가 있고 MP-JWT 로 정의된 경우 MicroProfile JWT 통합이 활성화됩니다.

auth-method 는 다음 파일 중 하나 또는 둘 다에 지정할 수 있습니다.

  • javax.ws.rs.core.Application 을 확장하는 클래스가 포함된 파일, @LoginConfig주석이 추가됨
  • web.xml 구성 파일

auth-method 가 주석과 web.xml 구성 파일에서 클래스 모두에서 정의되면 web.xml 구성 파일의 정의가 사용됩니다.

2.4.4. JBoss EAP에서 MicroProfile JWT의 제한 사항

JBoss EAP의 MicroProfile JWT 구현에는 특정 제한이 있습니다.

JBoss EAP에는 MicroProfile JWT 구현의 다음과 같은 제한 사항이 있습니다.

  • MicroProfile JWT 구현은 mp.jwt.verify.publickey 속성에 제공된 JWKS(JWKS)의 첫 번째 키만 구문 분석합니다. 따라서 토큰을 두 번째 키 또는 두 번째 키 뒤에 있는 키로 서명해야 하는 경우 토큰 확인이 실패하고 토큰을 포함하는 요청이 인증되지 않습니다.
  • JWKS의 Base64 인코딩은 지원되지 않습니다.

두 경우 모두 mp.jwt.verify.publickey.location config 속성을 사용하는 대신 일반 텍스트 JWKS를 참조할 수 있습니다.

2.5. MicroProfile OpenAPI

2.5.1. JBoss EAP의 MicroProfile OpenAPI

MicroProfile OpenAPI는 microprofile-openapi-undercloudrye 하위 시스템을 사용하여 JBoss EAP에 통합됩니다.

MicroProfile OpenAPI 사양은 OpenAPI 3.0 문서를 제공하는 HTTP 끝점을 정의합니다. OpenAPI 3.0 문서는 호스트의 REST 서비스를 설명합니다. OpenAPI 끝점은 배포와 연결된 호스트의 루트에 로컬로 구성된 경로(예: http://localhost:8080/openapi)를 사용하여 등록됩니다. http://localhost:8080/openapi

참고

현재 가상 호스트의 OpenAPI 엔드포인트는 단일 배포만 문서화할 수 있습니다. 동일한 가상 호스트에서 다른 컨텍스트 경로에 등록된 여러 배포와 함께 OpenAPI를 사용하려면 각 배포에서 별도의 엔드포인트 경로를 사용해야 합니다.

OpenAPI 엔드포인트는 기본적으로 YAML 문서를 반환합니다. Accept HTTP 헤더 또는 형식 쿼리 매개변수를 사용하여 JSON 문서를 요청할 수도 있습니다.

지정된 애플리케이션의 Cryostat 서버 또는 호스트가 HTTPS 리스너를 정의하는 경우 HTTPS를 사용하여 OpenAPI 문서도 사용할 수 있습니다. 예를 들어 HTTPS의 끝점은 https://localhost:8443/openapi 입니다.

2.6. MicroProfile Telemetry

2.6.1. JBoss EAP의 MicroProfile Telemetry

MicroProfile Telemetry는 OpenTelemetry를 기반으로 애플리케이션에 대한 추적 기능을 제공합니다. 특히 요청이 라이프사이클 동안 여러 서비스를 통해 전달될 수 있는 마이크로 서비스 환경에서 요청을 추적하는 기능이 중요합니다.

MicroProfile Telemetry는 OpenTelemetry 하위 시스템에서 확장되고 MicroProfile Config에 대한 지원을 추가합니다. 이를 통해 사용자는 MicroProfile Config를 사용하여 OpenTelemetry를 구성할 수 있습니다.

참고

MicroProfile Telemetry 하위 시스템에는 구성 가능한 리소스 또는 속성이 없습니다.

2.7. MicroProfile REST Client

2.7.1. MicroProfile REST 클라이언트

JBoss EAP XP 5.0.0은 Jakarta RESTful Web Services 2.1.6 클라이언트 API를 기반으로 빌드되는 MicroProfile REST 클라이언트 2.0을 지원하여 HTTP를 통해 RESTful 서비스를 호출할 수 있는 형식이 안전한 접근 방식을 제공합니다. MicroProfile Type Safe REST 클라이언트는 Java 인터페이스로 정의됩니다. MicroProfile REST 클라이언트를 사용하면 실행 가능한 코드로 클라이언트 애플리케이션을 작성할 수 있습니다.

MicroProfile REST 클라이언트를 사용하여 다음 기능을 사용할 수 있습니다.

  • 직관적인 구문
  • 공급자의 프로그래밍 방식 등록
  • 공급자의 선언적 등록
  • 헤더의 선언적 사양
  • 서버의 헤더 전파
  • ResponseExceptionMapper
  • Jakarta Contexts and dependency Cryostat 통합
  • SSE(서버 관련 이벤트) 액세스

2.7.2. resteasy.original.webapplicationexception.behavior MicroProfile Config 속성

MicroProfile Config 는 개발자가 애플리케이션을 수정하거나 다시 패키징하지 않고도 여러 환경에서 실행되도록 애플리케이션 및 마이크로서비스를 구성하는 데 사용할 수 있는 사양의 이름입니다. 이전에는 JBoss EAP에서 기술 프리뷰로 MicroProfile Config를 사용할 수 있었지만 이후 제거되었습니다. MicroProfile Config는 이제 JBoss EAP XP에서만 사용할 수 있습니다.

resteasy.original.webapplicationexception.behavior MicroProfile Config 속성 정의

resteasy.original.webapplicationexception.behavior 매개변수를 web.xml 서블릿 속성 또는 시스템 속성으로 설정할 수 있습니다. 다음은 web.xml 에서 이러한 서블릿 속성 중 하나의 예입니다.

<context-param>
    <param-name>resteasy.original.webapplicationexception.behavior</param-name>
    <param-value>true</param-value>
</context-param>
Copy to Clipboard Toggle word wrap

MicroProfile Config를 사용하여 다른 REST Cryostat 속성을 구성할 수도 있습니다.

2.8. MicroProfile Reactive Messaging

2.8.1. MicroProfile Reactive Messaging

JBoss EAP XP 5.0.0으로 업그레이드하면 reactive messaging extensions 및 subsystems를 포함하는 MicroProfile Reactive Messaging의 최신 버전을 활성화할 수 있습니다.

"반복 스트림"은 처리 프로토콜 및 표준과 함께 이벤트 데이터의 연속으로, 버퍼링 없이 비동기 경계(예: 스케줄러)에 푸시됩니다. 예를 들어, "이벤트"가 예정된 일 수 있으며, 예를 들어, 환경 앱에서 온도 검사를 반복할 수 있습니다. 반응 스트림의 주요 이점은 다양한 애플리케이션 및 구현의 원활한 상호 운용성입니다.

반응형 메시징은 이벤트 중심, 데이터 스트리밍 및 이벤트 소싱 애플리케이션을 빌드하기 위한 프레임워크를 제공합니다. 반응성 메시징은 한 앱에서 다른 앱으로 이벤트 데이터, 반응 스트림의 일정 및 원활한 교환을 초래합니다. 예를 들어 애플리케이션이 Apache Kafka와 같은 다른 사용자와 상호 작용할 수 있도록 반응 스트림을 통해 비동기 메시징에 MicroProfile Reactive Messaging을 사용할 수 있습니다.

MicroProfile Reactive Messaging 인스턴스를 최신 버전으로 업그레이드한 후 다음을 수행할 수 있습니다.

  • Apache Kafka 데이터 스트리밍 플랫폼에 대한 MicroProfile Reactive Messaging으로 서버를 프로비저닝합니다.
  • 최신 반응 메시징 API를 통해 메모리 내 반응형 메시징과 상호 작용하고 Apache Kafka 주제에서 지원합니다.
  • 사용 가능한 메트릭 시스템을 사용하여 지정된 채널에서 스트리밍되는 메시지 수를 확인합니다.

2.8.2. MicroProfile Reactive Messaging 커넥터

커넥터를 사용하여 MicroProfile Reactive Messaging을 여러 외부 메시징 시스템과 통합할 수 있습니다. JBoss EAP용 MicroProfile에는 Apache Kafka 커넥터와 AMQP(Advanced Message Queuing Protocol) 커넥터가 포함되어 있습니다. Eclipse MicroProfile Config 사양을 사용하여 커넥터를 구성합니다.

MicroProfile Reactive Messaging 커넥터 및 통합 계층

MicroProfile Reactive Messaging에는 다음과 같은 커넥터가 포함되어 있습니다.

  • Kafka 커넥터

    microprofile-reactive-messaging-kafka 계층은 Kafka 커넥터를 통합합니다.

  • AMQP 커넥터

    microprofile-reactive-messaging-amqp 계층은 AMQP 커넥터를 통합합니다.

두 커넥터 계층 모두 microprofile-reactive-messaging Galleon 계층을 포함합니다. microprofile-reactive-messaging 계층은 핵심 MicroProfile Reactive Messaging 기능을 제공합니다.

Expand
표 2.1. Reactive messaging and connector Galleon Layers
계층정의

microprofile-reactive-streams-operators

  • MicroProfile Reactive Streams Operator API를 제공하고 모듈 구현을 지원합니다.
  • SmallRye 확장 및 하위 시스템이 포함된 MicroProfile Reactive Streams Operator가 포함되어 있습니다.
  • cdi 계층에 따라 다릅니다.

    • CDI 는 Jakarta Contexts and dependency Cryostat의 약자이며 @Inject 기능을 추가하는 하위 시스템을 제공합니다.

microprofile-reactive-messaging

  • MicroProfile Reactive Messaging API를 제공하고 모듈 구현을 지원합니다.
  • SmallRye 확장 및 하위 시스템이 포함된 MicroProfile을 포함합니다.
  • microprofile-configmicroprofile-reactive-streams-operators 계층에 따라 다릅니다.

microprofile-reactive-messaging-kafka

  • MicroProfile Reactive Messaging이 Kafka와 상호 작용할 수 있는 Kafka 커넥터 모듈을 제공합니다.
  • microprofile-reactive-messaging 계층에 따라 달라집니다.

microprofile-reactive-messaging-amqp

  • MicroProfile Reactive Messaging이 AMQP 클라이언트와 상호 작용할 수 있는 AMQP 커넥터 모듈을 제공합니다.
  • microprofile-reactive-messaging 계층에 따라 달라집니다.

2.8.3. Apache Kafka 이벤트 스트리밍 플랫폼

Apache Kafka는 실시간으로 레코드 스트림을 게시, 구독, 저장 및 처리할 수 있는 오픈 소스 분산 이벤트(데이터) 스트리밍 플랫폼입니다. 여러 소스의 이벤트 스트림을 처리하고 여러 소비자에 전달하여 대량의 데이터를 A에서 Z로 이동하고 다른 모든 위치에서 동시에 이동합니다. MicroProfile Reactive Messaging은 Apache Kafka를 사용하여 이러한 이벤트 레코드를 2 마이크로초 미만으로 제공하여 분산된 내결함성 클러스터에 안전하게 저장하고 모든 팀 정의 영역 또는 지역 리전에서 사용할 수 있도록 합니다.

3장. JBoss EAP에서 MicroProfile 관리

3.1. MicroProfile Telemetry 관리

3.1.1. 관리 CLI를 사용하여 MicroProfile Telemetry 하위 시스템 추가

MicroProfile Telemetry 구성 요소는 microprofile-telemetry 하위 시스템을 통해 기본 MicroProfile 구성에 통합되어 있습니다. 하위 시스템이 포함되지 않은 경우 관리 CLI를 사용하여 MicroProfile Telemetry 하위 시스템을 추가할 수도 있습니다.

사전 요구 사항

  • MicroProfile Telemetry 하위 시스템을 추가하기 전에 OpenTelemetry 하위 시스템을 구성에 추가해야 합니다. MicroProfile Telemetry 하위 시스템은 OpenTelemetry 하위 시스템에 따라 다릅니다.

프로세스

  1. 터미널을 엽니다.
  2. 다음 명령을 실행합니다.

    $ <JBOSS_HOME>/bin/jboss-cli.sh -c <<EOF
        if (outcome != success) of /subsystem=opentelemetry:read-resource
            /extension=org.wildfly.extension.opentelemetry:add()
            /subsystem=opentelemetry:add()
        end-if
        /extension=org.wildfly.extension.microprofile.telemetry:add
        /subsystem=microprofile-telemetry:add
        reload
    EOF
    Copy to Clipboard Toggle word wrap

3.1.2. MicroProfile Telemetry 하위 시스템 활성화

MicroProfile Telemetry는 기본적으로 비활성화되어 있으며 애플리케이션별로 활성화해야 합니다.

사전 요구 사항

  • MicroProfile Telemetry 하위 시스템이 구성에 추가되었습니다.
  • OpenTelemetry 하위 시스템이 구성에 추가되었습니다.

프로세스

  1. microprofile-config.properties 파일을 엽니다.
  2. otel.sdk.disabled 속성을 false 로 설정합니다.

    otel.sdk.disabled=false
    Copy to Clipboard Toggle word wrap

3.1.3. MicroProfile Config를 사용하여 서버 구성 덮어쓰기

MicroProfile Config를 사용하여 MicroProfile Telemetry 하위 시스템에서 개별 애플리케이션에 대한 서버 구성을 덮어쓸 수 있습니다.

예를 들어 내보낸 추적에 사용되는 서비스 이름은 기본적으로 배포 아카이브와 동일합니다. 배포 아카이브가 my-application-1.0.war 로 설정된 경우 서비스 이름은 동일합니다. 이 구성을 재정의하려면 구성 파일에서 otel.service.name 속성 값을 변경할 수 있습니다.

otel.service.name=My Application
Copy to Clipboard Toggle word wrap

3.2. MicroProfile Config 구성

3.2.1. ConfigSource 관리 리소스에 속성 추가

구성 소스 하위 시스템에 직접 속성을 관리 리소스로 저장할 수 있습니다.

프로세스

  • ConfigSource를 생성하고 속성을 추가합니다.

    /subsystem=microprofile-config-smallrye/config-source=props:add(properties={"name" = "jim"})
    Copy to Clipboard Toggle word wrap

3.2.2. 디렉터리를 ConfigSources로 구성

속성이 파일로 디렉터리에 저장되면 file-name은 속성의 이름이고 파일 콘텐츠는 속성 값입니다.

프로세스

  1. 파일을 저장할 디렉터리를 생성합니다.

    $ mkdir -p ~/config/prop-files/
    Copy to Clipboard Toggle word wrap
  2. 디렉터리로 이동합니다.

    $ cd ~/config/prop-files/
    Copy to Clipboard Toggle word wrap
  3. 속성 이름 값을 저장할 파일 이름을 생성합니다.

    $ touch name
    Copy to Clipboard Toggle word wrap
  4. 속성 값을 파일에 추가합니다.

    $ echo "jim" > name
    Copy to Clipboard Toggle word wrap
  5. 파일 이름이 속성인 ConfigSource를 생성하고 파일의 값은 속성 값을 생성합니다.

    /subsystem=microprofile-config-smallrye/config-source=file-props:add(dir={path=~/config/prop-files})
    Copy to Clipboard Toggle word wrap

    그러면 다음과 같은 XML 구성이 생성됩니다.

    <subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
        <config-source name="file-props">
            <dir path="/etc/config/prop-files"/>
        </config-source>
    </subsystem>
    Copy to Clipboard Toggle word wrap

3.2.3. 루트 디렉터리를 ConfigSources로 구성

루트 특성을 사용하여 여러 MicroProfile ConfigSource 디렉터리의 루트 디렉터리로 디렉터리를 정의할 수 있습니다.

중첩된 루트 속성은 /subsystem=microprofile-config-undercloudrye/config-source=* 리소스에 대한 dir complex 속성의 일부입니다. 이렇게 하면 동일한 루트 디렉터리를 공유하는 경우 여러 ConfigSource 디렉터리를 지정할 필요가 없습니다.

root 디렉토리 내에서 직접 모든 파일은 무시됩니다. 구성에 사용되지 않습니다. 최상위 디렉터리는 ConfigSources로 처리됩니다. 중첩된 디렉터리도 무시됩니다.

참고

최상위 디렉토리의 ConfigSources에는 기본적으로 /subsystem=microprofile-config-undercloudrye/config-source=* 리소스의 ordinal 이 할당됩니다.

최상위 디렉터리에 config_ordinal 파일이 포함된 경우 파일에 지정된 값이 기본 ordinal 값을 재정의합니다. 동일한 서수 의 상위 수준 디렉터리에 동일한 항목이 포함된 경우 디렉터리 이름이 알파벳순으로 정렬되고 첫 번째 디렉터리가 사용됩니다.

사전 요구 사항

  • MicroProfile Config 확장을 설치하고 microprofile-config-undercloudrye 하위 시스템을 활성화했습니다.

프로세스

  1. 터미널을 엽니다.
  2. 파일을 저장할 디렉터리를 생성합니다.

    mkdir -p ~/etc/config/prop-files/
    Copy to Clipboard Toggle word wrap
  3. 생성한 디렉터리로 이동합니다.

    cd ~/etc/config/prop-files/
    Copy to Clipboard Toggle word wrap
  4. 속성 이름 값을 저장할 파일 이름을 생성합니다.

    touch name
    Copy to Clipboard Toggle word wrap
  5. 속성 값을 파일에 추가합니다.

    echo "jim" > name
    Copy to Clipboard Toggle word wrap
  6. CLI에서 다음 명령을 실행하여 파일 이름이 속성이고 파일에 속성 값이 포함된 ConfigSource를 생성합니다.

    /subsystem=microprofile-config-smallrye/config-source=prop-files:add(dir={path=/etc/config, root=true})
    Copy to Clipboard Toggle word wrap
  7. 그러면 XML 구성이 생성됩니다.

    <subsystem
    xmlns="urn:wildfly:microprofile-config-smallrye:2.0">
     <config-source name="prop-files">
       <dir path="/etc/config" root="true"/>
     </config-source>
    </subsystem>
    Copy to Clipboard Toggle word wrap

3.2.4. ConfigSource 클래스에서 ConfigSource 가져오기

사용자 지정 org.eclipse.microprofile.config.spi.ConfigSource 구현 클래스를 생성하고 구성 값에 대한 소스를 제공할 수 있습니다.

프로세스

  • 다음 관리 CLI 명령은 org.example 이라는 JBoss 모듈에서 제공하는 org.example.My ConfigSource 라는 구현 클래스에 대한 ConfigSource를 생성합니다.

    org.example 모듈의 ConfigSource 를 사용하려면 < module name="org.eclipse.microprofile.config.api"/ > 종속성을 path/to/org/example/main/module.xml 파일에 추가합니다.

    /subsystem=microprofile-config-smallrye/config-source=my-config-source:add(class={name=org.example.MyConfigSource, module=org.example})
    Copy to Clipboard Toggle word wrap

    이 명령을 실행하면 microprofile-config-undercloudrye 하위 시스템에 대해 다음과 같은 XML 구성이 생성됩니다.

    <subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
        <config-source name="my-config-source">
            <class name="org.example.MyConfigSource" module="org.example"/>
        </config-source>
    </subsystem>
    Copy to Clipboard Toggle word wrap

사용자 정의 org.eclipse.microprofile.config.spi.ConfigSource 구현 클래스에서 제공하는 속성은 모든 JBoss EAP 배포에서 사용할 수 있습니다.

3.2.5. ConfigSourceProvider 클래스에서 ConfigSource 구성 가져오기

여러 ConfigSource 인스턴스의 구현을 등록하는 사용자 지정 org.eclipse.microprofile.config.spi.ConfigSourceProvider 구현 클래스를 생성하고 구성할 수 있습니다.

프로세스

  • config-source-provider 를 생성합니다.

    /subsystem=microprofile-config-smallrye/config-source-provider=my-config-source-provider:add(class={name=org.example.MyConfigSourceProvider, module=org.example})
    Copy to Clipboard Toggle word wrap

    이 명령은 org.example 이라는 JBoss 모듈에서 제공하는 org.example.MyConfigSourceProvider 라는 구현 클래스에 대해 config-source-provider 를 생성합니다.

    org.example 모듈의 config-source-provider 를 사용하려면 < module name="org.eclipse.microprofile.config.api"/ > 종속성을 path/to/org/example/main/module.xml 파일에 추가합니다.

    이 명령을 실행하면 microprofile-config-undercloudrye 하위 시스템에 대해 다음과 같은 XML 구성이 생성됩니다.

    <subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
        <config-source-provider name="my-config-source-provider">
             <class name="org.example.MyConfigSourceProvider" module="org.example"/>
        </config-source-provider>
    </subsystem>
    Copy to Clipboard Toggle word wrap

ConfigSourceProvider 구현에서 제공하는 속성은 모든 JBoss EAP 배포에서 사용할 수 있습니다.

3.3. MicroProfile Fault Tolerance 구성

3.3.1. MicroProfile Fault Tolerance 확장 추가

MicroProfile Fault Tolerance 확장은 JBoss EAP XP의 일부로 제공되는 standalone-microprofile.xmlstandalone-microprofile-ha.xml 구성에 포함되어 있습니다.

확장은 표준 standalone.xml 구성에 포함되지 않습니다. 확장을 사용하려면 수동으로 활성화해야 합니다.

사전 요구 사항

  • JBoss EAP XP 5.0을 사용한 JBoss EAP 8.0이 설치되어 있습니다.

프로세스

  1. 다음 관리 CLI 명령을 사용하여 MicroProfile Fault Tolerance 확장을 추가합니다.

    /extension=org.wildfly.extension.microprofile.fault-tolerance-smallrye:add
    Copy to Clipboard Toggle word wrap
  2. 다음 managenent 명령을 사용하여 microprofile-fault-tolerance-undercloudrye 하위 시스템을 활성화합니다.

    /subsystem=microprofile-fault-tolerance-smallrye:add
    Copy to Clipboard Toggle word wrap
  3. 다음 관리 명령을 사용하여 서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap

3.4. MicroProfile 상태 구성

3.4.1. 관리 CLI를 사용하여 상태 검사

관리 CLI를 사용하여 시스템 상태를 확인할 수 있습니다.

프로세스

  • 상태를 검사합니다.

    /subsystem=microprofile-health-smallrye:check
    {
        "outcome" => "success",
        "result" => {
            "status" => "UP",
            "checks" => []
        }
    }
    Copy to Clipboard Toggle word wrap

3.4.2. 관리 콘솔을 사용하여 상태 검사

관리 콘솔을 사용하여 시스템 상태를 확인할 수 있습니다.

검사 런타임 작업은 상태 점검과 글로벌 결과를 부울 값으로 표시합니다.

프로세스

  1. 런타임 탭으로 이동하여 서버를 선택합니다.
  2. Monitor 열에서 MicroProfile HealthView 를 클릭합니다.

3.4.3. HTTP 끝점을 사용하여 상태 검사

상태 점검은 JBoss EAP의 상태 컨텍스트에 자동으로 배포되므로 HTTP 끝점을 사용하여 현재 상태를 얻을 수 있습니다.

관리 인터페이스에서 액세스할 수 있는 /health 끝점의 기본 주소는 http://127.0.0.1:9990/health 입니다.

프로세스

  • HTTP 끝점을 사용하여 서버의 현재 상태를 얻으려면 다음 URL을 사용합니다.

    http://<host>:<port>/health
    Copy to Clipboard Toggle word wrap

    이 컨텍스트에 액세스하면 서버가 정상 상태인지 여부를 나타내는 JSON 형식의 상태 점검이 표시됩니다.

3.4.4. MicroProfile 상태에 대한 인증 활성화

액세스를 위해 인증이 필요하도록 상태 컨텍스트를 구성할 수 있습니다.

프로세스

  1. microprofile-health-undercloudrye 하위 시스템에서 security- enabled 속성을 true 로 설정합니다.

    /subsystem=microprofile-health-smallrye:write-attribute(name=security-enabled,value=true)
    Copy to Clipboard Toggle word wrap
  2. 변경 사항을 적용하려면 서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap

이후 /health 엔드포인트에 액세스하려고 하면 인증 프롬프트가 트리거됩니다.

3.4.5. 서버 상태 및 준비 상태를 확인하는 준비 상태 프로브

JBoss EAP XP 5.0.0은 서버 상태 및 준비 상태를 확인하기 위해 세 가지 준비 상태 프로브를 지원합니다.

  • server-status - server-state가 실행 중일 때 UP 을 반환합니다.
  • boot-errors - 프로브에서 부팅 오류를 감지하지 않으면 UP 을 반환합니다.
  • deployment-status - 모든 배포의 상태가 OK 이면 UP 을 반환합니다.

이러한 준비 상태 프로브는 기본적으로 활성화되어 있습니다. MicroProfile Config 속성 mp.health.disable-default-procedures 를 사용하여 프로브를 비활성화할 수 있습니다.

다음 예제에서는 검사 작업에서 세 개의 프로브를 사용하는 방법을 보여줍니다.

[standalone@localhost:9990 /] /subsystem=microprofile-health-smallrye:check
{
    "outcome" => "success",
    "result" => {
        "status" => "UP",
        "checks" => [
            {
                "name" => "boot-errors",
                "status" => "UP"
            },
            {
                "name" => "server-state",
                "status" => "UP",
                "data" => {"value" => "running"}
            },
            {
                "name" => "empty-readiness-checks",
                "status" => "UP"
            },
            {
                "name" => "deployments-status",
                "status" => "UP"
            },
            {
                "name" => "empty-liveness-checks",
                "status" => "UP"
            },
            {
                "name" => "empty-startup-checks",
                "status" => "UP"
            }
        ]
    }
}
Copy to Clipboard Toggle word wrap

3.4.6. 프로브가 정의되지 않은 경우 글로벌 상태

:empty-readiness-checks-status,:empty-liveness -checks-status, :empty-startup-checks-status 관리 속성은 준비 상태, 활성 상태 또는 시작 프로브가 정의되지 않은 경우 글로벌 상태를 지정합니다.

이러한 속성을 사용하면 애플리케이션이 애플리케이션이 준비되었는지, 실시간 또는 시작 여부를 확인할 때까지 애플리케이션이 'DOWN'을 보고할 수 있습니다. 기본적으로 애플리케이션은 'UP'을 보고합니다.

  • :empty- readiness -checks-status 속성은 준비 프로브가 정의되지 않은 경우 준비 상태 프로브의 글로벌 상태를 지정합니다.

    /subsystem=microprofile-health-smallrye:read-attribute(name=empty-readiness-checks-status)
    {
        "outcome" => "success",
        "result" => expression "${env.MP_HEALTH_EMPTY_READINESS_CHECKS_STATUS:UP}"
    }
    Copy to Clipboard Toggle word wrap
  • :empty- liveness -checks-status 속성은 활성 프로브가 정의되지 않은 경우 활성 프로브에 대한 글로벌 상태를 지정합니다.

    /subsystem=microprofile-health-smallrye:read-attribute(name=empty-liveness-checks-status)
    {
        "outcome" => "success",
        "result" => expression "${env.MP_HEALTH_EMPTY_LIVENESS_CHECKS_STATUS:UP}"
    }
    Copy to Clipboard Toggle word wrap
  • :empty- startup -checks-status 속성은 시작 프로브가 정의되지 않은 경우 시작 프로브에 대한 글로벌 상태를 지정합니다.

    /subsystem=microprofile-health-smallrye:read-attribute(name=empty-startup-checks-status)
    {
        "outcome" => "success",
        "result" => expression "${env.MP_HEALTH_EMPTY_STARTUP_CHECKS_STATUS:UP}"
    }
    Copy to Clipboard Toggle word wrap

    준비 상태 프로브,활성 상태 프로브 및 시작 프로브를 확인하는 /health HTTP 끝점 및 :check 작업도 이러한 특성을 고려합니다.

다음 예와 같이 이러한 속성을 수정할 수도 있습니다.

/subsystem=microprofile-health-smallrye:write-attribute(name=empty-readiness-checks-status,value=DOWN)
{
    "outcome" => "success",
    "response-headers" => {
        "operation-requires-reload" => true,
        "process-state" => "reload-required"
    }
}
Copy to Clipboard Toggle word wrap

3.5. MicroProfile JWT 구성

3.5.1. microprofile-jwt-Neutronrye 하위 시스템 활성화

MicroProfile JWT 통합은 microprofile-jwt-undercloudrye 하위 시스템에서 제공하며 기본 구성에 포함되어 있습니다. 기본 구성에 하위 시스템이 없으면 다음과 같이 추가할 수 있습니다.

사전 요구 사항

  • JBoss EAP XP 5.0을 사용한 JBoss EAP 8.0이 설치되어 있습니다.

프로세스

  1. JBoss EAP에서 MicroProfile JWT smallrye 확장을 활성화합니다.

    /extension=org.wildfly.extension.microprofile.jwt-smallrye:add
    Copy to Clipboard Toggle word wrap
  2. microprofile-jwt-undercloudrye 하위 시스템을 활성화합니다.

    /subsystem=microprofile-jwt-smallrye:add
    Copy to Clipboard Toggle word wrap
  3. 서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap

microprofile-jwt-Neutronrye 하위 시스템이 활성화됩니다.

3.6. MicroProfile OpenAPI 관리

3.6.1. MicroProfile OpenAPI 활성화

microprofile-openapi-undercloudrye 하위 시스템은 standalone-microprofile.xml 구성에 제공됩니다. 그러나 JBoss EAP XP는 기본적으로 standalone.xml 을 사용합니다. 이를 사용하려면 standalone.xml 에 하위 시스템을 포함해야 합니다.

또는 MicroProfile 하위 시스템 및 확장 기능을 사용하여 독립 실행형 구성 업데이트 절차에 따라 standalone.xml 구성 파일을 업데이트할 수 있습니다.

프로세스

  1. JBoss EAP에서 MicroProfile OpenAPI smallrye 확장을 활성화합니다.

    /extension=org.wildfly.extension.microprofile.openapi-smallrye:add()
    Copy to Clipboard Toggle word wrap
  2. 다음 관리 명령을 사용하여 microprofile-openapi-undercloudrye 하위 시스템을 활성화합니다.

    /subsystem=microprofile-openapi-smallrye:add()
    Copy to Clipboard Toggle word wrap
  3. 서버를 다시 로드합니다.

    reload
    Copy to Clipboard Toggle word wrap

microprofile-openapi-Neutronrye 하위 시스템이 활성화됩니다.

3.6.2. Accept HTTP 헤더를 사용하여 MicroProfile OpenAPI 문서 요청

Accept HTTP 헤더를 사용하여 배포에서 MicroProfile OpenAPI 문서를 JSON 형식으로 요청합니다.

기본적으로 OpenAPI 엔드포인트는 YAML 문서를 반환합니다.

사전 요구 사항

  • 쿼리 중인 배포는 MicroProfile OpenAPI 문서를 반환하도록 구성됩니다.

프로세스

  • 다음 curl 명령을 실행하여 배포의 /openapi 엔드포인트를 쿼리합니다.

    $ curl -v -H'Accept: application/json' http://localhost:8080/openapi
    < HTTP/1.1 200 OK
    ...
    {"openapi": "3.0.1" ... }
    Copy to Clipboard Toggle word wrap

    http://localhost:8080 를 배포의 URL 및 포트로 교체합니다.

    Accept 헤더는 application/json 문자열을 사용하여 JSON 문서를 반환함을 나타냅니다.

3.6.3. HTTP 매개변수를 사용하여 MicroProfile OpenAPI 문서 요청

HTTP 요청의 쿼리 매개변수를 사용하여 배포에서 MicroProfile OpenAPI 문서를 요청합니다.

기본적으로 OpenAPI 엔드포인트는 YAML 문서를 반환합니다.

사전 요구 사항

  • 쿼리 중인 배포는 MicroProfile OpenAPI 문서를 반환하도록 구성됩니다.

프로세스

  • 다음 curl 명령을 실행하여 배포의 /openapi 엔드포인트를 쿼리합니다.

    $ curl -v http://localhost:8080/openapi?format=JSON
    < HTTP/1.1 200 OK
    ...
    Copy to Clipboard Toggle word wrap

    http://localhost:8080 를 배포의 URL 및 포트로 교체합니다.

    HTTP 매개변수 format=JSON 은 JSON 문서가 반환됨을 나타냅니다.

3.6.4. 정적 OpenAPI 문서를 제공하도록 JBoss EAP 구성

호스트의 REST 서비스를 설명하는 정적 OpenAPI 문서를 제공하도록 JBoss EAP를 구성합니다.

JBoss EAP가 정적 OpenAPI 문서를 제공하도록 구성된 경우 정적 OpenAPI 문서는 Jakarta RESTful Web Services 및 MicroProfile OpenAPI 주석보다 먼저 처리됩니다.

프로덕션 환경에서 정적 문서를 제공할 때 주석 처리를 비활성화합니다. 주석 처리를 비활성화하면 클라이언트에 변경 불가능한 버전이 지정된 API 계약을 사용할 수 있습니다.

프로세스

  1. 애플리케이션 소스 트리에 디렉터리를 생성합니다.

    $ mkdir APPLICATION_ROOT/src/main/webapp/META-INF
    Copy to Clipboard Toggle word wrap

    APPLICATION_ROOT 는 애플리케이션의 pom.xml 구성 파일을 포함하는 디렉터리입니다.

  2. OpenAPI 엔드포인트를 쿼리하여 출력을 파일로 리디렉션합니다.

    $ curl http://localhost:8080/openapi?format=JSON > src/main/webapp/META-INF/openapi.json
    Copy to Clipboard Toggle word wrap

    기본적으로 끝점은 YAML 문서를 제공하며 format=JSON 은 JSON 문서가 반환되도록 지정합니다.

  3. OpenAPI 문서 모델을 처리할 때 주석 스캔을 건너뛰도록 애플리케이션을 구성합니다.

    $ echo "mp.openapi.scan.disable=true" > APPLICATION_ROOT/src/main/webapp/META-INF/microprofile-config.properties
    Copy to Clipboard Toggle word wrap
  4. 애플리케이션을 다시 빌드합니다.

    $ mvn clean install
    Copy to Clipboard Toggle word wrap
  5. 다음 관리 CLI 명령을 사용하여 애플리케이션을 다시 배포합니다.

    1. 애플리케이션 배포를 취소합니다.

      undeploy microprofile-openapi.war
      Copy to Clipboard Toggle word wrap
    2. 애플리케이션을 배포합니다.

      deploy APPLICATION_ROOT/target/microprofile-openapi.war
      Copy to Clipboard Toggle word wrap

JBoss EAP는 이제 OpenAPI 엔드포인트에서 정적 OpenAPI 문서를 제공합니다.

3.6.5. microprofile-openapi-undercloudrye 비활성화

관리 CLI를 사용하여 JBoss EAP XP에서 microprofile-openapi-undercloudrye 하위 시스템을 비활성화할 수 있습니다.

프로세스

  • microprofile-openapi-Neutronrye 하위 시스템을 비활성화합니다.

    /subsystem=microprofile-openapi-smallrye:remove()
    Copy to Clipboard Toggle word wrap

3.7. MicroProfile Reactive Messaging 관리

JBoss EAP 인스턴스에 비동기 반응 메시징을 활성화하려면 JBoss EAP 관리 CLI를 통해 확장을 추가해야 합니다.

사전 요구 사항

프로세스

  1. JBoss EAP 관리 CLI를 엽니다.
  2. 다음 코드를 입력합니다.
[standalone@localhost:9990 /] /extension=org.wildfly.extension.microprofile.reactive-messaging-smallrye:add
{"outcome" => "success"}

[standalone@localhost:9990 /] /subsystem=microprofile-reactive-messaging-smallrye:add
{
    "outcome" => "success",
    "response-headers" => {
        "operation-requires-reload" => true,
        "process-state" => "reload-required"
    }
}
Copy to Clipboard Toggle word wrap
참고

OpenShift에서 Galleon을 사용하여 서버를 프로비저닝하는 경우 마이크로profile-reactive-messaging Galleon 계층을 포함하여 코어 MicroProfile 2.0.1 및 reactive 메시징 기능을 가져오고 필요한 하위 시스템 및 확장을 활성화하십시오. 이 구성에는 커넥터를 활성화하는 데 필요한 JBoss EAP 모듈이 포함되어 있지 않습니다. microprofile-reactive-messaging-kafka 계층 또는 microprofile-reactive-messaging-amqp 계층을 사용하여 Kafka 커넥터 또는 AMQP 커넥터를 각각 활성화합니다.

검증

관리 CLI에서 결과 코드에서 두 곳에서 성공이 표시되는 경우 JBoss EAP에 필요한 MicroProfile Reactive Messaging 확장 및 하위 시스템을 성공적으로 추가했습니다.

작은 정보

결과 코드에서 reload-required 라고 하는 경우 서버 구성을 다시 로드하여 모든 변경 사항을 완전히 적용해야 합니다. 다시 로드하려면 독립 실행형 서버 CLI에서 reload 를 입력합니다.

3.8. 독립 실행형 서버 구성

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

JBoss EAP XP에는 독립 실행형 서버 구성 파일, standalone-microprofile.xmlstandalone-microprofile-ha.xml 이 포함되어 있습니다.

JBoss EAP에 포함된 표준 구성 파일은 변경되지 않습니다. JBoss EAP XP 5.0.0은 domain.xml 파일 또는 도메인 모드를 지원하지 않습니다.

Expand
표 3.1. JBoss EAP XP에서 사용 가능한 독립 실행형 구성 파일
구성 파일목적포함된 기능제외된 기능

standalone.xml

독립 실행형 서버를 시작할 때 사용되는 기본 구성입니다.

하위 시스템, 네트워킹, 배포, 소켓 바인딩 및 기타 구성 가능한 세부 정보를 포함하여 서버에 대한 정보를 포함합니다.

메시징 또는 고가용성에 필요한 하위 시스템을 제외합니다.

standalone-microprofile.xml

이 구성 파일은 MicroProfile을 사용하는 애플리케이션을 지원합니다.

하위 시스템, 네트워킹, 배포, 소켓 바인딩 및 기타 구성 가능한 세부 정보를 포함하여 서버에 대한 정보를 포함합니다.

다음 기능을 제외합니다.

  • Jakarta Enterprise Cryostats
  • 메시징
  • Jakarta EE Batch
  • Jakarta Server seems
  • Jakarta Enterprise Cryostat 타이머

standalone-ha.xml

 

기본 하위 시스템을 포함하고 고가용성을 위해 modclusterjgroups 하위 시스템을 추가합니다.

메시징에 필요한 하위 시스템을 제외합니다.

standalone-microprofile-ha.xml

이 독립 실행형 파일은 MicroProfile을 사용하는 애플리케이션을 지원합니다.

기본 하위 시스템 외에도 고가용성을 위해 modclusterjgroups 하위 시스템을 포함합니다.

메시징에 필요한 하위 시스템을 제외합니다.

standalone-full.xml

 

기본 하위 시스템 외에도 messaging-activemqiiop-openjdk 하위 시스템을 포함합니다.

 

standalone-full-ha.xml

가능한 모든 하위 시스템을 지원합니다.

기본 하위 시스템 외에도 메시징 및 고가용성을 위한 하위 시스템 포함.

 

standalone-load-balancer.xml

기본 제공 mod_cluster 프런트 엔드 로드 밸런서를 사용하여 다른 JBoss EAP 인스턴스의 부하를 분산하는 데 필요한 최소 하위 시스템 지원.

  

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

$ <EAP_HOME>/bin/standalone.sh -c=standalone-microprofile.xml
Copy to Clipboard Toggle word wrap

docs/examples/enable-microprofile.cli 스크립트를 사용하여 MicroProfile 하위 시스템 및 확장을 사용하여 표준 독립 실행형 서버 구성 파일을 업데이트할 수 있습니다. enable-microprofile.cli 스크립트는 사용자 지정 구성이 아닌 표준 독립 실행형 서버 구성 파일을 업데이트하기 위한 예제 스크립트로 사용됩니다.

enable-microprofile.cli 스크립트는 기존 독립 실행형 서버 구성을 수정하고 독립 실행형 구성 파일에 없는 경우 다음 MicroProfile 하위 시스템 및 확장을 추가합니다.

  • microprofile-config-smallrye
  • microprofile-fault-tolerance-smallrye
  • microprofile-health-smallrye
  • microprofile-jwt-smallrye
  • microprofile-openapi-smallrye

enable-microprofile.cli 스크립트는 수정 사항에 대한 높은 수준의 설명을 출력합니다. 구성은 elytron 하위 시스템을 사용하여 보호됩니다. 보안 하위 시스템은 (있는 경우) 구성에서 제거됩니다.

사전 요구 사항

  • JBoss EAP XP 5.0을 사용한 JBoss EAP 8.0이 설치되어 있습니다.

프로세스

  1. 다음 CLI 스크립트를 실행하여 기본 standalone.xml 서버 구성 파일을 업데이트합니다.

    $ <EAP_HOME>/bin/jboss-cli.sh --file=docs/examples/enable-microprofile.cli
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 사용하여 기본 standalone.xml 서버 구성 파일 이외의 독립 실행형 서버 구성을 선택합니다.

    $ <EAP_HOME>/bin/jboss-cli.sh --file=docs/examples/enable-microprofile.cli -Dconfig=<standalone-full.xml|standalone-ha.xml|standalone-full-ha.xml>
    Copy to Clipboard Toggle word wrap
  3. 이제 지정된 구성 파일에 MicroProfile 하위 시스템 및 확장 기능이 포함됩니다.

4장. JBoss EAP용 MicroProfile 애플리케이션 개발

MicroProfile API를 사용하는 애플리케이션 개발을 시작하려면 Maven 프로젝트를 생성하고 필요한 종속 항목을 정의합니다. 애플리케이션 POM(Project Object Model)에서 런타임 Maven 종속 항목 버전을 제어하려면 JBoss EAP BOM( MicroProfileServiceVersion of materials)을 사용합니다.

Maven 프로젝트를 생성한 후 특정 MicroProfile API의 애플리케이션 개발에 대한 정보는 JBoss EAP XP 빠른 시작을 참조하십시오. 자세한 내용은 JBoss EAP XP 빠른 시작을 참조하십시오.

4.1. maven-archetype-webapp을 사용하여 Maven 프로젝트 생성

maven-archetype-webapp archetype을 사용하여 JBoss EAP 배포를 위한 애플리케이션을 구축하기 위한 Maven 프로젝트를 생성합니다. Maven은 프로젝트 유형과 관련된 템플릿을 기반으로 프로젝트를 생성하는 데 필요한 다양한 archetypes를 제공합니다. maven-archetype-webapp 은 간단한 웹 애플리케이션을 개발하는 데 필요한 구조를 사용하여 프로젝트를 생성합니다.

사전 요구 사항

프로세스

  1. mvn 명령을 사용하여 Maven 프로젝트를 설정합니다. 명령은 프로젝트에 대한 디렉터리 구조와 pom.xml 구성 파일을 생성합니다.

    $ mvn archetype:generate                       \
    -DgroupId=<group_id>                           \
    1
    
    -DartifactId=<artifact_id>                     \
    2
    
    -DarchetypeGroupId=org.apache.maven.archetypes \
    3
    
    -DarchetypeArtifactId=maven-archetype-webapp   \
    4
    
    -DinteractiveMode=false                         
    5
    Copy to Clipboard Toggle word wrap
    1
    groupID 는 프로젝트를 고유하게 식별합니다.
    2
    artifactId 는 생성된 Cryostat 아카이브 이름입니다.
    3
    archetypeGroupIDmaven-archetype-webapp 의 고유 ID입니다.
    4
    archetypeArtifactIdmaven-archetype-webapp 의 아티팩트 ID입니다.
    5
    InteractiveMode 는 대화형 모드에서 시작하는 대신 제공된 매개 변수를 사용하도록 Maven에 지시합니다.
  2. 생성된 디렉터리로 이동합니다.
  3. 텍스트 편집기에서 생성된 pom.xml 구성 파일을 엽니다.
  4. <name> helloworld Maven Webapp</name > 행 뒤에 pom.xml 구성 파일의 < project > 섹션 내의 콘텐츠를 제거합니다.

    파일이 다음과 같이 표시되는지 확인합니다.

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>${group_id}</groupId>
        <artifactId>${artifact_id}</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>
        <name>${artifact_id} Maven Webapp</name>
    
    </project>
    Copy to Clipboard Toggle word wrap

    애플리케이션에 필요하지 않기 때문에 콘텐츠가 제거되었습니다.

4.2. Maven 프로젝트에서 속성 정의

Maven pom.xml 구성 파일에서 속성을 값의 위치 소유자로 정의할 수 있습니다. 구성에서 일관되게 값을 사용하려면 JBoss EAP XP 서버의 값을 속성으로 정의합니다.

사전 요구 사항

프로세스

  • 구성된 애플리케이션을 배포할 JBoss EAP XP 버전으로 < version.bom.microprofile > 속성을 정의합니다.

    <project>
        ...
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>11</maven.compiler.source>
            <maven.compiler.target>11</maven.compiler.target>
            <version.bom.microprofile>5.0.0.GA-redhat-00009</version.bom.microprofile>
        </properties>
    </project>
    Copy to Clipboard Toggle word wrap

4.3. Maven 프로젝트에서 리포지토리 정의

Maven이 다운로드할 아티팩트 및 플러그인을 찾는 아티팩트 및 플러그인 리포지토리를 정의합니다.

사전 요구 사항

프로세스

  1. 아티팩트 리포지토리를 정의합니다.

    <project>
        ...
        <repositories>
            <repository>                                                                
    1
    
                <id>jboss-public-maven-repository</id>
                <name>JBoss Public Maven Repository</name>
                <url>https://repository.jboss.org/nexus/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>never</updatePolicy>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>never</updatePolicy>
                </snapshots>
                <layout>default</layout>
            </repository>
            <repository>                                                                
    2
    
                <id>redhat-ga-maven-repository</id>
                <name>Red Hat GA Maven Repository</name>
                <url>https://maven.repository.redhat.com/ga/</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>never</updatePolicy>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>never</updatePolicy>
                </snapshots>
                <layout>default</layout>
            </repository>
        </repositories>
    </project>
    Copy to Clipboard Toggle word wrap
    1
    Red Hat GA Maven 리포지토리는 모든 제품화된 JBoss EAP 및 기타 Red Hat 아티팩트를 제공합니다.
    2
    JBoss Public Maven Repository는 WildFly Maven 플러그인과 같은 아티팩트를 제공합니다.
  2. 플러그인 리포지토리를 정의합니다.

    <project>
        ...
        <pluginRepositories>
            <pluginRepository>
                <id>jboss-public-maven-repository</id>
                <name>JBoss Public Maven Repository</name>
                <url>https://repository.jboss.org/nexus/content/groups/public/</url>
                <releases>
                   <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
            <pluginRepository>
                <id>redhat-ga-maven-repository</id>
                <name>Red Hat GA Maven Repository</name>
                <url>https://maven.repository.redhat.com/ga/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </project>
    Copy to Clipboard Toggle word wrap

JBoss EAP BMC(BOM)를 가져와서 런타임 Maven 종속성 버전을 제어합니다. < dependencyManagement > 섹션에 BOM을 지정하는 경우 제공된 범위에 정의된 Maven 종속 항목의 버전을 개별적으로 지정할 필요가 없습니다.

사전 요구 사항

프로세스

  1. pom.xml 구성 파일의 properties 섹션에 BOM 버전의 속성을 추가합니다.

    <properties>
        ...
        <version.bom.microprofile>5.0.0.GA-redhat-00009</version.bom.microprofile>
    </properties>
    Copy to Clipboard Toggle word wrap

    < version.bom.microprofile> 속성에 정의된 값은 BOM 버전의 값으로 사용됩니다.

  2. JBoss EAP BOMs 종속성 관리를 가져옵니다.

    <project>
        ...
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.jboss.bom</groupId>                   
    1
    
                    <artifactId>jboss-eap-xp-microprofile</artifactId> 
    2
    
                    <version>${version.bom.microprofile}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </project>
    Copy to Clipboard Toggle word wrap
    1
    JBoss EAP 제공 BOM의 groupID.
    2
    지원되는 JBoss EAP MicroProfile API를 제공하는 JBoss EAP 제공 BOM의 artifactId입니다.

필요한 경우 Tools bill이 포함된 JBoss EAP EE를 프로젝트로 가져올 수 있습니다. 자세한 내용은 Maven 프로젝트에서 JBoss EAP BOM을 종속성 관리로 가져오기를 참조하십시오.

4.5. Maven 프로젝트에서 JBoss EAP BOM을 종속성 관리로 가져오기

필요한 경우 BOM(도구 BBM)을 사용하여 JBoss EAP EE를 가져올 수 있습니다. JBoss EAP BOM은 지원되는 JBoss EAP Java EE API와 추가 JBoss EAP API JAR 및 클라이언트 BOM을 제공합니다. 애플리케이션에 Microprofile API 외에도 Jakarta EE API가 필요한 경우에만 이 BOM을 가져올 수 있습니다.

사전 요구 사항

프로세스

  1. pom.xml 구성 파일의 properties 섹션에 BOM 버전의 속성을 추가합니다.

    <properties>
        ....
        <version.bom.ee>8.0.0.GA-redhat-00009</version.bom.ee>
    </properties>
    Copy to Clipboard Toggle word wrap
  2. JBoss EAP BOMs 종속성 관리를 가져옵니다.

    <project>
        ...
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.jboss.bom</groupId>                 
    1
    
                    <artifactId>jboss-eap-ee-with-tools</artifactId> 
    2
    
                    <version>${version.bom.ee}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </project>
    Copy to Clipboard Toggle word wrap
    1
    JBoss EAP 제공 BOM의 groupID.
    2
    지원되는 JBoss EAP Java EE API와 추가 JBoss EAP API JAR 및 클라이언트 BOMs, Arquillian과 같은 개발 툴을 제공하는 JBoss EAP 제공 BOM의 artifactId입니다.

4.6. Maven 프로젝트에서 플러그인 관리 추가

Maven 플러그인 관리 섹션을 pom.xml 구성 파일에 추가하여 Maven CLI 명령에 필요한 플러그인을 가져옵니다.

사전 요구 사항

프로세스

  1. < properties> 섹션에서 wildfly-maven-pluginmaven-war-plugin 의 버전을 정의합니다.

    <properties>
        ...
        <version.plugin.wildfly>4.2.1.Final</version.plugin.wildfly>
        <version.plugin.war>3.3.2</version.plugin.war>
    </properties>
    Copy to Clipboard Toggle word wrap
  2. &lt ; project> 섹션의 < build > 섹션에 <pluginManagement > 를 추가합니다.

    <project>
        ...
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>    
    1
    
                        <groupId>org.wildfly.plugins</groupId>
                        <artifactId>wildfly-maven-plugin</artifactId>
                        <version>${version.plugin.wildfly}</version>
                    </plugin>
                    <plugin>                                  
    2
    
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>${version.plugin.war}</version>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    </project>
    Copy to Clipboard Toggle word wrap
    1
    wildfly-maven-plugin 을 사용하여 wildfly:deploy 명령을 사용하여 애플리케이션을 JBoss EAP에 배포할 수 있습니다.
    2
    JDK17+와의 호환성을 보장하기 위해 war 플러그인 버전을 관리해야 합니다.

4.7. maven 프로젝트 확인

빌드를 구성한 Maven 프로젝트가 있는지 확인합니다.

사전 요구 사항

프로세스

  • pom.xml 에 추가된 Maven 종속성을 로컬로 설치합니다.

    $ mvn package
    Copy to Clipboard Toggle word wrap

    다음과 유사한 출력이 표시됩니다.

    ...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    ...
    Copy to Clipboard Toggle word wrap

특정 MicroProfile API용 애플리케이션 개발에 대한 자세한 내용은 JBoss EAP XP 빠른 시작을 참조하십시오.

5장. Micrometer 통합 이해

5.1. JBoss EAP의 마이크로미터

JBoss EAP의 마이크로미터 통합에는 애플리케이션 간 성능 메트릭을 등록하고 추적하는 재사용 가능한 API가 있는 벤더 중립적 관찰 계층이 도입되었습니다. 이 확장 기능은 Micrometer와 통합되어 배포된 애플리케이션이 API에 액세스하고 확장 기능에서 제공하는 서버 지표와 함께 애플리케이션별 메트릭을 표시할 수 있습니다.

참고

JBoss EAP는 기존 지표 하위 시스템을 사용합니다. 이 확장을 수동으로 추가하고 구성해야 합니다.

6장. JBoss EAP에서 Micrometer 관리

6.1. 관리 CLI를 사용하여 Micrometer 하위 시스템 추가

Micrometer 하위 시스템은 포괄적인 지표 수집 및 게시를 통해 JBoss EAP의 모니터링 기능을 향상시킵니다. 그러나 org.jboss.extension.micrometer 하위 시스템은 JBoss EAP 배포 내의 모든 독립 실행형 구성에서 사용할 수 있지만 수동으로 추가해야 합니다.

사전 요구 사항

  • JBoss EAP XP 5.0을 사용한 JBoss EAP 8.0이 설치되어 있습니다.
  • JBoss EAP 관리 CLI 및 구성 변경 권한에 액세스할 수 있습니다.

프로세스

  1. 터미널을 엽니다.
  2. 다음 명령을 실행하여 서버에 연결합니다.

    ./jboss-cli.sh --connect
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 Micrometer 확장이 구성에 이미 추가되었는지 확인합니다.

    [standalone@localhost:9990 /] /extension=org.wildfly.extension.micrometer:read-resource
    Copy to Clipboard Toggle word wrap
  4. Micrometer 확장을 사용할 수 없는 경우 다음 명령을 실행하여 추가합니다.

    [standalone@localhost:9990 /] /extension=org.wildfly.extension.micrometer:add
    Copy to Clipboard Toggle word wrap
  5. 필요한 구성으로 Micrometer 하위 시스템을 추가합니다. 예를 들어 다음 명령을 실행하여 메트릭 수집기의 끝점 URL을 지정합니다.

    [standalone@localhost:9990 /] /subsystem=micrometer:add(endpoint="http://localhost:4318/v1/metrics")
    Copy to Clipboard Toggle word wrap
  6. 서버를 다시 로드하여 변경 사항을 적용합니다.

    [standalone@localhost:9990 /] reload
    Copy to Clipboard Toggle word wrap
참고

수집기가 실행 중이 아니거나 해당 수집기 끝점을 사용할 수 없는 경우 다음과 유사한 경고 메시지가 트리거됩니다.

11:28:16,581 WARNING [io.micrometer.registry.otlp.OtlpMeterRegistry] (MSC service thread 1-5) Failed to publish metrics to OTLP receiver: java.net.ConnectException: Connection refused
Copy to Clipboard Toggle word wrap

이러한 단계를 수행하면 관리 CLI를 사용하여 Micrometer 하위 시스템을 JBoss EAP 서버에 추가하여 애플리케이션에 대한 향상된 모니터링 기능을 활성화할 수 있습니다.

7장. JBoss EAP용 Micrometer 애플리케이션 개발

7.1. JBoss EAP에서 Micrometer 지표 통합

Micrometer를 사용하면 JBoss EAP에서 애플리케이션 지표를 모니터링하고 수집할 수 있습니다. 마이크로미터 지원은 애플리케이션 메트릭의 노출을 제공합니다. 내보내기 프로세스는 PUSH 기반이므로 메트릭이 OpenTelemetry 수집기로 전송됩니다.

사전 요구 사항

  • JDK 17을 설치했습니다.
  • Maven 3.6 이상을 설치했습니다. 자세한 내용은 Apache Maven 다운로드를 참조하십시오.
  • Docker를 설치했습니다. 자세한 내용은 Docker 가져오기 를 참조하십시오.
  • 선택 사항: podman이 시스템에 설치되어 있어야 합니다. 지원되는 RHEL에서 사용 가능한 최신 podman 버전을 사용합니다. 자세한 내용은 Red Hat JBoss Enterprise Application Platform 8.0 지원 구성을 참조하십시오.
  • configure-micrometer.cli 파일은 애플리케이션 루트 디렉터리에서 사용할 수 있습니다.
참고

configure-micrometer.cli 파일을 사용하는 방법을 포함하여 이 섹션의 예는 Micrometer 빠른 시작을 기반으로 합니다.

프로세스

  1. 터미널을 엽니다.
  2. 다음 스크립트를 사용하여 JBoss EAP를 독립 실행형 서버로 시작합니다.

    $ <EAP_HOME>/bin/standalone.sh -c standalone-microprofile.xml
    Copy to Clipboard Toggle word wrap
    참고

    Windows 서버의 경우 < EAP_HOME> \bin\standalone.batch 스크립트를 사용합니다.

  3. 새 터미널을 엽니다.
  4. 애플리케이션 루트 디렉터리로 이동합니다.
  5. 다음 명령을 실행하여 서버를 구성합니다.

    $ <EAP_HOME>/bin/jboss-cli.sh --connect --file=configure-micrometer.cli
    Copy to Clipboard Toggle word wrap
    참고

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

    & lt;EAP_HOME >을 서버 경로로 바꿉니다.

    예상 출력:

    The batch executed successfully
    process-state: reload-required
    Copy to Clipboard Toggle word wrap

  6. 다음 관리 명령을 사용하여 서버를 다시 로드합니다.

    $ <EAP_HOME>/bin/jboss-cli.sh --connect --commands=reload
    Copy to Clipboard Toggle word wrap
  7. 다음 콘텐츠를 사용하여 docker-compose.yaml 이라는 구성 파일을 생성합니다.

    version: "3"
    
    services:
      otel-collector:
        image: otel/opentelemetry-collector
        command: [--config=/etc/otel-collector-config.yaml]
        volumes:
          - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml:Z
        ports:
          - 1888:1888 # pprof extension
          - 8888:8888 # Prometheus metrics exposed by the collector
          - 8889:8889 # Prometheus exporter metrics
          - 13133:13133 # health_check extension
          - 4317:4317 # OTLP gRPC receiver
          - 4318:4318 # OTLP http receiver
          - 55679:55679 # zpages extension
          - 1234:1234 # /metrics endpoint
    Copy to Clipboard Toggle word wrap
  8. 다음 콘텐츠를 사용하여 otel-collector-config.yaml 이라는 구성 파일을 생성합니다.

    extensions:
      health_check:
      pprof:
        endpoint: 0.0.0.0:1777
      zpages:
        endpoint: 0.0.0.0:55679
    
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    
    processors:
      batch:
    
    exporters:
      prometheus:
        endpoint: "0.0.0.0:1234"
    
    service:
      pipelines:
        metrics:
          receivers: [otlp]
          processors: [batch]
          exporters: [prometheus]
    
      extensions: [health_check, pprof, zpages]
    Copy to Clipboard Toggle word wrap
  9. 다음 명령을 실행하여 수집기 서버 인스턴스를 시작합니다.

    $ docker-compose up
    Copy to Clipboard Toggle word wrap
    참고

    Docker 대신 Podman을 사용할 수도 있습니다. Podman을 선택하는 경우 $ docker-compose up 대신 $ podman-compose up 명령을 사용하십시오. 환경에서 Docker 또는 Podman이 지원되지 않는 경우 OpenTelemetry 수집기 설치 및 실행에 대한 지침은 Otel Collector 설명서 를 참조하십시오.

  10. RootResource 클래스에서 MeterRegistry 가 클래스에 어떻게 삽입되는지 확인하여 미터를 등록하기 전에 적절한 설정을 확인하십시오.

    @Path("/")
    @ApplicationScoped
    public class RootResource {
        // ...
        @Inject
        private MeterRegistry registry;
    
        private Counter performCheckCounter;
        private Counter originalCounter;
        private Counter duplicatedCounter;
    
        @PostConstruct
        private void createMeters() {
            Gauge.builder("prime.highestSoFar", () -> highestPrimeNumberSoFar)
                    .description("Highest prime number so far.")
                    .register(registry);
            performCheckCounter = Counter
                    .builder("prime.performedChecks")
                    .description("How many prime checks have been performed.")
                    .register(registry);
            originalCounter = Counter
                    .builder("prime.duplicatedCounter")
                    .tags(List.of(Tag.of("type", "original")))
                    .register(registry);
            duplicatedCounter = Counter
                    .builder("prime.duplicatedCounter")
                    .tags(List.of(Tag.of("type", "copy")))
                    .register(registry);
        }
        // ...
    }
    Copy to Clipboard Toggle word wrap
  11. checkIfPrime() 메서드 본문을 검사하여 애플리케이션 논리 내에서 등록된 미터를 사용하는 방법을 확인합니다. 예를 들면 다음과 같습니다.

    @GET
    @Path("/prime/{number}")
    public String checkIfPrime(@PathParam("number") long number) throws Exception {
        performCheckCounter.increment();
    
        Timer timer = registry.timer("prime.timer");
    
        return timer.recordCallable(() -> {
    
            if (number < 1) {
                return "Only natural numbers can be prime numbers.";
            }
    
            if (number == 1) {
                return "1 is not prime.";
            }
    
            if (number == 2) {
                return "2 is prime.";
            }
    
            if (number % 2 == 0) {
                return number + " is not prime, it is divisible by 2.";
            }
    
            for (int i = 3; i < Math.floor(Math.sqrt(number)) + 1; i = i + 2) {
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    //
                }
                if (number % i == 0) {
                    return number + " is not prime, is divisible by " + i + ".";
                }
            }
    
            if (number > highestPrimeNumberSoFar) {
                highestPrimeNumberSoFar = number;
            }
    
            return number + " is prime.";
        });
    }
    Copy to Clipboard Toggle word wrap
  12. 애플리케이션 루트 디렉터리로 이동합니다.

    구문

    $ cd <path_to_application_root>/<application_root>
    Copy to Clipboard Toggle word wrap

    마이크로미터 빠른 시작에 대한 예를 들면 다음과 같습니다.

    $ cd ~/quickstarts/micrometer
    Copy to Clipboard Toggle word wrap

  13. 다음 명령을 사용하여 애플리케이션을 컴파일하고 배포합니다.

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

이렇게 하면 실행 중인 서버에 micrometer/target/micrometer.war 가 배포됩니다.

검증

  1. 웹 브라우저를 사용하여 애플리케이션에 액세스하거나 다음 명령을 실행할 수 있습니다.

    $ curl http://localhost:8080/micrometer/prime/13
    Copy to Clipboard Toggle word wrap

    예상 출력:

    13 is prime.
    Copy to Clipboard Toggle word wrap

JBoss EAP XP의 OpenShift 이미지에서 마이크로 서비스 애플리케이션을 빌드하고 실행할 수 있습니다.

참고

JBoss EAP XP는 OpenShift 4 이상 버전에서만 지원됩니다.

다음 워크플로를 사용하여 S2I(Source-to-Image) 프로세스를 사용하여 JBoss EAP XP의 OpenShift 이미지에서 마이크로서비스 애플리케이션을 빌드하고 실행합니다.

참고

기본 cloud-default-mp-config 계층은 standalone-microprofile-ha.xml 파일을 기반으로 하는 독립 실행형 구성 파일을 제공합니다. JBoss EAP XP에 포함된 서버 구성 파일에 대한 자세한 내용은 독립 실행형 서버 구성 파일 섹션을 참조하십시오.

이 워크플로는 마이크로profile-config 빠른 시작 예제를 사용합니다. 빠른 시작은 자체 프로젝트에 대한 참조로 사용할 수 있는 작고 구체적인 작업 예제를 제공합니다. 자세한 내용은 JBoss EAP XP 5.0.0과 함께 제공되는 microprofile-config 빠른 시작을 참조하십시오.

추가 리소스

8.1. 애플리케이션 배포를 위한 OpenShift 준비

애플리케이션 배포를 위해 OpenShift를 준비합니다.

사전 요구 사항

운영 중인 OpenShift 인스턴스가 설치되어 있어야 합니다. 자세한 내용은 Red Hat Customer Portal 에서 OpenShift Container Platform 클러스터 설치 및 구성 을 참조하십시오.

프로세스

  1. oc login 명령을 사용하여 OpenShift 인스턴스에 로그인합니다.
  2. OpenShift에서 새 프로젝트를 생성합니다.

    프로젝트를 사용하면 사용자 그룹이 다른 그룹과 별도로 콘텐츠를 구성하고 관리할 수 있습니다. 다음 명령을 사용하여 OpenShift에서 프로젝트를 생성할 수 있습니다.

    $ oc new-project PROJECT_NAME
    Copy to Clipboard Toggle word wrap

    예를 들어 microprofile-config 빠른 시작의 경우 다음 명령을 사용하여 Cryostat -demo 라는 새 프로젝트를 생성합니다.

    $ oc new-project eap-demo
    Copy to Clipboard Toggle word wrap

8.2. S2I를 사용하여 JBoss EAP XP 애플리케이션 이미지 빌드 및 배포

S2I(Source-to-Image) 워크플로우에 따라 JBoss EAP XP 애플리케이션에 대한 재현 가능한 컨테이너 이미지를 빌드합니다. 생성된 컨테이너 이미지에는 애플리케이션 배포 및 즉시 실행 가능한 JBoss EAP XP 서버가 포함됩니다.

S2I 워크플로는 Git 리포지토리에서 소스 코드를 가져와 사용하려는 언어 및 프레임워크를 기반으로 하는 컨테이너에 삽입합니다. S2I 워크플로우가 완료되면 src 코드가 컴파일되고 애플리케이션이 패키지화되고 JBoss EAP XP 서버에 배포됩니다.

사전 요구 사항

  • 유효한 Red Hat 고객 계정이 있습니다.
  • 레지스트리 서비스 계정이 있어야 합니다. Red Hat 고객 포털의 지침에 따라 레지스트리 서비스 계정을 사용하여 인증 토큰을 생성합니다.
  • Red Hat Ecosystem Catalog에서 이미지를 가져오는 데 사용할 수 있는 OpenShift 시크릿 YAML 파일을 다운로드했습니다. 자세한 내용은 OpenShift 시크릿 을 참조하십시오.
  • oc login 명령을 사용하여 OpenShift에 로그인했습니다.
  • Helm이 설치되어 있어야 합니다. 자세한 내용은 Helm 설치를 참조하십시오.
  • 관리 CLI에 이 명령을 입력하여 JBoss EAP Helm 차트 리포지토리를 설치했습니다.

    $ helm repo add jboss-eap https://jbossas.github.io/eap-charts/
    Copy to Clipboard Toggle word wrap

프로세스

  1. 다음 YAML 콘텐츠를 사용하여 helm.yaml 이라는 파일을 생성합니다.

    build:
      uri: https://github.com/jboss-developer/jboss-eap-quickstarts.git
      ref: XP_5.0.0.GA
      contextDir: microprofile-config
      mode: s2i
    deploy:
      replicas: 1
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 사용하여 Openshift에 JBoss EAP XP 애플리케이션을 배포합니다.

    $ helm install microprofile-config -f helm.yaml jboss-eap/eap-xp5
    Copy to Clipboard Toggle word wrap
참고

이 절차는 OpenShift에서 S2I(Source-to-Image)를 사용하여 애플리케이션 이미지 빌드와 매우 유사합니다. 해당 절차에 대한 자세한 내용은 OpenShift Container Platform에서 JBoss EAP 사용을 참조하십시오.

검증

  • curl 을 사용하여 애플리케이션에 액세스합니다.

    $ curl https://$(oc get route microprofile-config --template='{{ .spec.host }}')/config/value
    Copy to Clipboard Toggle word wrap

    MyPropertyFileConfigValue 출력이 표시됩니다. 그러면 애플리케이션이 배포되었는지 확인합니다.

애플리케이션에 따라 OpenShift 애플리케이션을 빌드하고 배포한 후 일부 작업을 완료해야 할 수 있습니다.

배포 후 작업의 예는 다음과 같습니다.

  • OpenShift 외부에서 애플리케이션을 볼 수 있도록 서비스를 노출합니다.
  • 애플리케이션을 특정 개수의 복제본으로 스케일링합니다.

프로세스

  1. 다음 명령을 사용하여 애플리케이션의 서비스 이름을 가져옵니다.

    $ oc get service
    Copy to Clipboard Toggle word wrap
  2. 선택 사항: 기본 서비스를 경로로 노출하여 OpenShift 외부에서 애플리케이션에 액세스할 수 있습니다. 예를 들어 microprofile-config 빠른 시작의 경우 다음 명령을 사용하여 필요한 서비스와 포트를 노출합니다.

    $ oc expose service/microprofile-config --port=8080
    Copy to Clipboard Toggle word wrap
  3. 경로의 URL을 가져옵니다.

    $ oc get route
    Copy to Clipboard Toggle word wrap
  4. URL을 사용하여 웹 브라우저에서 애플리케이션에 액세스합니다. URL은 이전 명령의 출력의 HOST/PORT 필드 값입니다.

    참고

    JBoss EAP XP 5.0.0 GA 배포의 경우 Microprofile Config quickstart는 애플리케이션의 루트 컨텍스트에 대한 HTTPS GET 요청에 응답하지 않습니다. 이 향상된 기능은 {JBossXPShortName101} GA 배포에서만 사용할 수 있습니다.

    예를 들어 Microprofile Config 애플리케이션과 상호 작용하기 위해 URL은 브라우저에서 http://HOST_PORT_Value/config/value 일 수 있습니다.

    애플리케이션에서 JBoss EAP 루트 컨텍스트를 사용하지 않는 경우 애플리케이션 컨텍스트를 URL에 추가합니다. 예를 들어 microprofile-config 빠른 시작의 경우 URL은 http://HOST_PORT_VALUE/microprofile-config/ 일 수 있습니다.

  5. 선택적으로 다음 명령을 실행하여 애플리케이션 인스턴스를 확장할 수 있습니다. 이 명령은 복제본 수를 3으로 늘립니다.

    $ oc scale deploymentconfig DEPLOYMENTCONFIG_NAME --replicas=3
    Copy to Clipboard Toggle word wrap

    예를 들어 microprofile-config 빠른 시작의 경우 다음 명령을 사용하여 애플리케이션을 확장합니다.

    $ oc scale deployment/microprofile-config --replicas=3
    Copy to Clipboard Toggle word wrap

추가 리소스

JBoss EAP XP 빠른 시작에 대한 자세한 내용은 JBoss EAP에서 MicroProfile 사용의 빠른 시작 섹션 을 참조하십시오.

9장. 기능 트리밍

부팅 가능한 JAR을 빌드할 때 포함할 JBoss EAP 기능 및 하위 시스템을 결정할 수 있습니다.

참고

기능 트리밍은 OpenShift에서만 지원되거나 부팅 가능한 JAR을 빌드할 때 지원됩니다.

추가 리소스

9.1. 사용 가능한 JBoss EAP 계층

Red Hat은 OpenShift에서 JBoss EAP 서버의 프로비저닝 또는 부팅 가능한 JAR을 사용자 정의하는 여러 계층을 제공합니다.

3개의 계층은 핵심 기능을 제공하는 기본 계층입니다. 다른 계층은 추가 기능으로 기본 계층을 개선하는 데코레이터 계층입니다.

대부분의 데코레이터 계층은 JBoss EAP에서 OpenShift용 S2I 이미지를 빌드하거나 부팅 가능한 JAR을 빌드하는 데 사용할 수 있습니다. 일부 계층은 S2I 이미지를 지원하지 않습니다. 계층에 대한 설명은 이러한 제한 사항을 설명합니다.

참고

나열된 계층만 지원됩니다. 여기에 나열되지 않은 계층은 지원되지 않습니다.

9.1.1. 기본 계층

각 기본 계층에는 일반적인 서버 사용자 사례에 대한 핵심 기능이 포함되어 있습니다.

datasources-web-server

이 계층에는 서블릿 컨테이너와 데이터 소스를 구성하는 기능이 포함됩니다.

이 레이어에는 MicroProfile 기능이 포함되어 있지 않습니다.

다음 Jakarta EE 사양이 이 계층에서 지원됩니다.

  • Jakarta JSON Processing 1.1
  • Jakarta JSON Binding 1.0
  • Jakarta Servlet 4.0
  • Jakarta Expression Language 3.0
  • Jakarta Server Pages 2.3
  • Jakarta 표준 태그 라이브러리 1.2
  • Jakarta Concurrency 1.1
  • Jakarta Annotations 1.3
  • Jakarta XML Binding 2.3
  • 기타 언어 1.0에 대한 Jakarta 디버깅 지원
  • Jakarta Transactions 1.3
  • Jakarta Connectors 1.7
jaxrs-server

이 계층은 다음 JBoss EAP 하위 시스템을 사용하여 datasources-web-server 계층을 향상시킵니다.

  • jaxrs
  • weld
  • jpa

이 계층은 컨테이너에 로컬로 Infinispan 기반 두 번째 수준 엔터티 캐싱을 추가합니다.

다음 MicroProfile 기능이 이 계층에 포함되어 있습니다.

  • MicroProfile REST Client

다음 Jakarta EE 사양은 데이터 소스-web-server 계층에서 지원되는 것 외에도 이 계층에서 지원됩니다.

  • 자카르타 컨텍스트 및 종속성 2.0
  • Jakarta Bean Validation 2.0
  • Jakarta Interceptors 1.2
  • Jakarta RESTful Web Services 2.1
  • Jakarta Persistence 2.2
cloud-server

이 계층은 다음 JBoss EAP 하위 시스템을 사용하여 jaxrs-server 계층을 향상시킵니다.

  • resource-adapters
  • messaging-activemq (원격 브로커 메시징, 임베디드 메시징이 아님)

이 계층은 또한 jaxrs-server 계층에 다음과 같은 관찰 기능도 추가합니다.

  • MicroProfile Health
  • MicroProfile Config

다음 Jakarta EE 사양은 jaxrs-server 계층에서 지원되는 것 외에도 이 계층에서 지원됩니다.

  • Jakarta Security 1.0
cloud-default-mp-config

이 계층은 standalone-microprofile-ha.xml 파일을 기반으로 독립 실행형 구성으로 서버를 프로비저닝합니다. cloud-default-mp-layerorg.jboss.eap.xp:eap-xp-cloud-galleon-pack 에서 제공하며 JBoss EAP XP S2I 빌드에서 지원되지만 부팅 가능한 JAR에는 지원되지 않습니다. JBoss EAP XP에 포함된 서버 구성 파일에 대한 자세한 내용은 독립 실행형 서버 구성 파일 섹션을 참조하십시오.

이 워크플로는 마이크로profile-config 빠른 시작 예제를 사용합니다. 빠른 시작은 자체 프로젝트에 대한 참조로 사용할 수 있는 작고 구체적인 작업 예제를 제공합니다. 자세한 내용은 JBoss EAP XP 5.0.0과 함께 제공되는 microprofile-config 빠른 시작을 참조하십시오.

ee-core-profile-server

ee-core-profile-server 계층은 Jakarta EE 10 Core Profile을 사용하여 서버를 프로비저닝합니다. Core Profile은 핵심 JBoss EAP 서버 기능과 자카르타 EE API를 모두 제공하는 사용자에게 경량화된 소규모 프로필을 제공합니다. ee-core-profile-server 계층은 클라우드 네이티브 애플리케이션 및 마이크로 서비스와 같은 소규모 런타임에 가장 적합합니다.

9.1.2. 데코레이터 계층

데코레이터 계층은 단독으로 사용되지 않습니다. 추가 기능을 제공하기 위해 기본 계층으로 하나 이상의 데코레이터 계층을 구성할 수 있습니다.

binaryd-lite

이 데코레이터 계층은 최소 Jakarta Enterprise Cryostat 구현을 프로비저닝된 서버에 추가합니다. 다음 지원은 이 계층에 포함되지 않습니다.

  • IIOP 통합
  • Cryostat 인스턴스 풀
  • 원격 커넥터 리소스

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

Jakarta Enterprise Cryostats

이 데코레이터 계층은 Cryostat -lite 계층을 확장합니다. 이 계층은 Cryostat -lite 계층에 포함된 기본 기능 외에도 프로비저닝된 서버에 다음과 같은 지원을 추가합니다.

  • Cryostat 인스턴스 풀
  • 원격 커넥터 리소스

message-driven beans (MDB) 또는 Jakarta Enterprise Cryostats remoting 기능을 사용하려면 이 계층을 사용합니다. 이러한 기능이 필요하지 않은 경우 Cryostat -lite 계층 을 사용합니다.

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

ejb-local-cache

이 데코레이터 계층은 Jakarta Enterprise Cryostats에 대한 로컬 캐싱 지원을 프로비저닝된 서버에 추가합니다.

종속 항목: Cryostat -lite 계층 또는 Cryostat 계층을 포함하는 경우에만 이 계층을 포함할 수 있습니다.

참고

이 계층은 Cryostat -dist-cache 계층과 호환되지 않습니다. Cryostat -dist-cache 계층을 포함하는 경우 Cryostat -local-cache 계층을 포함할 수 없습니다. 두 계층이 모두 포함된 경우 결과 빌드에 예기치 않은 Jakarta Enterprise Cryostats 구성이 포함될 수 있습니다.

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

ejb-dist-cache

이 데코레이터 계층은 Jakarta Enterprise Cryostats에 대한 분산 캐싱 지원을 프로비저닝된 서버에 추가합니다.

종속 항목: Cryostat -lite 계층 또는 Cryostat 계층을 포함하는 경우에만 이 계층을 포함할 수 있습니다.

참고

이 계층은 Cryostat -local-cache 계층과 호환되지 않습니다. Cryostat -dist-cache 계층을 포함하는 경우 Cryostat -local-cache 계층을 포함할 수 없습니다. 두 계층을 모두 포함하는 경우 결과 빌드로 인해 예기치 않은 구성이 발생할 수 있습니다.

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

jdr

이 데코레이터 계층은 JBoss 진단 보고(jdr) 하위 시스템을 추가하여 Red Hat의 지원을 요청할 때 진단 데이터를 수집합니다.

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

자카르타 지속성

이 데코레이터 계층은 단일 노드 서버에 대한 지속성 기능을 추가합니다. 분산 캐싱은 서버가 클러스터를 구성할 수 있는 경우에만 작동합니다.

계층은 다음과 같은 지원을 통해 프로비저닝된 서버에 Hibernate 라이브러리를 추가합니다.

  • jpa 하위 시스템의 구성
  • infinispan 하위 시스템의 구성
  • 로컬 Hibernate 캐시 컨테이너
참고

이 계층은 jpa-distributed 계층과 호환되지 않습니다. jpa 계층을 포함하는 경우 jpa-distributed 계층을 포함할 수 없습니다.

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

JPA-distributed

이 데코레이터 계층은 클러스터에서 작동하는 서버에 대한 지속성 기능을 추가합니다. 계층은 다음과 같은 지원을 통해 프로비저닝된 서버에 Hibernate 라이브러리를 추가합니다.

  • jpa 하위 시스템의 구성
  • infinispan 하위 시스템의 구성
  • 로컬 Hibernate 캐시 컨테이너
  • Invalidation 및 replication Hibernate 캐시 컨테이너
  • jgroups 하위 시스템 구성
참고

이 계층은 jpa 계층과 호환되지 않습니다. jpa 계층을 포함하는 경우 jpa-distributed 계층을 포함할 수 없습니다.

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

Jakarta Server seems

이 데코레이터 계층은 프로비저닝된 서버에 jsf 하위 시스템을 추가합니다.

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

microprofile-platform

이 데코레이터 계층은 프로비저닝된 서버에 다음과 같은 MicroProfile 기능을 추가합니다.

  • MicroProfile Config
  • MicroProfile Fault Tolerance
  • MicroProfile Health
  • MicroProfile JWT
  • MicroProfile OpenAPI
참고

이 계층에는 관찰 계층에도 포함된 MicroProfile 기능이 포함되어 있습니다. 이 계층을 포함하는 경우 관찰 기능 계층을 포함할 필요가 없습니다.

observability

이 데코레이터 계층은 프로비저닝된 서버에 다음과 같은 관찰 기능을 추가합니다.

  • MicroProfile Health
  • MicroProfile Config
참고

이 계층은 cloud-server 계층에 빌드됩니다. 이 계층을 cloud-server 계층에 추가할 필요가 없습니다.

remote-activemq

이 데코레이터 계층은 원격 ActiveMQ 브로커와 프로비저닝된 서버에 통신하여 메시징 지원을 통합하는 기능을 추가합니다.

풀링된 연결 팩토리 구성은 guest사용자암호 속성 값으로 지정합니다. CLI 스크립트를 사용하여 런타임 시 이러한 값을 변경할 수 있습니다.

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

sso

이 데코레이터 계층은 Red Hat Single Sign-On 통합을 프로비저닝된 서버에 추가합니다.

이 계층은 S2I를 사용하여 서버를 프로비저닝할 때만 사용해야 합니다.

web-console

이 데코레이터 계층은 프로비저닝된 서버에 관리 콘솔을 추가합니다.

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

web-clustering

이 데코레이터 계층은 클러스터링 환경에 적합한 데이터 세션 처리를 위해 로컬이 아닌 Infinispan 컨테이너 웹 캐시를 구성하여 배포 가능한 웹 애플리케이션에 대한 지원을 추가합니다.

웹-비활성화

이 데코레이터 계층은 단일 노드 환경에 적합한 데이터 세션 처리를 위해 로컬 Infinispan 기반 컨테이너 웹 캐시를 구성하여 배포 가능한 웹 애플리케이션에 대한 지원을 추가합니다.

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

WebServices

이 계층은 Jakarta 웹 서비스 배포를 지원하는 프로비저닝된 서버에 웹 서비스 기능을 추가합니다.

이 계층은 부팅 가능한 JAR을 빌드할 때만 지원됩니다. 이 계층은 S2I를 사용할 때 지원되지 않습니다.

JBoss Tools를 사용하여 개발한 애플리케이션에 MicroProfile 기능을 통합하려면 JBoss Tools에서 JBoss EAP에 대한 MicroProfile 지원을 활성화해야 합니다.

JBoss EAP 확장 팩은 MicroProfile에 대한 지원을 제공합니다.

JBoss EAP 확장 팩은 JBoss EAP 7.2 및 이전 버전에서 지원되지 않습니다.

JBoss EAP 확장 팩의 각 버전은 특정 JBoss EAP 패치를 지원합니다. 자세한 내용은 JBoss EAP 확장 팩 지원 및 라이프 사이클 정책 페이지를 참조하십시오.

중요

Openshift의 JBoss EAP XP 빠른 시작은 기술 프리뷰로만 제공됩니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원하지 않으며, 기능상 완전하지 않을 수 있어 프로덕션에 사용하지 않는 것이 좋습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

기술 프리뷰 기능에 대한 지원 범위에 대한 정보는 Red Hat 고객 포털에서 기술 프리뷰 기능 지원 범위를 참조하십시오.

10.1. MicroProfile 기능을 사용하도록 JBoss 툴 구성

JBoss EAP에서 MicroProfile 지원을 활성화하려면 JBoss EAP XP의 새 런타임 서버를 등록한 다음 새 JBoss EAP 8.0 서버를 생성합니다.

서버에 MicroProfile 기능을 지원하는 것을 인식하는 데 도움이 되는 적절한 이름을 지정합니다.

이 서버는 이전에 설치한 런타임을 가리키며 standalone-microprofile.xml 구성 파일을 사용하는 새로 생성된 JBoss EAP XP 런타임을 사용합니다.

참고

대상 런타임8.0 또는 JBoss Tools에서 최신 런타임 버전으로 설정하는 경우 프로젝트는 자카르타 EE 8 사양과 호환됩니다.

프로세스

  1. 새 서버 대화 상자에서 새 서버를 설정합니다.

    1. Select server type 목록에서 Red Hat JBoss Enterprise Application Platform 8.0 을 선택합니다.
    2. 서버의 호스트 이름 필드에 localhost 를 입력합니다.
    3. 서버 이름 필드에 JBoss EAP 8.0 XP 를 입력합니다.
    4. 다음을 클릭합니다.
  2. 새 서버를 구성합니다.

    1. 홈 디렉터리 필드에서 기본 설정을 사용하지 않으려면 새 디렉터리를 지정합니다(예: home/myname/dev/microprofile/runtimes/jboss-eap-7.4 ).
    2. 실행 환경이 JavaSE-1.8 로 설정되어 있는지 확인합니다.
    3. 선택 사항: 서버 기본 디렉터리구성 파일 필드의 값을 변경합니다.
    4. 완료를 클릭합니다.

결과

이제 MicroProfile 기능을 사용하여 애플리케이션 개발을 시작하거나 JBoss EAP에 MicroProfile 빠른 시작 기능을 사용할 수 있습니다.

10.2. JBoss Tools에 MicroProfile 빠른 시작 사용

MicroProfile 빠른 시작을 활성화하면 설치된 서버에서 간단한 예제를 실행하고 테스트할 수 있습니다.

이 예제에서는 다음과 같은 MicroProfile 기능을 보여줍니다.

  • MicroProfile Config
  • MicroProfile Fault Tolerance
  • MicroProfile Health
  • MicroProfile JWT
  • MicroProfile OpenAPI
  • MicroProfile REST Client

프로세스

  1. 빠른 시작 부모 Artifact에서 pom.xml 파일을 가져옵니다.
  2. 환경 변수가 필요한 퀵 스타트를 사용하는 경우 서버 개요 대화 상자에서 해당 변수를 시작 구성에 구성합니다.

    예를 들어 opentelemetry-tracing 빠른 시작에서는 다음 환경 변수를 사용합니다.

    • OTEL_COLLECTOR_HOST

추가 리소스

Microprofile 정보

JBoss Enterprise Application Platform 확장 팩 정보

Red Hat JBoss Enterprise Application Platform 확장 팩 지원 및 라이프 사이클 정책

11장. 부팅 가능한 JAR

JBoss EAP JAR Maven 플러그인을 사용하여 마이크로서비스 애플리케이션을 부팅 가능한 JAR로 빌드하고 패키징할 수 있습니다. 그런 다음 JBoss EAP 베어 메탈 플랫폼 또는 JBoss EAP OpenShift 플랫폼에서 애플리케이션을 실행할 수 있습니다.

11.1. 부팅 가능한 JAR 정보

JBoss EAP JAR Maven 플러그인을 사용하여 마이크로서비스 애플리케이션을 부팅 가능한 JAR로 빌드하고 패키징할 수 있습니다.

부팅 가능한 JAR에는 서버, 패키지 애플리케이션, 서버를 시작하는 데 필요한 런타임이 포함되어 있습니다.

JBoss EAP JAR Maven 플러그인은 Galleon 트리밍 기능을 사용하여 서버의 크기와 메모리 공간을 줄입니다. 따라서 필요한 기능을 제공하는 Galleon 계층만 포함하여 요구 사항에 따라 서버를 구성할 수 있습니다.

JBoss EAP JAR Maven 플러그인은 JBoss EAP CLI 스크립트 파일의 실행을 지원하여 서버 구성을 사용자 지정할 수 있습니다. CLI 스크립트에는 서버 구성을 위한 CLI 명령 목록이 포함되어 있습니다.

부팅 가능한 JAR은 다음과 같은 방식으로 표준 JBoss EAP 서버와 같습니다.

  • JBoss EAP 공통 관리 CLI 명령을 지원합니다.
  • JBoss EAP 관리 콘솔을 사용하여 관리할 수 있습니다.

부팅 가능한 JAR에 서버를 패키징할 때 다음과 같은 제한 사항이 있습니다.

  • 서버를 다시 시작해야 하는 CLI 관리 작업은 지원되지 않습니다.
  • 서버는 서버 관리와 관련된 서비스를 시작하는 모드인 관리자 전용 모드로 다시 시작할 수 없습니다.
  • 서버를 종료하면 서버에 적용한 업데이트가 손실됩니다.

또한 빈 부팅 가능한 JAR을 프로비저닝할 수 있습니다. 이 JAR에는 서버만 포함되어 있으므로 서버를 재사용하여 다른 애플리케이션을 실행할 수 있습니다.

11.2. JBoss EAP JAR Maven 플러그인

JBoss EAP JAR Maven 플러그인을 사용하여 애플리케이션을 부팅 가능한 JAR로 빌드할 수 있습니다.

9.minor.micro.Final-redhat-XXXXX 와 같은 최신 Maven 플러그인이 있는지 확인합니다. 여기서 9 는 주요 버전이며 마이너 버전은 마이크로 마이크로 버전이며 X 는 Red Hat 빌드 번호입니다. 예: 9.0.1.Final-redhat-00009.

Maven 프로젝트에서 src 디렉터리에는 애플리케이션을 빌드하는 데 필요한 모든 소스 파일이 포함되어 있습니다. JBoss EAP JAR Maven 플러그인이 부팅 가능한 JAR을 빌드한 후 생성된 JAR은 target/<application>-bootable.jar 에 있습니다.

JBoss EAP JAR Maven 플러그인에서는 다음과 같은 기능도 제공합니다.

  • JBoss EAP 채널을 사용하여 JBoss EAP XP 서버를 프로비저닝할 수 있습니다.
  • CLI 스크립트 명령을 서버에 적용합니다.
  • org.jboss.eap.xp:wildfly-galleon-pack Galleon 기능 팩을 사용하여 서버 구성 파일을 사용자 정의할 수 있습니다.
  • 키 저장소 파일과 같은 패키지 부팅 가능한 JAR에 추가 파일을 추가할 수 있습니다.
  • 애플리케이션에 포함되지 않은 부팅 가능한 JAR, 즉 부팅 가능한 JAR을 생성하는 기능이 포함되어 있습니다.

JBoss EAP JAR Maven 플러그인을 사용하여 부팅 가능한 JAR을 생성한 후 다음 명령을 실행하여 애플리케이션을 시작할 수 있습니다. target/myapp-bootable.jar 를 부팅 가능한 JAR 경로로 교체합니다. 예를 들면 다음과 같습니다.

$ java -jar target/myapp-bootable.jar
Copy to Clipboard Toggle word wrap
참고

지원되는 부팅 가능한 JAR 시작 명령 목록을 가져오려면 startup 명령 끝에 --help 를 추가합니다. 예를 들어 java -jar target/myapp-bootable.jar --help.

11.3. 부팅 가능한 JAR 인수

부팅 가능한 JAR과 함께 사용할 수 있도록 지원되는 인수에 대해 알아보려면 다음 표의 인수를 확인합니다.

Expand
표 11.1. 지원되는 부팅 가능한 JAR 실행 인수
인수설명

--help

지정된 명령에 대한 도움말 메시지를 표시하고 종료합니다.

--cli-script=<path>

부팅 가능한 JAR을 시작할 때 실행되는 JBoss CLI 스크립트의 경로를 지정합니다. 지정된 경로가 상대적인 경우 부팅 가능한 JAR을 시작하는 데 사용되는 Java VM 인스턴스의 작업 디렉터리에 대해 경로가 확인됩니다.

--deployment=<path>

hollow 부팅 가능한 JAR과 관련된 인수입니다. 서버에 배포하려는 애플리케이션이 포함된 WAR, JAR, EAR 파일 또는 무관한 디렉터리의 경로를 지정합니다.

--display-galleon-config

생성된 Galleon 구성 파일의 내용을 출력합니다.

--install-dir=<path>

기본적으로 JVM 설정은 부팅 가능한 JAR이 시작된 후 TEMP 디렉터리를 생성하는 데 사용됩니다. --install-dir 인수를 사용하여 서버를 설치할 디렉터리를 지정할 수 있습니다.

-secmgr

보안 관리자가 설치된 서버를 실행합니다.

-b<interface>=<value>

시스템 속성 jboss.bind.address.<interface&gt;를 지정된 값으로 설정합니다. 예를 들어 bmanagement=IP_ADDRESS.

-b=<value>

공용 인터페이스의 바인딩 주소를 구성하는 데 사용되는 시스템 속성 jboss.bind.address 를 설정합니다. 값이 지정되지 않은 경우 기본값은 127.0.0.1입니다.

-D<name>[=<value>]

서버 런타임 시 서버에서 설정하는 시스템 속성을 지정합니다. 부팅 가능한 JAR JVM은 이러한 시스템 속성을 설정하지 않습니다.

--properties=<url>

지정된 URL에서 시스템 속성을 로드합니다.

-S<name>[=value]

보안 속성을 설정합니다.

-u=<value>

구성 파일의 socket-binding 요소에서 멀티 캐스트 주소를 구성하는 데 사용되는 시스템 속성 jboss.default.multicast.address 를 설정합니다. 값이 지정되지 않은 경우 기본값은 230.0.0.4입니다.

--version

애플리케이션 서버 버전을 표시하고 종료합니다.

11.4. 부팅 가능한 JAR 서버의 Galleon 계층 지정

Galleon 레이어를 지정하여 서버의 사용자 지정 구성을 빌드할 수 있습니다. 또한 서버에서 제외하려는 Galleon 레이어를 지정할 수 있습니다.

JBoss EAP XP 5.0부터 서버 아티팩트를 검색하려면 JBoss EAP 8.0 및 JBoss EAP XP 5.0 채널을 사용하여 JBoss EAP JAR Maven 플러그인을 구성해야 합니다. JBoss EAP 채널에 대한 자세한 내용은 JBoss EAP 설치 채널 관리를 참조하십시오.

최신 JBoss EAP XP 5.0 서버를 프로비저닝하기 위해 JBoss EAP 및 JBoss EAP XP 채널을 지정하려면 다음 예제를 따르십시오.

참고

&lt ;feature-pack-location&gt; 요소를 사용하여 기능 팩 위치를 지정합니다. Maven 플러그인 구성 파일에서 다음 예제에서는 < feature-pack-location> 요소 내의 org.jboss.eap.xp:wildfly-galleon-pack 을 지정합니다.

<configuration>
	<channels>
		<channel>
			<manifest>
				<groupId>org.jboss.eap.channels</groupId>
				<artifactId>eap-8.0</artifactId>
			</manifest>
		</channel>
		<channel>
			<manifest>
				<groupId>org.jboss.eap.channels</groupId>
				<artifactId>eap-xp-5.0</artifactId>
			</manifest>
		</channel>
	</channels>
	<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
</configuration>
Copy to Clipboard Toggle word wrap

둘 이상의 기능 팩을 참조해야 하는 경우 < feature-packs> 요소에 나열합니다. 다음 예제에서는 JBoss EAP 데이터 소스 기능 팩을 < feature-packs&gt; 요소에 추가하는 방법을 보여줍니다.

<configuration>
	<feature-packs>
		<feature-pack>
			<location>org.jboss.eap.xp:wildfly-galleon-pack</location>
		</feature-pack>
		<feature-pack>
			<location>org.jboss.eap:eap-datasources-galleon-pack</location>
		</feature-pack>
	</feature-packs>
</configuration>
Copy to Clipboard Toggle word wrap

여러 기능 팩에서 Galleon 레이어를 결합하여 필요한 기능을 제공하는 지원되는 Galleon 계층만 포함하도록 부팅 가능한 JAR 서버를 구성할 수 있습니다.

참고

베어 메탈 플랫폼에서 구성 파일에 Galleon 계층을 지정하지 않으면 프로비저닝된 서버에 기본 standalone-microprofile.xml 구성과 동일한 구성이 포함됩니다.

OpenShift 플랫폼에서 플러그인 구성에 < cloud/ > 구성 요소를 추가하고 구성 파일에서 Galleon 계층을 지정하지 않도록 선택한 후 프로비저닝된 서버에는 클라우드 환경에 맞게 조정되고 기본 standalone-microprofile-ha.xml 과 유사한 구성이 포함되어 있습니다.

사전 요구 사항

  • Maven이 설치되어 있어야 합니다.
  • 9.minor.micro.Final-redhat-XXXXX 와 같은 최신 Maven 플러그인 버전을 확인했습니다. 여기서 9 는 주요 버전이며 마이너 버전은 마이크로 마이크로 버전이며 X 는 Red Hat 빌드 번호입니다. 예: 9.0.1.Final-redhat-00009.
참고

절차에 표시된 예제에서는 다음 속성을 지정합니다.

  • ${bootable.jar.maven.plugin.version} 은(는) Maven 플러그인 버전에 해당합니다.

프로젝트에 이러한 속성을 설정해야 합니다. 예를 들면 다음과 같습니다.

<properties>
    <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
Copy to Clipboard Toggle word wrap

프로세스

  1. 애플리케이션을 실행하는 데 필요한 기능을 제공하는 지원되는 JBoss EAP Galleon 계층을 식별합니다.
  2. Maven 프로젝트 pom.xml 파일의 &lt ;plugin& gt; 요소에서 JBoss EAP 기능 팩 위치를 참조합니다. 다음 예제에서는 jaxrs-server 기본 계층과 jpa-distributed 계층을 포함하는 단일 기능 팩의 포함을 표시합니다. jaxrs-server 기본 계층은 서버에 대한 추가 지원을 제공합니다.

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
    			<layers>
    				<layer>jaxrs-server</layer>
    				<layer>jpa-distributed</layer>
    			</layers>
    			<excluded-layers>
    				<layer>jpa</layer>
    			</excluded-layers>
                     ...
    		</configuration>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap

    이 예제에서는 프로젝트에서 jpa 계층을 제외하는 방법도 보여줍니다.

    참고

    jpa-distributed 계층을 프로젝트에 포함하는 경우 jpa 계층을 jaxrs-server 계층에서 제외해야 합니다. jpa 계층은 로컬 infinispan hibernate 캐시를 구성하고, jpa-distributed 계층은 원격 infinispan hibernate 캐시를 구성합니다.

11.5. JBoss EAP 베어 메탈 플랫폼에서 부팅 가능한 JAR 사용

JBoss EAP 베어 메탈 플랫폼에서 애플리케이션을 부팅 가능한 JAR로 패키징할 수 있습니다.

부팅 가능한 JAR에는 서버, 패키지 애플리케이션, 서버를 시작하는 데 필요한 런타임이 포함되어 있습니다.

이 절차에서는 JBoss EAP JAR Maven 플러그인을 사용하여 MicroProfile Config 마이크로 서비스 애플리케이션을 부팅 가능한 JAR로 패키징하는 방법을 보여줍니다. MicroProfile Config 빠른 시작을 참조하십시오.

CLI 스크립트를 사용하여 부팅 가능한 JAR을 패키징하는 동안 서버를 구성할 수 있습니다.

중요

부팅 가능한 JAR 내에 패키징해야 하는 웹 애플리케이션을 빌드하는 경우 pom.xml 파일의 < packaging > 요소에 war 를 지정해야 합니다. 예를 들면 다음과 같습니다.

<packaging>war</packaging>
Copy to Clipboard Toggle word wrap

이 값은 빌드 애플리케이션을 기본 JAR 파일이 아닌 WAR 파일로 패키징하는 데 필요합니다.

빈 부팅 가능한 JAR을 빌드하는 데에만 사용되는 Maven 프로젝트에서는 패키징 값을 pom 로 설정합니다. 예를 들면 다음과 같습니다.

<packaging>pom</packaging>
Copy to Clipboard Toggle word wrap

Maven 프로젝트에 대해 빈 부팅 가능한 JAR을 빌드할 때 pom 패키지 사용이 제한되지 않습니다. war 와 같은 모든 유형의 패키지에 대해 < hollow-jar > 요소에 true 를 지정하여 생성할 수 있습니다. JBoss EAP 베어 메탈 플랫폼에서 빈 부팅 가능한 JAR 생성 을 참조하십시오.

사전 요구 사항

  • 9.minor.micro.Final-redhat-XXXXX 와 같은 최신 Maven 플러그인 버전을 확인했습니다. 여기서 9 는 주요 버전이며 마이너 버전은 마이크로 마이크로 버전이며 X 는 Red Hat 빌드 번호입니다. 예: 9.0.1.Final-redhat-00009.
  • Maven 프로젝트를 생성하고 MicroProfile 애플리케이션을 생성하기 위한 종속 항목을 추가했습니다. MicroProfile Config Development 를 참조하십시오.
참고

절차에 표시된 예제에서는 다음 속성을 지정합니다.

  • ${bootable.jar.maven.plugin.version} 은(는) Maven 플러그인 버전에 해당합니다.

프로젝트에 이러한 속성을 설정해야 합니다. 예를 들면 다음과 같습니다.

<properties>
    <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
Copy to Clipboard Toggle word wrap

프로세스

  1. pom.xml 파일의 & lt;build > 요소에 다음 내용을 추가합니다. 예를 들면 다음과 같습니다.

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
    			<layers>
    				<layer>jaxrs-server</layer>
    				<layer>microprofile-platform</layer>
    			</layers>
    		</configuration>
    		<executions>
    			<execution>
    				<goals>
    					<goal>package</goal>
    				</goals>
    			</execution>
    		</executions>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap
    참고

    pom.xml 파일에 Galleon 계층을 지정하지 않으면 부팅 가능한 JAR 서버에 standalone-microprofile.xml 구성과 동일한 구성이 포함됩니다.

  2. 애플리케이션을 부팅 가능한 JAR로 패키징합니다.

    $ mvn package
    Copy to Clipboard Toggle word wrap
  3. 애플리케이션을 시작합니다.

    $ NAME="foo" java -jar target/microprofile-config-bootable.jar
    Copy to Clipboard Toggle word wrap
    참고

    이 예제에서는 NAME 을 환경 변수로 사용하지만 기본값인 jim 을 사용하도록 선택할 수 있습니다.

    참고

    지원되는 부팅 가능한 JAR 인수 목록을 보려면 java -jar target/microprofile-config-bootable.jar 명령 끝에 --help 를 추가합니다.

  4. 웹 브라우저에서 다음 URL을 지정하여 MicroProfile Config 애플리케이션에 액세스합니다.

    http://localhost:8080/config/json
    Copy to Clipboard Toggle word wrap
  5. 확인: 터미널에서 다음 명령을 실행하여 애플리케이션이 제대로 작동하는지 테스트합니다.

    curl http://localhost:8080/config/json
    Copy to Clipboard Toggle word wrap

    다음은 예상되는 출력입니다.

    {"result":"Hello foo"}
    Copy to Clipboard Toggle word wrap

11.6. JBoss EAP 베어 메탈 플랫폼에서 빈 부팅 가능한 JAR 생성

JBoss EAP 베어 메탈 플랫폼에서 hollow 부팅 가능한 JAR로 애플리케이션을 패키징할 수 있습니다.

빈 부팅 가능한 JAR에는 JBoss EAP 서버만 포함되어 있습니다. hollow 부팅 가능한 JAR은 JBoss EAP JAR Maven 플러그인에 의해 패키지됩니다. 애플리케이션은 서버 런타임에서 제공됩니다. hollow 부팅 가능한 JAR은 다른 애플리케이션에 대해 서버 구성을 다시 사용해야 하는 경우 유용합니다.

사전 요구 사항

  • MicroProfile Config 개발을 위한 Maven 프로젝트를 생성했습니다. 예를 들어 MicroProfile Config 빠른 시작을 참조하십시오.
  • JBoss EAP 베어 메탈 플랫폼에서 부팅 가능한 JAR 사용에 설명된 pom.xml 파일 구성 단계를 완료했습니다.
  • 9.minor.micro.Final-redhat-XXXXX 와 같은 최신 Maven 플러그인 버전을 확인했습니다. 여기서 9 는 주요 버전이며 마이너 버전은 마이크로 마이크로 버전이며 X 는 Red Hat 빌드 번호입니다. 예: 9.0.1.Final-redhat-00009.

프로세스

  1. hollow 부팅 가능한 JAR을 빌드하려면 pom.xml 파일에서 < hollow-jar > 플러그인 구성 요소를 true로 설정해야 합니다. 예를 들면 다음과 같습니다.
<plugins>
	<plugin>
            ...
		<configuration>
			<!-- This example configuration does not show a complete plug-in configuration -->
                 ...
			<groupId>org.wildfly.plugins</groupId>
			<artifactId>wildfly-jar-maven-plugin</artifactId>
			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
			<hollow-jar>true</hollow-jar>
		</configuration>
	</plugin>
</plugins>
Copy to Clipboard Toggle word wrap
참고

< hollow-jar > 요소에 true 를 지정하면 JBoss EAP JAR Maven 플러그인에 JAR에 애플리케이션이 포함되지 않습니다.

  1. 빈 부팅 가능한 JAR을 빌드합니다.

    $ mvn clean package
    Copy to Clipboard Toggle word wrap
  2. hollow 부팅 가능한 JAR을 실행합니다.

    $ java -jar target/microprofile-config-bootable.jar --deployment=target/microprofile-config.war
    Copy to Clipboard Toggle word wrap
    중요

    서버에 배포하려는 WAR 파일의 경로를 지정하려면 다음 인수를 사용합니다. 여기서 < PATH_NAME >은 배포 경로입니다.

    --deployment=<PATH_NAME>
    Copy to Clipboard Toggle word wrap
  3. 애플리케이션에 액세스합니다.

    $ curl http://localhost:8080/microprofile-config/config/json
    Copy to Clipboard Toggle word wrap
    참고

    루트 디렉터리에 웹 애플리케이션을 등록하려면 애플리케이션 이름을 ROOT.war 로 지정합니다.

11.7. 빌드 시 실행되는 CLI 스크립트

CLI 스크립트를 생성하여 부팅 가능한 JAR을 패키징하는 동안 서버를 구성할 수 있습니다.

CLI 스크립트는 추가 서버 구성을 적용하는 데 사용할 수 있는 일련의 CLI 명령이 포함된 텍스트 파일입니다. 예를 들어 스크립트를 생성하여 로깅 하위 시스템에 새 로거를 추가할 수 있습니다.

CLI 스크립트에서 더 복잡한 작업을 지정할 수도 있습니다. 예를 들어 보안 관리 작업을 단일 명령으로 그룹화하여 관리 HTTP 끝점에 대한 HTTP 인증을 활성화할 수 있습니다.

참고

애플리케이션을 부팅 가능한 JAR로 패키징하기 전에 플러그인 구성의 < cli-session > 요소에 CLI 스크립트를 정의해야 합니다. 이렇게 하면 부팅 가능한 JAR 패키징 후 서버 구성 설정이 유지됩니다.

사전 정의된 Galleon 계층을 결합하여 애플리케이션을 배포하는 서버를 구성할 수 있지만 제한 사항이 있습니다. 예를 들어 부팅 가능한 JAR을 패키징할 때 Galleon 계층을 사용하여 HTTPS undertow 리스너를 활성화할 수 없습니다. 대신 CLI 스크립트를 사용해야 합니다.

pom.xml 파일의 < cli-session&gt; 요소에 CLI 스크립트를 정의해야 합니다. 다음 표에서는 CLI 세션 속성 유형을 보여줍니다.

Expand
표 11.2. CLI 스크립트 속성
인수설명

script-files

스크립트 파일의 경로 목록입니다.

properties-file

속성 파일의 경로를 지정하는 선택적 속성입니다. 이 파일에는 ${my.prop} 구문을 사용하여 스크립트가 참조할 수 있는 Java 속성이 나열됩니다. 다음 예제에서는 public inet-addressall.addresses:/interface=public:write-attribute(name=inet-address,value=$all.addresses}) 값으로 설정합니다.

resolve-expressions

부울 값이 포함된 선택적 속성입니다. 작업 요청을 서버로 보내기 전에 시스템 속성 또는 표현식이 해결되는지 여부를 나타냅니다. 기본값은 true 입니다.

참고
  • CLI 스크립트는 pom.xml 파일의 < cli-session& gt; 요소에 정의된 순서대로 시작됩니다.
  • JBoss EAP JAR Maven 플러그인은 각 CLI 세션에 포함된 서버를 시작합니다. 따라서 CLI 스크립트는 포함된 서버를 시작하거나 중지할 필요가 없습니다.

11.8. 런타임에 CLI 스크립트 실행

런타임 중에 서버 구성에 변경 사항을 적용할 수 있습니다. 그러면 실행 컨텍스트와 관련하여 서버를 조정할 수 있는 유연성을 제공합니다. 그러나 서버에 변경 사항을 적용하는 데 선호되는 방법은 빌드 시간 동안입니다.

프로세스

  • 부팅 가능한 JAR 및 --cli-script 인수를 시작합니다.

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

    java -jar myapp-bootable.jar --cli-scipt=my-scli-scipt.cli
    Copy to Clipboard Toggle word wrap
참고
  • CLI 스크립트는 텍스트 파일(UTF-8)이어야 하며, .cli 확장자가 권장되지 않는 경우 파일 확장자가 의미가 없습니다.
  • 서버를 다시 시작해야 하는 작업은 부팅 가능한 JAR 인스턴스가 종료됩니다.
  • 연결,다시 로드,종료 와 포함된 서버와 관련된 모든 명령 등의 CLI 명령이 작동하지 않습니다.
  • 관리 모드에서 실행할 수 없는 jdbc-driver-info 와 같은 CLI 명령은 지원되지 않습니다.
중요

CLI 스크립트를 실행하지 않고 서버를 다시 시작하면 새 서버 인스턴스에 이전 서버 인스턴스의 변경 사항이 포함되지 않습니다.

11.9. JBoss EAP OpenShift 플랫폼에서 부팅 가능한 JAR 사용

11.9.1. oc 명령을 사용하여 바이너리 빌드 수행

애플리케이션을 부팅 가능한 JAR로 패키지한 후 JBoss EAP OpenShift 플랫폼에서 애플리케이션을 실행할 수 있습니다.

중요

OpenShift에서는 부팅 가능한 JAR과 함께 EAP Operator 자동 트랜잭션 복구 기능을 사용할 수 없습니다.

사전 요구 사항

  • MicroProfile Config 개발을 위한 Maven 프로젝트를 생성했습니다. 예를 들어 MicroProfile Config 빠른 시작을 참조하십시오.
  • 9.minor.micro.Final-redhat-XXXXX 와 같은 최신 Maven 플러그인 버전을 확인했습니다. 여기서 9 는 주요 버전이며 마이너 버전은 마이크로 마이크로 버전이며 X 는 Red Hat 빌드 번호입니다. 예: 9.0.1.Final-redhat-00009.
참고

절차에 표시된 예제에서는 다음 속성을 지정합니다.

  • ${bootable.jar.maven.plugin.version} 은(는) Maven 플러그인 버전에 해당합니다.

프로젝트에 이러한 속성을 설정해야 합니다. 예를 들면 다음과 같습니다.

<properties>
    <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
</properties>
Copy to Clipboard Toggle word wrap

프로세스

  1. pom.xml 파일의 & lt;build > 요소에 다음 내용을 추가합니다. 예를 들면 다음과 같습니다.

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
    			<layers>
    				<layer>jaxrs-server</layer>
    				<layer>microprofile-platform</layer>
    			</layers>
    			<cloud/>
    		</configuration>
    		<executions>
    			<execution>
    				<goals>
    					<goal>package</goal>
    				</goals>
    			</execution>
    		</executions>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap
    참고

    JBoss EAP Maven JAR 플러그인에서 OpenShift 플랫폼을 선택하는지 확인할 수 있도록 플러그인 구성 의 <configuration> 요소에 < cloud/ > 요소를 포함해야 합니다.

  2. 애플리케이션을 패키징합니다.

    $ mvn package
    Copy to Clipboard Toggle word wrap
  3. oc login 명령을 사용하여 OpenShift 인스턴스에 로그인합니다.
  4. OpenShift에서 새 프로젝트를 생성합니다. 예를 들면 다음과 같습니다.

    $ oc new-project bootable-jar-project
    Copy to Clipboard Toggle word wrap
  5. 다음 oc 명령을 입력하여 애플리케이션 이미지를 생성합니다.

    $ mkdir target/openshift && cp target/microprofile-config-bootable.jar target/openshift  
    1
    
    
    $ oc import-image ubi8/openjdk-17 --from=registry.redhat.io/ubi8/openjdk-17 --confirm 
    2
    
    
    $ oc new-build --strategy source --binary --image-stream openjdk-17 --name microprofile-config-app 
    3
    
    
    $ oc start-build microprofile-config-app --from-dir target/openshift 
    4
    Copy to Clipboard Toggle word wrap
    1
    대상 디렉터리에 openshift 하위 디렉터리를 생성합니다. 패키지 애플리케이션은 생성된 하위 디렉터리로 복사됩니다.
    2
    최신 OpenJDK 17 이미지 스트림 태그 및 이미지 정보를 OpenShift 프로젝트로 가져옵니다.
    3
    microprofile-config-app 디렉터리 및 OpenJDK 17 이미지 스트림을 기반으로 빌드 구성을 생성합니다.
    4
    target/openshift 하위 디렉터리를 바이너리 입력으로 사용하여 애플리케이션을 빌드합니다.
    참고

    OpenShift는 부팅 가능한 JAR 구성 파일에 CLI 스크립트 명령 세트를 적용하여 클라우드 환경에 조정합니다. Maven 프로젝트 / target 디렉터리에서 bootable-jar-build-artifacts/generated-cli-script.txt 파일을 열어 이 스크립트에 액세스할 수 있습니다.

  6. 확인:

    사용 가능한 OpenShift 포드 목록을 보고 다음 명령을 실행하여 포드 빌드 상태를 확인합니다.

    $ oc get pods
    Copy to Clipboard Toggle word wrap

    빌드된 애플리케이션 이미지를 확인합니다.

    $ oc get is microprofile-config-app
    Copy to Clipboard Toggle word wrap

    출력에는 이름 및 이미지 리포지토리, 태그 등과 같은 빌드된 애플리케이션 이미지 세부 정보가 표시됩니다. 이 절차의 예에서는 이미지 스트림 이름과 태그 출력에 microprofile-config-app:latest 가 표시됩니다.

  7. 애플리케이션을 배포합니다.

    $ oc new-app microprofile-config-app
    
    $ oc expose svc/microprofile-config-app
    Copy to Clipboard Toggle word wrap
    중요

    부팅 가능한 JAR에 시스템 속성을 제공하려면 JAVA_OPTS_APPEND 환경 변수를 사용해야 합니다. 다음 예제에서는 JAVA_OPTS_APPEND 환경 변수를 사용하는 방법을 보여줍니다.

    $ oc new-app <_IMAGESTREAM_> -e JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time -Dwildfly.statistics-enabled=true"
    Copy to Clipboard Toggle word wrap

    새 애플리케이션이 생성되고 시작됩니다. 애플리케이션 구성이 새 서비스로 노출됩니다.

  8. verification: 터미널에서 다음 명령을 실행하여 애플리케이션이 제대로 작동하는지 테스트합니다.

    $ curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/json
    Copy to Clipboard Toggle word wrap

    예상 출력:

    {"result":"Hello jim"}
    Copy to Clipboard Toggle word wrap

11.10. OpenShift의 부팅 가능한 JAR 구성

부팅 가능한 JAR을 사용하기 전에 독립 실행형 서버가 OpenShift용 JBoss EAP에서 올바르게 작동하는지 확인하기 위해 JVM 설정을 구성할 수 있습니다.

JAVA_OPTS_APPEND 환경 변수를 사용하여 JVM 설정을 구성합니다. JAVA_ARGS 명령을 사용하여 부팅 가능한 JAR에 인수를 제공합니다.

환경 변수를 사용하여 속성 값을 설정할 수 있습니다. 예를 들어 JAVA_OPTS_APPEND 환경 변수를 사용하여 -Dwildfly.statistics-enabled 속성을 true 로 설정할 수 있습니다.

JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time -Dwildfly.statistics-enabled=true"
Copy to Clipboard Toggle word wrap

이제 서버에 대한 통계가 활성화되어 있습니다.

참고

부팅 가능한 JAR에 인수를 제공해야 하는 경우 JAVA_ARGS 환경 변수를 사용합니다.

OpenShift용 JBoss EAP는 JDK 17 이미지를 제공합니다. 부팅 가능한 JAR과 관련된 애플리케이션을 실행하려면 먼저 최신 OpenJDK 17 이미지 스트림 태그 및 이미지 정보를 OpenShift 프로젝트로 가져와야 합니다. 그런 다음 환경 변수를 사용하여 가져온 이미지에서 JVM을 구성할 수 있습니다.

OpenShift S2I 이미지에 사용된 JVM을 구성하는 데 동일한 구성 옵션을 적용할 수 있지만 다음과 같은 차이점이 있습니다.

  • 선택 사항: -Xlog 기능을 사용할 수 없지만 -Xlog:gc 를 활성화하여 가비지 컬렉션 로깅을 설정할 수 있습니다. 예: JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time".
  • 초기 메타 공간 크기를 늘리려면 GC_MET CryostatACE_SIZE 환경 변수를 설정할 수 있습니다. 최상의 메타데이터 용량 성능을 위해서는 값을 96 으로 설정합니다.
  • 임의의 파일 생성을 개선하기 위해 JAVA_OPTS_APPEND 환경 변수를 사용하여 java.security.egd 속성을 -Djava.security.egd=file:/dev/urandom 로 설정합니다.

이러한 구성은 가져온 OpenJDK 17 이미지에서 실행할 때 JVM의 메모리 설정 및 가비지 수집 기능을 향상시킵니다.

11.11. OpenShift의 애플리케이션에서 ConfigMap 사용

OpenShift의 경우 배포 컨트롤러(dc)를 사용하여 애플리케이션을 실행하는 데 사용되는 포드에 configmap을 마운트할 수 있습니다.

ConfigMap 은 기밀이 아닌 데이터를 키-값 쌍으로 저장하는 데 사용되는 OpenShift 리소스입니다.

microprofile-platform Galleon 계층을 지정하여 microprofile-config-windowsrye 하위 시스템 및 서버 구성 파일에 확장을 추가한 후 CLI 스크립트를 사용하여 서버 구성에 새 ConfigSource 를 추가할 수 있습니다. CLI 스크립트를 Maven 프로젝트의 루트 디렉터리에 /scripts 디렉터리와 같은 액세스 가능한 디렉터리에 저장할 수 있습니다.

MicroProfile Config 기능은 SmallRye Config 구성 요소를 사용하여 JBoss EAP에서 구현되며 microprofile-config-undercloudrye 하위 시스템에서 제공합니다. 이 하위 시스템은 microprofile-platform Galleon 계층에 포함되어 있습니다.

사전 요구 사항

  • Maven이 설치되어 있어야 합니다.
  • JBoss EAP Maven 리포지토리를 구성했습니다.
  • 애플리케이션을 부팅 가능한 JAR로 패키징했으며 JBoss EAP OpenShift 플랫폼에서 애플리케이션을 실행할 수 있습니다. OpenShift 플랫폼에서 부팅 가능한 JAR로 애플리케이션을 빌드하는 방법에 대한 자세한 내용은 JBoss EAP OpenShift 플랫폼에서 부팅 가능한 JAR 사용을 참조하십시오.

프로세스

  1. 프로젝트의 루트 디렉터리에 scripts 라는 디렉터리를 생성합니다. 예를 들면 다음과 같습니다.

    $ mkdir scripts
    Copy to Clipboard Toggle word wrap
  2. cli.properties 파일을 생성하고 파일을 /scripts 디렉터리에 저장합니다. 이 파일에서 config.pathconfig.ordinal 시스템 속성을 정의합니다. 예를 들면 다음과 같습니다.

    config.path=/etc/config
    config.ordinal=200
    Copy to Clipboard Toggle word wrap
  3. mp-config.cli 와 같은 CLI 스크립트를 생성하고 /scripts 디렉터리와 같은 부팅 가능한 JAR의 액세스 가능한 디렉터리에 저장합니다. 다음 예제에서는 mp-config.cli 스크립트의 내용을 보여줍니다.

    # config map
    
    /subsystem=microprofile-config-smallrye/config-source=os-map:add(dir={path=${config.path}}, ordinal=${config.ordinal})
    Copy to Clipboard Toggle word wrap

    mp-config.cli CLI 스크립트는 속성 파일에서 ordinal 및 path 값이 검색되는 새 ConfigSource 를 생성합니다.

  4. 스크립트를 프로젝트의 루트 디렉터리에 있는 /scripts 디렉터리에 저장합니다.
  5. 기존 플러그인 <configuration> 요소에 다음 구성 추출을 추가합니다.

    <cli-sessions>
        <cli-session>
            <properties-file>
                scripts/cli.properties
            </properties-file>
            <script-files>
                <script>scripts/mp-config.cli</script>
            </script-files>
        </cli-session>
    </cli-sessions>
    Copy to Clipboard Toggle word wrap
  6. 애플리케이션을 패키징합니다.

    $ mvn package
    Copy to Clipboard Toggle word wrap
  7. oc login 명령을 사용하여 OpenShift 인스턴스에 로그인합니다.
  8. 선택 사항: 이전에 target/openshift 하위 디렉터리를 생성하지 않은 경우 다음 명령을 실행하여 suddirectory를 생성해야 합니다.

    $ mkdir target/openshift
    Copy to Clipboard Toggle word wrap
  9. 패키지 애플리케이션을 생성된 하위 디렉터리에 복사합니다.

    $ cp target/microprofile-config-bootable.jar target/openshift
    Copy to Clipboard Toggle word wrap
  10. target/openshift 하위 디렉터리를 바이너리 입력으로 사용하여 애플리케이션을 빌드합니다.

    $ oc start-build microprofile-config-app --from-dir target/openshift
    Copy to Clipboard Toggle word wrap
    참고

    OpenShift는 부팅 가능한 JAR 구성 파일에 CLI 스크립트 명령 세트를 적용하여 클라우드 환경에서 활성화합니다. Maven 프로젝트 /target 디렉터리에서 bootable-jar-build-artifacts/generated-cli-script.txt 파일을 열어 이 스크립트에 액세스할 수 있습니다.

  11. ConfigMap 을 생성합니다. 예를 들면 다음과 같습니다.

    $ oc create configmap microprofile-config-map --from-literal=name="Name comes from Openshift ConfigMap"
    Copy to Clipboard Toggle word wrap
  12. dc를 사용하여 ConfigMap 을 애플리케이션에 마운트합니다. 예를 들면 다음과 같습니다.

    $ oc set volume deployments/microprofile-config-app --add --name=config-volume \
    --mount-path=/etc/config \
    --type=configmap \
    --configmap-name=microprofile-config-map
    Copy to Clipboard Toggle word wrap

    oc set volume 명령을 실행한 후 애플리케이션이 새 구성 설정으로 다시 배포됩니다.

  13. 출력을 테스트합니다.

    $ curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/json
    Copy to Clipboard Toggle word wrap

    다음은 예상되는 출력입니다.

    {"result":"Hello Name comes from Openshift ConfigMap"}
    Copy to Clipboard Toggle word wrap

11.12. 부팅 가능한 JAR Maven 프로젝트 생성

절차의 단계에 따라 예제 Maven 프로젝트를 생성합니다. 다음 절차를 수행하려면 Maven 프로젝트를 생성해야 합니다.

  • 부팅 가능한 JAR에 대한 JSON 로깅 활성화
  • 여러 부팅 가능한 JAR 인스턴스에 대한 웹 세션 데이터 스토리지 활성화
  • CLI 스크립트를 사용하여 부팅 가능한 JAR에 대한 HTTP 인증 활성화
  • Red Hat build of Keycloak을 사용하여 JBoss EAP 부팅 가능한 JAR 애플리케이션 보안

프로젝트 pom.xml 파일에서 부팅 가능한 JAR을 빌드하는 데 필요한 프로젝트 아티팩트를 검색하도록 Maven을 구성할 수 있습니다.

프로세스

  1. Maven 프로젝트를 설정합니다.

    $ mvn archetype:generate \
    -DgroupId=GROUP_ID \
    -DartifactId=ARTIFACT_ID \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    Copy to Clipboard Toggle word wrap

    여기서 GROUP_ID 는 프로젝트의 groupId 이고 ARTIFACT_ID 는 프로젝트의 artifactId 입니다.

  2. pom.xml 파일에서 원격 리포지토리에서 JBoss EAP BOM 파일을 검색하도록 Maven을 구성합니다.

    <repositories>
        <repository>
            <id>jboss</id>
            <url>https://maven.repository.redhat.com/ga</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
          <id>jboss</id>
            <url>https://maven.repository.redhat.com/ga</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
      </pluginRepository>
    </pluginRepositories>
    Copy to Clipboard Toggle word wrap
  3. jboss-eap-ee BOM에서 Jakarta EE 아티팩트의 버전을 자동으로 관리하도록 Maven을 구성하려면 pom.xml 파일의 < dependencyManagement > 섹션에 BOM을 추가합니다. 예를 들면 다음과 같습니다.

    <dependencyManagement>
      <dependencies>
        <dependency>
            <groupId>org.jboss.bom</groupId>
            <artifactId>jboss-eap-ee</artifactId>
            <version>8.0.2.GA-redhat-00007</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    Copy to Clipboard Toggle word wrap
  4. 다음 예와 같이 BOM에서 관리하는 서블릿 API 아티팩트를 프로젝트 pom.xml 파일의 < dependency > 섹션에 추가합니다.

    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <scope>provided</scope>
    </dependency>
    Copy to Clipboard Toggle word wrap

11.13. 부팅 가능한 JAR에 대한 JSON 로깅 활성화

CLI 스크립트로 서버 로깅 구성을 구성하여 부팅 가능한 JAR에 대한 JSON 로깅을 활성화할 수 있습니다. JSON 로깅을 활성화하면 JSON 포맷터를 사용하여 JSON 형식의 로그 메시지를 볼 수 있습니다.

이 절차의 예제에서는 베어 메탈 플랫폼과 OpenShift 플랫폼에서 부팅 가능한 JAR에 대한 JSON 로깅을 활성화하는 방법을 보여줍니다.

사전 요구 사항

  • 9.minor.micro.Final-redhat-XXXXX 와 같은 최신 Maven 플러그인 버전을 확인했습니다. 여기서 9 는 주요 버전이며 마이너 버전은 마이크로 마이크로 버전이며 X 는 Red Hat 빌드 번호입니다. 예: 9.0.1.Final-redhat-00009.
  • Maven 프로젝트를 생성하고 애플리케이션을 생성하기 위한 종속 항목을 추가했습니다. 부팅 가능한 JAR Maven 프로젝트 생성 을 참조하십시오.

    중요

    Maven 프로젝트의 Maven archetype에서는 프로젝트와 관련된 groupID 및 artifactID를 지정해야 합니다. 예를 들면 다음과 같습니다.

    $ mvn archetype:generate \
    -DgroupId=com.example.logging \
    -DartifactId=logging \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    cd logging
    Copy to Clipboard Toggle word wrap
    참고

    절차에 표시된 예제에서는 다음 속성을 지정합니다.

    • ${bootable.jar.maven.plugin.version} 은(는) Maven 플러그인 버전에 해당합니다.

    프로젝트에 이러한 속성을 설정해야 합니다. 예를 들면 다음과 같습니다.

    <properties>
        <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
    </properties>
    Copy to Clipboard Toggle word wrap

프로세스

  1. BOM에서 관리하는 JBoss Logging 및 Jakarta RESTful Web Services 종속성을 프로젝트 pom.xml 파일의 < dependencies > 섹션에 추가합니다. 예를 들면 다음과 같습니다.

    <dependencies>
        <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.ws.rs</groupId>
            <artifactId>jakarta.ws.rs-api</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    Copy to Clipboard Toggle word wrap
  2. pom.xml 파일의 & lt;build > 요소에 다음 내용을 추가합니다. 예를 들면 다음과 같습니다.

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-packs>
    				<feature-pack>
    					<location>org.jboss.eap.xp:wildfly-galleon-pack</location>
    				</feature-pack>
    			</feature-packs>
    			<layers>
    				<layer>jaxrs-server</layer>
    			</layers>
    		</configuration>
    		<executions>
    			<execution>
    				<goals>
    					<goal>package</goal>
    				</goals>
    			</execution>
    		</executions>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap
  3. Java 파일을 저장할 디렉터리를 만듭니다.

    $ mkdir -p APPLICATION_ROOT/src/main/java/com/example/logging/
    Copy to Clipboard Toggle word wrap

    여기서 APPLICATION_ROOT 는 애플리케이션의 pom.xml 구성 파일이 포함된 디렉터리입니다.

  4. 다음 내용으로 Java 파일 RestApplication.java 를 생성하고 APPLICATION_ROOT/src/main/java/com/example/logging/ 디렉터리에 파일을 저장합니다.

    package com.example.logging;
    import jakarta.ws.rs.ApplicationPath;
    import jakarta.ws.rs.core.Application;
    
    @ApplicationPath("/")
    public class RestApplication extends Application {
    }
    Copy to Clipboard Toggle word wrap
  5. 다음 내용으로 Java 파일 HelloWorldEndpoint.java 를 생성하고 파일을 APPLICATION_ROOT/src/main/java/com/example/logging/ 디렉터리에 저장합니다.

    package com.example.logging;
    
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.core.Response;
    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Produces;
    
    import org.jboss.logging.Logger;
    @Path("/hello")
    public class HelloWorldEndpoint {
    
        private static Logger log = Logger.getLogger(HelloWorldEndpoint.class.getName());
        @GET
        @Produces("text/plain")
        public Response doGet() {
            log.debug("HelloWorldEndpoint.doGet called");
            return Response.ok("Hello from XP bootable jar!").build();
        }
    }
    Copy to Clipboard Toggle word wrap
  6. logging.cli 와 같은 CLI 스크립트를 생성하고 APPLICATION_ROOT/scripts 디렉터리와 같은 부팅 가능한 JAR의 액세스 가능한 디렉터리에 저장합니다. 여기서 APPLICATION_ROOT 는 Maven 프로젝트의 루트 디렉터리입니다. 이 스크립트는 다음 명령을 포함해야 합니다.

    /subsystem=logging/logger=com.example.logging:add(level=ALL)
    /subsystem=logging/json-formatter=json-formatter:add(exception-output-type=formatted, pretty-print=false, meta-data={version="1"}, key-overrides={timestamp="@timestamp"})
    /subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=ALL)
    /subsystem=logging/console-handler=CONSOLE:write-attribute(name=named-formatter, value=json-formatter)
    Copy to Clipboard Toggle word wrap
  7. 플러그인 <configuration> 요소에 다음 구성 추출을 추가합니다.

    <cli-sessions>
            <cli-session>
            <script-files>
                <script>scripts/logging.cli</script>
            </script-files>
        </cli-session>
    </cli-sessions>
    Copy to Clipboard Toggle word wrap

    이 예에서는 서버 로깅 구성 파일을 수정하여 애플리케이션에 대한 JSON 로깅을 활성화하는 logging.cli CLI 스크립트를 보여줍니다.

  8. 애플리케이션을 부팅 가능한 JAR로 패키징합니다.

    $ mvn package
    Copy to Clipboard Toggle word wrap
  9. 선택 사항: JBoss EAP 베어 메탈 플랫폼에서 애플리케이션을 실행하려면 JBoss EAP 베어 메탈 플랫폼에서 부팅 가능한 JAR 사용에 설명된 단계를 따르십시오. 그러나 다음과 같은 차이점이 있습니다.

    1. 애플리케이션을 시작합니다.

      mvn wildfly-jar:run
      Copy to Clipboard Toggle word wrap
    2. 확인: 브라우저에 다음 URL을 지정하여 애플리케이션에 액세스할 수 있습니다. http://127.0.0.1:8080/hello.

      예상 출력: 애플리케이션 콘솔에서 com.example.logging.HelloWorldEndpoint 디버그 추적을 포함한 JSON 형식의 로그를 볼 수 있습니다.

  10. 선택 사항: JBoss EAP OpenShift 플랫폼에서 애플리케이션을 실행하려면 다음 단계를 완료합니다.

    1. &lt ;cloud/& gt; 요소를 플러그인 구성에 추가합니다. 예를 들면 다음과 같습니다.

      <plugins>
         <plugin>
             ... <!-- You must evolve the existing configuration with the <cloud/> element  -->
             <configuration >
                 ...
                 <cloud/>
              </configuration>
          </plugin>
      </plugins>
      Copy to Clipboard Toggle word wrap
    2. 애플리케이션을 다시 빌드합니다.

      $ mvn clean package
      Copy to Clipboard Toggle word wrap
    3. oc login 명령을 사용하여 OpenShift 인스턴스에 로그인합니다.
    4. OpenShift에서 새 프로젝트를 생성합니다. 예를 들면 다음과 같습니다.

      $ oc new-project bootable-jar-project
      Copy to Clipboard Toggle word wrap
    5. 다음 oc 명령을 입력하여 애플리케이션 이미지를 생성합니다.

      $ mkdir target/openshift && cp target/logging-bootable.jar target/openshift 
      1
      
      
      $ oc import-image ubi8/openjdk-17 --from=registry.redhat.io/ubi8/openjdk-17 --confirm
       
      2
      
      
      $ oc new-build --strategy source --binary --image-stream openjdk-17 --name logging 
      3
      
      
      $ oc start-build logging --from-dir target/openshift 
      4
      Copy to Clipboard Toggle word wrap
      1
      target/openshift 하위 디렉터리를 생성합니다. 패키지 애플리케이션은 openshift 하위 디렉터리에 복사됩니다.
      2
      최신 OpenJDK 17 이미지 스트림 태그 및 이미지 정보를 OpenShift 프로젝트로 가져옵니다.
      3
      로깅 디렉터리 및 OpenJDK 17 이미지 스트림을 기반으로 빌드 구성을 생성합니다.
      4
      target/openshift 하위 디렉터리를 바이너리 입력으로 사용하여 애플리케이션을 빌드합니다.
    6. 애플리케이션을 배포합니다.

      $ oc new-app logging
      
      $ oc expose svc/logging
      Copy to Clipboard Toggle word wrap
    7. 경로의 URL을 가져옵니다.

      $ oc get route logging --template='{{ .spec.host }}'
      Copy to Clipboard Toggle word wrap
    8. 이전 명령에서 반환된 URL을 사용하여 웹 브라우저의 애플리케이션에 액세스합니다. 예를 들면 다음과 같습니다.

      http://ROUTE_NAME/hello
      Copy to Clipboard Toggle word wrap
    9. 확인: 사용 가능한 OpenShift Pod 목록을 보고 Pod 빌드 상태를 확인하려면 다음 명령을 실행합니다.

      $ oc get pods
      Copy to Clipboard Toggle word wrap

      애플리케이션의 실행 중인 Pod 로그에 액세스합니다. 여기서 APP_POD_NAME 은 실행 중인 포드 로깅 애플리케이션의 이름입니다.

      $ oc logs APP_POD_NAME
      Copy to Clipboard Toggle word wrap

      예상 결과: Pod 로그는 JSON 형식이며 com.example.logging.HelloWorldEndpoint 디버그 추적을 포함합니다.

웹 클러스터 애플리케이션을 부팅 가능한 JAR로 빌드하고 패키징할 수 있습니다.

사전 요구 사항

  • 9.minor.micro.Final-redhat-XXXXX 와 같은 최신 Maven 플러그인 버전을 확인했습니다. 여기서 9 는 주요 버전이며 마이너 버전은 마이크로 마이크로 버전이며 X 는 Red Hat 빌드 번호입니다. 예: 9.0.1.Final-redhat-00009.
  • Maven 프로젝트를 생성하고 웹 클러스터 애플리케이션을 생성하기 위한 종속 항목을 추가했습니다. 부팅 가능한 JAR Maven 프로젝트 생성 을 참조하십시오.

    중요

    Maven 프로젝트를 설정할 때 Maven archetype 구성에 값을 지정해야 합니다. 예를 들면 다음과 같습니다.

    $ mvn archetype:generate \
    -DgroupId=com.example.webclustering \
    -DartifactId=web-clustering \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    cd web-clustering
    Copy to Clipboard Toggle word wrap
    참고

    절차에 표시된 예제에서는 다음 속성을 지정합니다.

    • ${bootable.jar.maven.plugin.version} 은(는) Maven 플러그인 버전에 해당합니다.

    프로젝트에 이러한 속성을 설정해야 합니다. 예를 들면 다음과 같습니다.

    <properties>
        <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
    </properties>
    Copy to Clipboard Toggle word wrap

프로세스

  1. pom.xml 파일의 & lt;build > 요소에 다음 내용을 추가합니다. 예를 들면 다음과 같습니다.

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
    			<layers>
    				<layer>datasources-web-server</layer>
    				<layer>web-clustering</layer>
    			</layers>
    		</configuration>
    		<executions>
    			<execution>
    				<goals>
    					<goal>package</goal>
    				</goals>
    			</execution>
    		</executions>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap
    참고

    이 예제에서는 웹 클러스터링 Galleon 계층을 사용하여 웹 세션 공유를 활성화합니다.

  2. src/main/webapp/WEB-INF 디렉토리에서 다음 구성을 사용하여 web.xml 파일을 업데이트합니다.

    <?xml version="1.0" encoding="UTF-8"?>
    
    <web-app version="4.0"
             xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee  http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
        <distributable/>
    </web-app>
    Copy to Clipboard Toggle word wrap

    & lt;distributable/& gt; 태그는 이 서블릿이 여러 서버에 분산될 수 있음을 나타냅니다.

  3. Java 파일을 저장할 디렉터리를 만듭니다.

    $ mkdir -p APPLICATION_ROOT
    /src/main/java/com/example/webclustering/
    Copy to Clipboard Toggle word wrap

    여기서 APPLICATION_ROOT 는 애플리케이션의 pom.xml 구성 파일이 포함된 디렉터리입니다.

  4. 다음 내용으로 Java 파일 MyServlet.java 를 만들고 파일을 APPLICATION_ROOT/src/main/java/com/example/webclustering/ 디렉터리에 저장합니다.

    package com.example.webclustering;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import jakarta.servlet.ServletException;
    import jakarta.servlet.annotation.WebServlet;
    import jakarta.servlet.http.HttpServlet;
    import jakarta.servlet.http.HttpServletRequest;
    import jakarta.servlet.http.HttpServletResponse;
    
    @WebServlet(urlPatterns = {"/clustering"})
    public class MyServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws IOException {
            response.setContentType("text/html;charset=UTF-8");
            long t;
            User user = (User) request.getSession().getAttribute("user");
            if (user == null) {
                t = System.currentTimeMillis();
                user = new User(t);
                request.getSession().setAttribute("user", user);
            }
            try (PrintWriter out = response.getWriter()) {
                out.println("<!DOCTYPE html>");
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Web clustering demo</title>");
                out.println("</head>");
                out.println("<body>");
                out.println("<h1>Session id " + request.getSession().getId() + "</h1>");
                out.println("<h1>User Created " + user.getCreated() + "</h1>");
                out.println("<h1>Host Name " + System.getenv("HOSTNAME") + "</h1>");
                out.println("</body>");
                out.println("</html>");
            }
        }
    }
    Copy to Clipboard Toggle word wrap

    MyServlet.java 의 콘텐츠는 클라이언트가 HTTP 요청을 보내는 끝점을 정의합니다.

  5. 다음 콘텐츠를 사용하여 Java 파일 User.java 를 생성하고 파일을 APPLICATION_ROOT/src/main/java/com/example/webclustering/ 디렉터리에 저장합니다.

    package com.example.webclustering;
    
    import java.io.Serializable;
    
    public class User implements Serializable {
        private final long created;
    
        User(long created) {
            this.created = created;
        }
        public long getCreated() {
            return created;
        }
    }
    Copy to Clipboard Toggle word wrap
  6. 애플리케이션을 패키징합니다.

    $ mvn package
    Copy to Clipboard Toggle word wrap
  7. 선택 사항: JBoss EAP 베어 메탈 플랫폼에서 애플리케이션을 실행하려면 JBoss EAP 베어 메탈 플랫폼에서 부팅 가능한 JAR 사용에 설명된 단계를 따르십시오. 그러나 다음과 같은 차이점이 있습니다.

    1. JBoss EAP 베어 메탈 플랫폼에서는 다음 예와 같이 java -jar 명령을 사용하여 여러 부팅 가능한 JAR 인스턴스를 실행할 수 있습니다.

      $ java -jar target/web-clustering-bootable.jar -Djboss.node.name=node1
      
      $ java -jar target/web-clustering-bootable.jar -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=10
      Copy to Clipboard Toggle word wrap
    2. 확인: 노드 1 인스턴스에서 애플리케이션에 액세스할 수 있습니다. http://127.0.0.1:8080/clustering. 사용자 세션 ID와 사용자 생성 시간을 확인합니다.

      이 인스턴스를 종료한 후 노드 2 인스턴스에 액세스할 수 있습니다. http://127.0.0.1:8090/clustering. 사용자는 노드 1 인스턴스의 세션 ID 및 사용자 생성 시간과 일치해야 합니다.

  8. 선택 사항: JBoss EAP OpenShift 플랫폼에서 애플리케이션을 실행하려면 JBoss EAP OpenShift 플랫폼에서 부팅 가능한 JAR 사용에 설명된 단계를 수행하되 다음 단계를 완료합니다.

    1. &lt ;cloud/& gt; 요소를 플러그인 구성에 추가합니다. 예를 들면 다음과 같습니다.

      <plugins>
         <plugin>
             ... <!-- You must evolve the existing configuration with the <cloud/> element  -->
             <configuration >
                 ...
                 <cloud/>
              </configuration>
          </plugin>
      </plugins>
      Copy to Clipboard Toggle word wrap
    2. 애플리케이션을 다시 빌드합니다.

      $ mvn clean package
      Copy to Clipboard Toggle word wrap
    3. oc login 명령을 사용하여 OpenShift 인스턴스에 로그인합니다.
    4. OpenShift에서 새 프로젝트를 생성합니다. 예를 들면 다음과 같습니다.

      $ oc new-project bootable-jar-project
      Copy to Clipboard Toggle word wrap
    5. JBoss EAP OpenShift 플랫폼에서 웹 클러스터 애플리케이션을 실행하려면 포드가 실행 중인 서비스 계정에 대한 권한 부여 액세스 권한을 부여해야 합니다. 그러면 서비스 계정이 Kubernetes REST API에 액세스할 수 있습니다. 다음 예제에서는 서비스 계정에 권한 부여 권한을 보여줍니다.

      $ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
      Copy to Clipboard Toggle word wrap
    6. 다음 oc 명령을 입력하여 애플리케이션 이미지를 생성합니다.

      $ mkdir target/openshift && cp target/web-clustering-bootable.jar target/openshift 
      1
      
      
      $ oc import-image ubi8/openjdk-17 --from=registry.redhat.io/ubi8/openjdk-17 --confirm 
      2
      
      
      $ oc new-build --strategy source --binary --image-stream openjdk-17 --name web-clustering 
      3
      
      
      $ oc start-build web-clustering --from-dir target/openshift 
      4
      Copy to Clipboard Toggle word wrap
      1
      target/openshift 하위 디렉터리를 생성합니다. 패키지된 애플리케이션은 openshift 하위 디렉터리에 복사됩니다.
      2
      최신 OpenJDK 17 이미지 스트림 태그 및 이미지 정보를 OpenShift 프로젝트로 가져옵니다.
      3
      web-clustering 디렉터리 및 OpenJDK 17 이미지 스트림을 기반으로 빌드 구성을 생성합니다.
      4
      target/openshift 하위 디렉터리를 바이너리 입력으로 사용하여 애플리케이션을 빌드합니다.
    7. 애플리케이션을 배포합니다.

      $ oc new-app web-clustering -e KUBERNETES_NAMESPACE=$(oc project -q)
      
      $ oc expose svc/web-clustering
      Copy to Clipboard Toggle word wrap
      중요

      KUBERNETES_NAMESPACE 환경 변수를 사용하여 현재 OpenShift 네임 스페이스의 다른 pod를 확인해야 합니다. 그러지 않으면 서버가 default 네임스페이스에서 포드를 검색하려고 합니다.

    8. 경로의 URL을 가져옵니다.

      $ oc get route web-clustering --template='{{ .spec.host }}'
      Copy to Clipboard Toggle word wrap
    9. 이전 명령에서 반환된 URL을 사용하여 웹 브라우저의 애플리케이션에 액세스합니다. 예를 들면 다음과 같습니다.

      http://ROUTE_NAME/clustering
      Copy to Clipboard Toggle word wrap

      사용자 세션 ID 및 사용자 생성 시간을 확인합니다.

    10. 애플리케이션을 두 개의 Pod로 확장합니다.

      $ oc scale --replicas=2 deployments web-clustering
      Copy to Clipboard Toggle word wrap
    11. 다음 명령을 실행하여 사용 가능한 OpenShift Pod 목록을 보고 포드 빌드 상태를 확인합니다.

      $ oc get pods
      Copy to Clipboard Toggle word wrap
    12. oc delete pod web-clustering-POD_NAME 명령을 사용하여 가장 오래된 Pod를 종료합니다. 여기서 POD_NAME 은 가장 오래된 Pod의 이름입니다.
    13. 애플리케이션에 다시 액세스합니다.

      http://ROUTE_NAME/clustering
      Copy to Clipboard Toggle word wrap

      예상 결과: 새 Pod에서 생성한 세션 ID와 종료된 Pod의 생성 시간과 일치합니다. 이는 웹 세션 데이터 스토리지가 활성화되었음을 나타냅니다.

CLI 스크립트를 사용하여 부팅 가능한 JAR에 대한 HTTP 인증을 활성화할 수 있습니다. 이 스크립트는 서버에 보안 영역과 보안 도메인을 추가합니다.

사전 요구 사항

  • 9.minor.micro.Final-redhat-XXXXX 와 같은 최신 Maven 플러그인 버전을 확인했습니다. 여기서 9 는 주요 버전이며 마이너 버전은 마이크로 마이크로 버전이며 X 는 Red Hat 빌드 번호입니다. 예: 9.0.1.Final-redhat-00009.
  • Maven 프로젝트를 생성하고 HTTP 인증이 필요한 애플리케이션을 생성하기 위한 종속 항목을 추가했습니다. 부팅 가능한 JAR Maven 프로젝트 생성 을 참조하십시오.

    중요

    Maven 프로젝트를 설정할 때 Maven archetype 구성에 HTTP 인증 값을 지정해야 합니다. 예를 들면 다음과 같습니다.

    $ mvn archetype:generate \
    -DgroupId=com.example.auth \
    -DartifactId=authentication \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    cd authentication
    Copy to Clipboard Toggle word wrap
    참고

    절차에 표시된 예제에서는 다음 속성을 지정합니다.

    • ${bootable.jar.maven.plugin.version} 은(는) Maven 플러그인 버전에 해당합니다.

    프로젝트에 이러한 속성을 설정해야 합니다. 예를 들면 다음과 같습니다.

    <properties>
        <bootable.jar.maven.plugin.version>9.0.1.Final-redhat-00009</bootable.jar.maven.plugin.version>
    </properties>
    Copy to Clipboard Toggle word wrap

프로세스

  1. pom.xml 파일의 & lt;build > 요소에 다음 내용을 추가합니다. 예를 들면 다음과 같습니다.

    <plugins>
    	<plugin>
    		<groupId>org.wildfly.plugins</groupId>
    		<artifactId>wildfly-jar-maven-plugin</artifactId>
    		<version>${bootable.jar.maven.plugin.version}</version>
    		<configuration>
    			<channels>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-8.0</artifactId>
    					</manifest>
    				</channel>
    				<channel>
    					<manifest>
    						<groupId>org.jboss.eap.channels</groupId>
    						<artifactId>eap-xp-5.0</artifactId>
    					</manifest>
    				</channel>
    			</channels>
    			<feature-pack-location>org.jboss.eap.xp:wildfly-galleon-pack</feature-pack-location>
    			<layers>
    				<layer>datasources-web-server</layer>
    			</layers>
    		</configuration>
    		<executions>
    			<execution>
    				<goals>
    					<goal>package</goal>
    				</goals>
    			</execution>
    		</executions>
    	</plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap

    이 예제에서는 elytron 하위 시스템을 포함하는 datasources-web-server Galleon 계층을 포함하는 방법을 보여줍니다.

  2. src/main/webapp/WEB-INF 디렉터리에서 web.xml 파일을 업데이트합니다. 예를 들면 다음과 같습니다.

    <?xml version="1.0" encoding="UTF-8"?>
    
    <web-app version="4.0"
             xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee  http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
    
        <login-config>
            <auth-method>BASIC</auth-method>
            <realm-name>Example Realm</realm-name>
        </login-config>
    
    </web-app>
    Copy to Clipboard Toggle word wrap
  3. Java 파일을 저장할 디렉터리를 만듭니다.

    $ mkdir -p APPLICATION_ROOT/src/main/java/com/example/authentication/
    Copy to Clipboard Toggle word wrap

    여기서 APPLICATION_ROOT 는 Maven 프로젝트의 루트 디렉터리입니다.

  4. 다음 내용으로 Java 파일 TestServlet.java 를 만들고 파일을 APPLICATION_ROOT/src/main/java/com/example/authentication/ 디렉터리에 저장합니다.

    package com.example.authentication;
    
    import jakarta.servlet.annotation.HttpMethodConstraint;
    import jakarta.servlet.annotation.ServletSecurity;
    import jakarta.servlet.annotation.WebServlet;
    import jakarta.servlet.http.HttpServlet;
    import jakarta.servlet.http.HttpServletRequest;
    import jakarta.servlet.http.HttpServletResponse;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    @WebServlet(urlPatterns = "/hello")
    @ServletSecurity(httpMethodConstraints = { @HttpMethodConstraint(value = "GET", rolesAllowed = { "Users" }) })
    public class TestServlet extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
            PrintWriter writer = resp.getWriter();
            writer.println("Hello " + req.getUserPrincipal().getName());
            writer.close();
        }
    
    }
    Copy to Clipboard Toggle word wrap
  5. authentication.cli 와 같은 CLI 스크립트를 생성하고 APPLICATION_ROOT/scripts 디렉터리와 같은 부팅 가능한 JAR의 액세스 가능한 디렉터리에 저장합니다. 이 스크립트는 다음 명령을 포함해야 합니다.

    /subsystem=elytron/properties-realm=bootable-realm:add(users-properties={relative-to=jboss.server.config.dir, path=bootable-users.properties, plain-text=true}, groups-properties={relative-to=jboss.server.config.dir, path=bootable-groups.properties})
    /subsystem=elytron/security-domain=BootableDomain:add(default-realm=bootable-realm, permission-mapper=default-permission-mapper, realms=[{realm=bootable-realm, role-decoder=groups-to-roles}])
    
    /subsystem=undertow/application-security-domain=other:write-attribute(name=security-domain, value=BootableDomain)
    Copy to Clipboard Toggle word wrap
  6. 플러그인 <configuration> 요소에 다음 구성 추출을 추가합니다.

    <cli-sessions>
        <cli-session>
            <script-files>
                <script>scripts/authentication.cli</script>
            </script-files>
        </cli-session>
    </cli-sessions>
    Copy to Clipboard Toggle word wrap

    이 예에서는 기본 undertow 보안 도메인을 서버에 정의된 보안 도메인으로 구성하는 authentication.cli CLI 스크립트를 보여줍니다.

    참고

    패키징 시간 대신 런타임 시 CLI 스크립트를 실행하는 옵션이 있습니다. 이렇게 하려면 이 단계를 건너뛰고 10 단계로 진행합니다.

  7. Maven 프로젝트의 루트 디렉터리에는 JBoss EAP JAR Maven 플러그인이 부팅 가능한 JAR에 추가하는 속성 파일을 저장할 디렉터리를 생성합니다.

    $ mkdir -p APPLICATION_ROOT/extra-content/standalone/configuration/
    Copy to Clipboard Toggle word wrap

    여기서 APPLICATION_ROOT 는 애플리케이션의 pom.xml 구성 파일이 포함된 디렉터리입니다.

    이 디렉터리는 bootable-users.propertiesbootable-groups.properties 파일과 같은 파일을 저장합니다.

    bootable-users.properties 파일에는 다음 내용이 포함되어 있습니다.

    testuser=bootable_password
    Copy to Clipboard Toggle word wrap

    bootable-groups.properties 파일에는 다음 내용이 포함되어 있습니다.

    testuser=Users
    Copy to Clipboard Toggle word wrap
  8. 기존 < configuration> 요소에 다음 extra-content-content-dirs 요소를 추가합니다.

    <extra-server-content-dirs>
                <extra-content>extra-content</extra-content>
    </extra-server-content-dirs>
    Copy to Clipboard Toggle word wrap

    extra-content 디렉터리에는 속성 파일이 포함되어 있습니다.

  9. 애플리케이션을 부팅 가능한 JAR로 패키징합니다.

    $ mvn package
    Copy to Clipboard Toggle word wrap
  10. 애플리케이션을 시작합니다.

    mvn wildfly-jar:run
    Copy to Clipboard Toggle word wrap

    6단계를 건너뛰고 빌드 중에 CLI 스크립트를 실행하지 않도록 선택한 경우 다음 명령을 사용하여 애플리케이션을 시작합니다.

    mvn wildfly-jar:run -Dwildfly.bootable.arguments=--cli-script=scripts/authentication.cli
    Copy to Clipboard Toggle word wrap
  11. 서블릿을 호출하지만 인증 정보를 지정하지 마십시오.

    curl -v http://localhost:8080/hello
    Copy to Clipboard Toggle word wrap

    예상 출력:

    HTTP/1.1 401 Unauthorized
    ...
    WWW-Authenticate: Basic realm="Example Realm"
    Copy to Clipboard Toggle word wrap
  12. 서버를 호출하고 인증 정보를 지정합니다. 예를 들면 다음과 같습니다.

    $ curl -v -u testuser:bootable_password http://localhost:8080/hello
    Copy to Clipboard Toggle word wrap

    부팅 가능한 JAR에 HTTP 인증이 활성화되었음을 나타내는 HTTP 200 상태가 반환됩니다. 예를 들면 다음과 같습니다.

    HTTP/1.1 200 OK
    ....
    Hello testuser
    Copy to Clipboard Toggle word wrap

12장. Helm 차트 사용 사례

Helm은 OpenShift에서 JBoss EAP XP 5.0 애플리케이션을 빌드, 배포 및 유지 관리할 수 있는 오픈 소스 패키지 관리자입니다.

JBoss EAP XP 5.0과 함께 Helm 차트를 사용하여 다음을 수행할 수 있습니다.

  • OpenShift S2I(Source-to-Image)를 사용하여 Git 리포지토리에서 호스팅되는 Maven 프로젝트에서 애플리케이션을 빌드합니다.
  • OpenShift 클러스터(TLS 구성, 공용 경로)를 사용하여 OpenShift에 애플리케이션 이미지를 배포하여 애플리케이션을 노출합니다.
  • Helm 차트로 애플리케이션 이미지를 빌드하고 JBoss EAP XP Operator를 사용하여 이미지를 배포합니다.
  • 다른 방법을 사용하여 JBoss EAP XP의 애플리케이션 이미지를 빌드하고 Helm 차트를 사용합니다.
중요
  • JBoss EAP XP 5.0으로 Java 애플리케이션을 빌드하여 부팅 가능 Jar 또는 Jakarta 배포(JBoss EAP 8.0와 유사)를 생성할 수 있습니다.
  • Java 애플리케이션이 부팅 가능 Jar인 경우 JBoss EAP XP 5.0의 Helm 차트를 사용하여 애플리케이션 이미지를 빌드할 수 있습니다(기본 build.modebootable-jar로 설정됨).
  • Java 애플리케이션이 Jakarta 배포인 경우 Helm 차트의 build.modes2i로 설정하여 source-to-Image (예: JBoss EAP 8.0)를 사용하여 애플리케이션 이미지를 빌드할 수 있습니다.

12.1. Helm 차트를 사용하여 JBoss EAP XP 애플리케이션 빌드 및 배포

빌드 및 배포 값을 구성하여 Helm 차트를 사용하여 JBoss EAP XP 애플리케이션을 빌드할 수 있습니다. 빌드 구성에서 애플리케이션 코드를 호스팅하는 Git 리포지토리에 URL을 제공해야 합니다. 출력은 빌드된 애플리케이션 이미지가 포함된 ImageStreamTag 리소스입니다. 애플리케이션을 배포하려면 빌드된 애플리케이션 이미지가 포함된 ImageStreamTag 리소스를 제공해야 합니다. 출력은 OpenShift 내부 및 외부에서 애플리케이션에 액세스하는 데 사용할 수 있는 배포된 애플리케이션 및 기타 관련 리소스입니다.

사전 요구 사항

  • OpenShift 개발 콘솔에 액세스할 수 있습니다.
  • Git 리포지토리에서 호스팅되는 JBoss EAP XP 애플리케이션의 소스 코드가 있습니다.
  • 애플리케이션은 Maven 프로젝트입니다.
  • org.jboss.eap.plugins:eap-maven-plugin 을 사용하여 JBoss EAP XP 5.0 서버를 프로비저닝하도록 애플리케이션을 구성했습니다.
참고
  • 이 절차에서는 OpenShift Development Console 사용에만 중점을 둡니다.
  • 일부 양식 섹션은 기본적으로 축소됩니다. 다음 섹션을 업데이트하여 업데이트할 필요가 없습니다.Additionally, you do not need to update these sections to proceed.

프로세스

  1. OpenShift 개발 콘솔에 로그인합니다.

    1. 드롭다운 메뉴에서 Helm 을 클릭합니다.
    2. 오른쪽 상단에서 생성 을 클릭한 다음 Helm 릴리스 를 클릭합니다.
    3. JBoss EAP XP 5를 선택합니다.
    4. 생성을 클릭하고 YAML 보기를 통해 구성을 선택합니다.
  2. 소스 리포지토리에서 애플리케이션 이미지를 빌드합니다.

    build:
      uri: <git repository URL of your application>
      mode: s2i
    Copy to Clipboard Toggle word wrap
  3. 선택 사항: sourceSecret 키를 사용하여 빌드 섹션에 보안을 입력합니다.

    build:
      uri: <git repository URL of your application>
      mode: s2i
      sourceSecret: <name of secret login to your Git repository>
    Copy to Clipboard Toggle word wrap

검증

  • 애플리케이션이 성공적으로 배포된 경우 OpenShift 개발 콘솔의 Helm 릴리스 옆에 배포된 배지가 표시되어야 합니다.

12.1.1. JBoss EAP XP에서 S2I(Source-to-Image)와 함께 Helm 채팅 사용

애플리케이션 pom.xml 에서 Cryostat-maven-plugin 을 사용하여 JBoss EAP 서버를 프로비저닝합니다. OpenShift 프로필이 다른 모든 것보다 우선하므로 이 플러그인이 OpenShift 프로필, 기본 프로필 또는 기타 활성 프로필에 구성되어 있는지 확인합니다.

중요

build.mode 를 S2I로 설정해야 합니다. 이는 JBoss EAP XP Helm 차트의 기본값이 bootable-jar 이기 때문입니다.

참고

build.s2i.featurePacks,build.s2i.galleonLayersbuild.s2i.channels 필드가 더 이상 사용되지 않습니다.

12.1.2. JBoss EAP XP에서 부팅 가능한 JAR로 Helm 차트 사용

JBoss EAP XP 5.0에서 이 작업을 수행하는 방법에 대한 자세한 내용은 부팅 가능한 JAR 을 참조하십시오.

또한 JBoss EAP XP 5.0에서는 부팅 가능한 JAR을 기반으로 애플리케이션을 빌드하도록 JBoss EAP XP 5.0에 대한 Helms 차트를 구성할 수 있습니다.

사전 요구 사항

  • OpenShift 개발 콘솔에 로그인했습니다.
  • Git 리포지토리에서 호스팅되는 JBoss EAP XP 애플리케이션의 소스 코드가 있습니다.
  • 애플리케이션은 Maven 프로젝트입니다. Maven 플러그인 org.wildfly.plugins:wildfly-jar-maven-plugin 을 사용하여 부팅 가능한 JAR을 생성하도록 애플리케이션을 구성했습니다. 자세한 내용은 부팅 가능한 JAR Maven 프로젝트 생성을 참조하십시오.
12.1.2.1. 부팅 가능한 JAR을 사용하여 애플리케이션 이미지 빌드

OpenShift 개발 콘솔의 빌드 섹션을 구성하여 Helms 차트를 사용하여 부팅 가능으로 JBoss EAP XP 애플리케이션 이미지를 빌드할 수 있습니다.

참고
  • Helm 차트를 사용하여 애플리케이션을 빌드하는 경우 Git 리포지터리를 참조하는 Git URL을 사용하여 build.url 필드를 지정해야 합니다.
  • build.mode 필드를 bootable-jar 로 설정해야 합니다.

12.2. JBoss EAP XP용 Helm 차트의 영구 데이터 저장을 위한 OpenShift 볼륨

OpenShift 볼륨을 사용하면 컨테이너가 클라우드 스토리지, NFS(네트워크 파일 시스템) 또는 호스트 시스템을 비롯한 다양한 소스의 데이터를 저장하고 공유할 수 있습니다. OpenShift 패키지 관리자인 Helm 차트를 사용하여 일관되고 재현 가능한 방식으로 애플리케이션을 배포할 수 있습니다. Helm 차트에 볼륨 마운트를 추가하면 애플리케이션이 배포 간에 데이터를 유지할 수 있습니다.

12.2.1. JBoss EAP XP에 Helm 차트를 사용하여 볼륨 마운트

다음 절차에서는 JBoss EAP XP에서 Helm 차트를 사용하여 시크릿을 볼륨으로 마운트하는 방법을 설명합니다. 또한 이를 사용하여 ConfigMap 을 마운트할 수도 있습니다. 이 작업을 통해 애플리케이션은 데이터에 안전하게 액세스하고 사용할 수 있으므로 무단 액세스 또는 변조로부터 보호할 수 있습니다. 예를 들어 보안을 볼륨으로 마운트하면 시크릿에 저장한 중요한 데이터가 시크릿이 마운트된 배포를 실행하는 POD에 파일로 표시됩니다.

사전 요구 사항

  • OpenShift 개발 콘솔에 액세스할 수 있습니다.
  • 시크릿 을 생성했습니다. 예를 들어 keystore.jks 와 같은 파일을 참조하는 Cryostat -app-secret 이라는 시크릿을 생성했습니다.
  • 컨테이너의 파일 시스템에서 시크릿을 마운트할 위치를 확인했습니다. 예를 들어 /etc/jgroups-encrypt-secre-secret-volume 디렉터리는 keystore.jks 와 같은 시크릿 파일이 마운트된 위치입니다.
  • Git 리포지토리에서 호스팅되는 JBoss EAP XP 애플리케이션의 소스 코드입니다.
  • 애플리케이션은 Maven 프로젝트입니다.
  • org.jboss.eap.plugins:eap-maven-plugin 을 사용하여 JBoss EAP XP 5.0 서버를 프로비저닝하도록 애플리케이션을 구성했습니다.

프로세스

  1. OpenShift 개발 콘솔에 로그인합니다.

    1. 드롭다운 메뉴에서 Helm 을 클릭합니다.
    2. 오른쪽 상단에서 생성 을 클릭한 다음 Helm 릴리스 를 클릭합니다.
    3. JBoss EAP XP 5를 선택합니다.
    4. 생성을 클릭하고 YAML 보기를 통해 구성을 선택합니다.
  2. deploy.volumes 필드에 볼륨을 지정하는 YAML 파일을 편집하고 사용할 시크릿을 구성합니다. 볼륨 이름과 시크릿의 secretName을 제공해야 합니다.

    volumes:
      - name: eap-jgroups-keystore-volume
        secret:
            secretName: eap-app-secret
    Copy to Clipboard Toggle word wrap
  3. 배포 구성에서 deploy.volumeMounts 를 사용하여 파일 시스템에 볼륨을 마운트합니다.

    volumeMounts:
      - name: eap-jgroups-keystore-volume
        mountPath: /etc/jgroups-encrypt-secret-volume
        readOnly: true
    Copy to Clipboard Toggle word wrap

    Pod가 시작되면 컨테이너는 /etc/jgroups-encrypt-secret-volume/keystore.jks 위치에 keystore.jks 파일을 마운트합니다.

13장. JBoss EAP의 가시성

개발자 또는 시스템 관리자인 경우 관찰 기능은 애플리케이션의 특정 신호, 애플리케이션 위치 및 문제 소스에 따라 사용할 수 있는 관행 및 기술 집합입니다. 가장 일반적인 신호는 메트릭, 이벤트 및 추적입니다. JBoss EAP는 관찰 을 위해 OpenTelemetry를 사용합니다.

13.1. JBoss EAP의 OpenTelemetry

OpenTelemetry는 애플리케이션의 Telemetry 데이터를 계측, 생성, 수집 및 내보내는 데 사용할 수 있는 도구 세트, API(애플리케이션 프로그래밍 인터페이스) 및 SDK(소프트웨어 개발 키트)입니다. 원격 분석 데이터에는 메트릭, 로그 및 추적이 포함됩니다. 애플리케이션의 Telemetry 데이터를 분석하면 애플리케이션 성능을 개선하는 데 도움이 됩니다. JBoss EAP는 opentelemetry 하위 시스템을 통해 OpenTelemetry 기능을 제공합니다.

참고

Red Hat JBoss Enterprise Application Platform 8.0은 OpenTelemetry 추적 기능만 제공합니다.

중요

OpenTelemetry는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다. Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview 을 참조하십시오.

13.2. JBoss EAP의 OpenTelemetry 구성

opentelemetry 하위 시스템을 사용하여 JBoss EAP에서 OpenTelemetry의 여러 측면을 구성합니다. 여기에는 내보내기자, 범위 프로세서 및 샘플러가 포함됩니다.

내보내기
추적을 분석하고 시각화하기 위해 OTLP(OpenTelemetry Collector)와 같은 수집기로 내보냅니다. OpenTelemetry 프로토콜을 지원하는 모든 컬렉터를 사용하도록 JBoss EAP를 구성할 수 있습니다.
범위 프로세서
범위를 생성하거나 일괄적으로 내보내도록 범위 프로세서를 구성할 수 있습니다. 내보낼 추적 수를 구성할 수도 있습니다.
sampler
샘플러를 구성하여 기록할 추적 수를 구성할 수 있습니다.

설정 예

다음 XML은 기본값을 포함하여 전체 OpenTelemetry 구성의 예입니다. JBoss EAP는 변경 시 기본값을 유지하지 않으므로 구성이 다를 수 있습니다.

<subsystem xmlns="urn:wildfly:opentelemetry:1.0"
        service-name="example">
    <exporter
        type="otlp"
        endpoint="http://localhost:4317"/>
    <span-processor
        type="batch"
        batch-delay="4500"
        max-queue-size="128"
        max-export-batch-size="512"
        export-timeout="45"/>
    <sampler
        type="on"/>
</subsystem>
Copy to Clipboard Toggle word wrap
참고

OpenShift 경로 오브젝트를 사용하여 OpenTelemetry 수집기 끝점과 연결할 수 없습니다. 대신 http:// <ip_address > : <port > 또는 http:// <service_name > : <port >를 사용합니다.

13.3. JBoss EAP에서 OpenTelemetry 추적

JBoss EAP는 애플리케이션의 다양한 부분을 통과할 때 사용자 요청의 진행 상황을 추적하는 데 도움이 되는 OpenTelemetry 추적 기능을 제공합니다. 추적을 분석하면 애플리케이션의 성능을 개선하고 가용성 문제를 디버깅할 수 있습니다.

OpenTelemetry 추적은 다음 구성 요소로 구성됩니다.

Trace
요청이 애플리케이션에서 통과하는 작업 컬렉션입니다.
범위
추적 내의 단일 작업입니다. 요청, 오류 및 기간(RED) 지표를 제공하고 범위 컨텍스트를 포함합니다.
범위 컨텍스트
포함 범위가 의 일부인 요청을 나타내는 고유 식별자 집합입니다.

JBoss EAP는 Jakarta RESTful Web Services 애플리케이션 및 컨테이너 관리 Jakarta RESTful Web Services 클라이언트 호출에 대한 REST 호출을 자동으로 추적합니다. JBoss EAP는 다음과 같이 암시적으로 REST 호출을 추적합니다.

  • 들어오는 각 요청에 대해 다음을 수행합니다.

    • JBoss EAP는 요청에서 범위 컨텍스트를 추출합니다.
    • JBoss EAP는 새 기간을 시작한 다음 요청이 완료되면 종료합니다.
  • 발신 요청마다 다음을 수행합니다.

    • JBoss EAP는 요청에 범위 컨텍스트를 삽입합니다.
    • JBoss EAP는 새 기간을 시작한 다음 요청이 완료되면 종료합니다.

암시적 추적 외에도 세분화된 추적을 위해 애플리케이션에 Tracer 인스턴스를 삽입하여 사용자 지정 범위를 생성할 수 있습니다.

13.4. JBoss EAP에서 OpenTelemetry 추적 활성화

JBoss EAP에서 OpenTelemetry 추적을 사용하려면 먼저 opentelemetry 하위 시스템을 활성화해야 합니다.

사전 요구 사항

  • JBoss EAP XP 5.0을 사용한 JBoss EAP 8.0이 설치되어 있습니다.

프로세스

  1. 관리 CLI를 사용하여 OpenTelemetry 확장을 추가합니다.

    /extension=org.wildfly.extension.opentelemetry:add
    Copy to Clipboard Toggle word wrap
  2. 관리 CLI를 사용하여 opentelemetry 하위 시스템을 활성화합니다.

    /subsystem=opentelemetry:add
    Copy to Clipboard Toggle word wrap
  3. JBoss EAP 다시 로드.

    reload
    Copy to Clipboard Toggle word wrap

13.5. opentelemetry 하위 시스템 구성

opentelemetry 하위 시스템을 구성하여 추적의 다양한 측면을 설정할 수 있습니다. 추적을 관찰하는 데 사용하는 수집기를 기반으로 이러한 항목을 구성합니다.

사전 요구 사항

프로세스

  1. 추적의 내보내기 유형을 설정합니다.

    구문

    /subsystem=opentelemetry:write-attribute(name=exporter-type, value=<exporter_type>)
    Copy to Clipboard Toggle word wrap

    /subsystem=opentelemetry:write-attribute(name=exporter-type, value=otlp)
    Copy to Clipboard Toggle word wrap

  2. 추적을 내보낼 끝점을 설정합니다.

    구문

    /subsystem=opentelemetry:write-attribute(name=endpoint, value=<URL:port>)
    Copy to Clipboard Toggle word wrap

    /subsystem=opentelemetry:write-attribute(name=endpoint, value=http://localhost:4317)
    Copy to Clipboard Toggle word wrap

  3. 추적을 내보내는 서비스 이름을 설정합니다.

    구문

    /subsystem=opentelemetry:write-attribute(name=service-name, value=<service_name>)
    Copy to Clipboard Toggle word wrap

    /subsystem=opentelemetry:write-attribute(name=service-name, value=exampleOpenTelemetryService)
    Copy to Clipboard Toggle word wrap

14장. reference

14.1. MicroProfile Config 참조

14.1.1. 기본 MicroProfile Config 속성

MicroProfile Config 사양은 기본적으로 세 가지 ConfigSources 를 정의합니다.

ConfigSources 는 서수에 따라 정렬됩니다. 이후 배포에 대한 구성을 덮어써야 하는 경우 더 낮은 ordinal ConfigSource 가 더 높은 Ordinal ConfigSource 를 덮어씁니다.

Expand
표 14.1. 기본 MicroProfile Config 속성
ConfigSourceordinal

시스템 속성

400

환경 변수

300

속성 파일 META-INF/microprofile-config.properties 는 classpath에 있습니다.

100

14.1.2. MicroProfile Config SmallRye ConfigSources

microprofile-config-#159rye 프로젝트는 기본 MicroProfile Config ConfigSources 외에도 사용할 수 있는 더 많은 ConfigSources 를 정의합니다.

Expand
표 14.2. 추가 MicroProfile Config 속성
ConfigSourceordinal

Cryostat의 config-source

100

Directory의 ConfigSource

100

클래스의 ConfigSource

100

이러한 ConfigSources 에 대해 명시적 ordinal이 지정되지 않습니다. MicroProfile Config 사양에 있는 기본 ordinal 값을 상속합니다.

14.2. MicroProfile Fault Tolerance 참조

14.2.1. MicroProfile Fault Tolerance 구성 속성

smallrye Fault Tolerance 사양은 MicroProfile Fault Tolerance 사양에 정의된 속성 외에 다음 속성을 정의합니다.

Expand
표 14.3. MicroProfile Fault Tolerance 구성 속성
속성기본값설명

io.smallrye.faulttolerance.mainThreadPoolSize

100

스레드 풀의 최대 스레드 수입니다.

io.smallrye.faulttolerance.mainThreadPoolQueueSize

-1 (unbounded)

스레드 풀에서 사용해야 하는 큐의 크기입니다.

14.3. MicroProfile JWT 참조

14.3.1. MicroProfile Config JWT 표준 속성

microprofile-jwt-undercloudrye 하위 시스템은 다음 MicroProfile Config 표준 속성을 지원합니다.

Expand
표 14.4. MicroProfile Config JWT 표준 속성
속성기본설명

mp.jwt.verify.publickey

NONE

지원되는 형식 중 하나를 사용하여 인코딩된 공개 키의 문자열 표현입니다. mp.jwt.verify.publickey.location 을 설정한 경우 설정하지 마십시오.

mp.jwt.verify.publickey.location

NONE

공개 키의 위치는 상대 경로 또는 URL일 수 있습니다. mp.jwt.verify.publickey 를 설정한 경우 설정하지 마십시오.

mp.jwt.verify.issuer

NONE

모든 JWT 토큰의 예상 값은 검증되는 모든 JWT 토큰에 대한 값 입니다.

microprofile-config.properties 구성의 예:

mp.jwt.verify.publickey.location=META-INF/public.pem
mp.jwt.verify.issuer=jwt-issuer
Copy to Clipboard Toggle word wrap

14.4. MicroProfile OpenAPI 참조

14.4.1. MicroProfile OpenAPI 구성 속성

JBoss EAP는 표준 MicroProfile OpenAPI 구성 속성 외에도 다음과 같은 추가 MicroProfile OpenAPI 속성을 지원합니다. 이러한 속성은 전역 및 애플리케이션 범위 모두에서 적용할 수 있습니다.

Expand
표 14.5. JBoss EAP의 MicroProfile OpenAPI 속성
속성기본값설명

mp.openapi.extensions.enabled

true

OpenAPI 엔드포인트 등록을 활성화하거나 비활성화합니다.

false 로 설정하면 OpenAPI 문서 생성을 비활성화합니다. 구성 하위 시스템을 사용하여 전역적으로 값을 설정하거나 /META-INF/microprofile-config.properties 와 같은 구성 파일에서 각 애플리케이션에 대해 설정할 수 있습니다.

프로덕션 또는 개발과 같은 다른 환경에서 마이크로profile-openapi-undercloudrye 를 선택적으로 활성화하거나 비활성화하도록 이 속성을 매개 변수화할 수 있습니다.

이 속성을 사용하여 지정된 가상 호스트와 연결된 애플리케이션을 제어하는 데 MicroProfile OpenAPI 모델을 생성할 수 있습니다.

mp.openapi.extensions.path

/openapi

이 속성을 사용하여 가상 호스트와 연결된 여러 애플리케이션에 대한 OpenAPI 문서를 생성할 수 있습니다.

동일한 가상 호스트와 연결된 각 애플리케이션에 고유한 mp.openapi.extensions.path 를 설정합니다.

mp.openapi.extensions.servers.relative

true

자동 생성된 서버 레코드가 OpenAPI 끝점의 위치에 대한 절대인지 또는 상대적인지 여부를 나타냅니다.

루트가 아닌 컨텍스트 경로가 있는 경우 OpenAPI 문서의 소비자가 OpenAPI 엔드포인트 호스트를 기준으로 REST 서비스에 대한 유효한 URL을 구성할 수 있는지 확인하려면 서버 레코드가 필요합니다.

value true 는 서버 레코드가 OpenAPI 끝점의 위치를 기준으로함을 나타냅니다. 생성된 레코드에는 배포의 컨텍스트 경로가 포함되어 있습니다.

false 로 설정하면 JBoss EAP XP에서 배포에 액세스할 수 있는 모든 프로토콜, 호스트 및 포트를 포함한 서버 레코드를 생성합니다.

14.5. MicroProfile Reactive Messaging 참조

다음은 MicroProfile Config 사양에 필요한 reactive messaging 속성 키 접두사 목록입니다.

  • mp.messaging.incoming.[channel-name].[attribute]=[value]
  • mp.messaging.outgoing.[channel-name].[attribute]=[value]
  • mp.messaging.connector.[connector-name].[attribute]=[value]

channel-name@Incoming.value() 또는 @Outgoing.value() 입니다. 자세한 내용은 한 쌍의 커넥터 방법 예제를 참조하십시오.

@Outgoing("to")
public int send() {
   int i = // Randomly generated...
   return i;
}

@Incoming("from")
public void receive(int i) {
   // Process payload
}
Copy to Clipboard Toggle word wrap

이 예에서 필수 속성 접두사는 다음과 같습니다.

  • mp.messaging.incoming.from. 이는 receive() 메서드를 정의합니다.
  • mp.messaging.outgoing.to. 이는 send() 메서드를 정의합니다.

이는 하나의 예입니다. 서로 다른 커넥터가 다른 속성을 인식하므로 구성하려는 커넥터에 따라 표시되는 접두사가 지정됩니다.

다음은 사용자가 @Channel 과 Emitter 구문을 통해 트리거한 reactive 메시징 스트림과 코드 간의 데이터 교환 예입니다.

@Path("/")
@ApplicationScoped
class MyBean {
    @Inject @Channel("my-stream")
    Emitter<String> emitter; 
1


    Publisher<String> dest;

    public MyBean() { 
2

    }

    @Inject
    public MyBean(@Channel("my-stream") Publisher<String> dest) {
        this.dest = subscribeAndAllowMultipleSubscriptions(dest);
    }

    private Publisher subscribeAndAllowMultipleSubscriptions(Publisher delegate) {
    } 
3
 
4
 
5


    @POST
    public PublisherBuilder<String> publish(@FormParam("value") String value) {
        return emitter.send(value);
    }

    @GET
    public Publisher poll() {
        return dest;
    }

    @PreDestroy
    public void close() { 
6


    }
}
Copy to Clipboard Toggle word wrap

인라인 세부 정보:

1
생성자가 삽입된 게시자를 래핑합니다.
2
Java 사양에 대한 CDI(Contexts and dependency Cryostat)를 충족하기 위해 이 빈 생성자가 필요합니다.
3
위임을 구독합니다.
4
여러 서브스크립션을 처리할 수 있는 게시자로 위임을 래핑합니다.
5
래핑 게시자는 위임에서 데이터를 전달합니다.
6
reactive 메시징 제공 게시자의 서브스크립션 취소.

이 예에서 MicroProfile Reactive Messaging은 my-stream 메모리 스트림을 수신하므로 Emitter 를 통해 전송된 메시지는 이 삽입된 게시자에 수신됩니다. 그러나 이 데이터 교환에 성공하려면 다음 조건이 true여야 합니다.

  1. Emitter.send() 를 호출하기 전에 채널에 활성 서브스크립션이 있어야 합니다. 이 예제에서 생성자가 호출하는 subscribeAndAllowMultipleSubscriptions() 메서드는 사용자 코드 호출에 사용할 수 있는 시점까지 활성 서브스크립션이 있는지 확인합니다.
  2. 삽입된 게시자 에 대해 하나의 서브스크립션 만 가질 수 있습니다. REST 호출을 사용하여 수신 게시자를 노출하려면 poll() 메서드를 호출하면 dest 게시자에 새 서브스크립션이 생성되고 각 클라이언트에 삽입된 데이터를 브로드캐스트하기 위해 자체 게시자를 구현해야 합니다.

14.5.3. Apache Kafka 사용자 API

Apache Kafka 사용자 API를 사용하여 Kafka가 수신된 메시지에 대한 자세한 정보를 가져오고 Kafka가 메시지를 처리하는 방법에 영향을 미칠 수 있습니다. 이 API는 io/#159rye/reactive/messaging/kafka/api 패키지에 저장되며 다음 클래스로 구성됩니다.

  • IncomingKafkaRecordMetadata. 이 메타데이터에는 다음 정보가 포함됩니다.

    • 메시지로 표시되는 Kafka 레코드 입니다.
    • 메시지에 사용되는 Kafka 주제파티션 과 그 내의 오프셋 입니다.
    • Message timestamptimestampType.
    • 메시지 헤더 입니다. 이러한 정보는 애플리케이션이 생성 측에 첨부할 수 있고 소비되는 측면에서 수신할 수 있는 정보입니다.
  • OutgoingKafkaRecordMetadata. 이 메타데이터를 사용하면 Kafka에서 메시지를 처리하는 방법을 지정하거나 덮어쓸 수 있습니다. 여기에는 다음 정보가 포함됩니다.

    • Kafka에서 메시지 키로 처리하는 키 .
    • Kafka에서 사용할 주제입니다.
    • 파티션.
    • Kafka가 생성하는 타임스탬프 를 원하지 않는 경우입니다.
    • 헤더.
  • KafkaMetadataUtil 에는 OutgoingKafkaRecordMetadata메시지에 작성하고 메시지에서 IncomingKafkaRecordMetadata 를 읽는 유틸리티 방법이 포함되어 있습니다.
중요

Kafka에 매핑되지 않은 채널로 전송된 메시지에 OutgoingKafkaRecordMetadata 를 작성하는 경우 reactive 메시징 프레임워크가 이를 무시합니다. 반대로 Kafka에 매핑되지 않은 채널에서 Message 에서 IncomingKafkaRecordMetadata 를 읽는 경우 해당 메시지는 null 로 반환됩니다.

메시지 키를작성하고 읽는 방법의 예
@Inject
@Channel("from-user")
Emitter<Integer> emitter;

@Incoming("from-user")
@Outgoing("to-kafka")
public Message<Integer> send(Message<Integer> msg) {
    // Set the key in the metadata
    OutgoingKafkaRecordMetadata<String> md =
            OutgoingKafkaRecordMetadata.<String>builder()
                .withKey("KEY-" + i)
                .build();
    // Note that Message is immutable so the copy returned by this method
    // call is not the same as the parameter to the method
    return KafkaMetadataUtil.writeOutgoingKafkaMetadata(msg, md);
}

@Incoming("from-kafka")
public CompletionStage<Void> receive(Message<Integer> msg) {
    IncomingKafkaRecordMetadata<String, Integer> metadata =
        KafkaMetadataUtil.readIncomingKafkaMetadata(msg).get();

    // We can now read the Kafka record key
    String key = metadata.getKey();

    // When using the Message wrapper around the payload we need to explicitly ack
    // them
    return msg.ack();
}
Copy to Clipboard Toggle word wrap
microprofile-config.properties 파일의 Kafka 매핑 예
kafka.bootstrap.servers=kafka:9092

mp.messaging.outgoing.to-kafka.connector=smallrye-kafka
mp.messaging.outgoing.to-kafka.topic=some-topic
mp.messaging.outgoing.to-kafka.value.serializer=org.apache.kafka.common.serialization.IntegerSerializer
mp.messaging.outgoing.to-kafka.key.serializer=org.apache.kafka.common.serialization.StringSerializer

mp.messaging.incoming.from-kafka.connector=smallrye-kafka
mp.messaging.incoming.from-kafka.topic=some-topic
mp.messaging.incoming.from-kafka.value.deserializer=org.apache.kafka.common.serialization.IntegerDeserializer
mp.messaging.incoming.from-kafka.key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
Copy to Clipboard Toggle word wrap
참고

발신 채널의 key.serializer 와 들어오는 채널의 key.deserializer 를 지정해야 합니다.

14.5.4. Kafka 커넥터의 MicroProfile Config 속성 파일의 예

이는 Kafka 커넥터의 간단한 microprofile-config.properties 파일의 예입니다. 해당 속성은 "MicroProfile reactive messaging connectors for integrating with external messaging systems"의 속성에 해당합니다.

kafka.bootstrap.servers=kafka:9092

mp.messaging.outgoing.to.connector=smallrye-kafka
mp.messaging.outgoing.to.topic=my-topic
mp.messaging.outgoing.to.value.serializer=org.apache.kafka.common.serialization.IntegerSerializer

mp.messaging.incoming.from.connector=smallrye-kafka
mp.messaging.incoming.from.topic=my-topic
mp.messaging.incoming.from.value.deserializer=org.apache.kafka.common.serialization.IntegerDeserializer
Copy to Clipboard Toggle word wrap
Expand
표 14.6. 항목 토론
항목설명

에서 다음을 수행합니다.

이는 "채널"입니다.

전송,수신

이는 "methods"입니다.

to channel은 send() 메서드에 있고 from 채널은 receive() 메서드에 있습니다.

kafka.bootstrap.servers=kafka:9092

이는 애플리케이션이 연결해야 하는 Kafka 브로커의 URL을 지정합니다. 채널 수준에서 URL을 지정할 수도 있습니다(예: mp.messaging.outgoing.to.bootstrap.servers=kafka:9092).

mp.messaging.outgoing.to.connector=smallrye-kafka

이는 to 채널을 통해 Kafka에서 메시지를 수신할 수 있음을 나타냅니다.

smallrye reactive messaging는 애플리케이션을 빌드하기 위한 프레임워크입니다. smallrye-kafka 값은 SmallRye reactive messaging-specific입니다. Galleon을 사용하여 자체 서버를 프로비저닝하는 경우 microprofile-reactive-messaging-kafka Galleon 계층을 포함하여 Kafka 통합을 활성화할 수 있습니다.

mp.messaging.outgoing.to.topic=my-topic

이는 my-topic 이라는 Kafka 주제로 데이터를 보낼 것임을 나타냅니다.

Kafka "topic"은 메시지가 저장되고 게시되는 카테고리 또는 피드 이름입니다. 모든 Kafka 메시지는 주제로 구성됩니다. 생산자 애플리케이션은 주제 및 소비자 애플리케이션에 데이터를 작성하여 주제 에서 데이터를 읽습니다.

MP.messaging.outgoing.to.value.serializer=org.apache.kafka.common.serialization.IntegerSerializer

이는 커넥터가 IntegerSerializer 를 사용하여 topic에 쓸 때 send() 메서드가 출력되는 값을 직렬화하도록 지시합니다. Kafka는 표준 Java 유형에 대한 직렬화를 제공합니다. org.apache.kafka.common.serialization.Serializer 를 구현하는 클래스를 작성한 다음 해당 클래스를 배포에 포함하여 고유한 serializer를 구현할 수 있습니다.

mp.messaging.incoming.from.connector=smallrye-kafka

이는 channel을 사용하여 Kafka 에서 메시지를 수신할 것임을 나타냅니다. 다시 말하지만 smallrye-kafka 값은 SmallRye reactive messaging-specific입니다.

mp.messaging.incoming.from.topic=my-topic

이는 커넥터가 my-topic 이라는 Kafka 주제에서 데이터를 읽어야 함을 나타냅니다.

MP.messaging.incoming.from.value.deserializer=org.apache.kafka.common.serialization.IntegerDeserializer

이는 커넥터가 IntegerDeserializer 를 사용하여 receive() 메서드를 호출하기 전에 주제의 값을 역직렬화하도록 지시합니다. org.apache.kafka.common.serialization.Deserialization.Deserializer 를 구현하는 클래스를 작성한 다음 해당 클래스를 배포에 포함하여 고유한 역직렬을 구현할 수 있습니다.

참고

이 속성 목록은 포괄적이지 않습니다. 자세한 내용은 SmallRye Reactive Messaging Apache Kafka 설명서를 참조하십시오.

필수 MicroProfile Reactive Messaging 접두사

MicroProfile Reactive Messaging 사양에는 Kafka에 대해 다음과 같은 메서드 속성 키 접두사가 필요합니다.

  • mp.messaging.incoming.[channel-name].[attribute]=[value]`
  • mp.messaging.outgoing.[channel-name].[attribute]=[value]`
  • mp.messaging.connector.[connector-name].[attribute]=[value]`

channel-name@Incoming.value() 또는 @Outgoing.value() 입니다.

이제 다음 메서드 쌍 예제를 고려하십시오.

@Outgoing("to")
public int send() {
    int i = // Randomly generated...
    return i;
}

@Incoming("from")
public void receive(int i) {
    // Process payload
}
Copy to Clipboard Toggle word wrap

이 메서드 쌍 예제에서는 다음과 같은 필수 속성 접두사를 기록해 둡니다.

  • mp.messaging.incoming.from. 이 접두사는 receive() 메서드의 구성으로 속성을 선택합니다.
  • mp.messaging.outgoing.to. 이 접두사는 send() 메서드의 구성으로 속성을 선택합니다.

14.5.5. AMQP 커넥터의 MicroProfile Config 속성 파일의 예

이는 AMQP(Advanced Message Queuing Protocol) 커넥터의 간단한 microprofile-config.properties 파일의 예입니다. 해당 속성은 외부 메시징 시스템과 통합을 위한 MicroProfile reactive 메시징 커넥터 의 속성에 해당합니다.

amqp-host=localhost
amqp-port=5672
amqp-username=artemis
amqp-password=artemis

mp.messaging.outgoing.to.connector=smallrye-amqp
mp.messaging.outgoing.to.address=my-topic

mp.messaging.incoming.from.connector=smallrye-amqp
mp.messaging.incoming.from.address=my-topic
Copy to Clipboard Toggle word wrap
Expand
표 14.7. 항목 토론
항목설명

에서 다음을 수행합니다.

이는 "채널"입니다.

전송,수신

이는 "methods"입니다.

to channel은 send() 메서드에 있고 from 채널은 receive() 메서드에 있습니다.

amqp-host=localhost

이는 애플리케이션이 연결해야 하는 AMQP 브로커의 URL을 지정합니다. 다음과 같이 채널 수준에서 URL을 지정할 수도 있습니다. 즉, URL이 지정되지 않은 경우 기본값은 localhost 입니다.

amqp-port=5672

이는 AMQP 브로커의 포트를 지정합니다.

mp.messaging.outgoing.to.connector=smallrye-amqp

이는 채널이 AMQP에 메시지를 전송하도록 한다는 것을 나타냅니다.

smallrye reactive messaging는 애플리케이션을 빌드하기 위한 프레임워크입니다. smallrye-amqp 값은 SmallRye reactive messaging specific입니다. Galleon을 사용하여 서버를 프로비저닝하는 경우 microprofile-reactive-messaging-amqp Galleon 계층을 포함하여 AMQP 통합을 활성화할 수 있습니다.

mp.messaging.outgoing.to.address=my-topic

이는 my-topic 주소의 AMQP 큐에 데이터를 보낼 것임을 나타냅니다. mp.messaging.outgoing.to.address 에 대한 값을 지정하지 않으면 이 예에서 "to"인 채널의 기본값이 설정됩니다.

mp.messaging.incoming.from.connector=smallrye-amqp

이는 from 채널을 사용하여 AMQP 브로커에서 메시지를 수신하려는 것을 나타냅니다. 다시 말하지만 smallrye-amqp 값은 SmallRye reactive messaging-specific입니다.

mp.messaging.incoming.from.address=my-topic

이는 from 채널의 AMQP 대기열 my-topic 에서 데이터를 읽으려는 것을 나타냅니다.

SmallRye Reactive Messaging의 AMQP 커넥터에서 지원하는 전체 속성 목록은 SmallRye Reactive Messaging Connector Configuration Reference 를 참조하십시오.

보안 AMQP 브로커에 연결

SSL/TLS 및 SASL(Simple Authentication and Security Layer)으로 보안된 AMQ 브로커와 연결하려면 microprofile-config.properties 파일에서 연결에 사용할 client-ssl-context 를 정의합니다. 커넥터 수준 및 채널 수준에서도 이 작업을 수행할 수 있습니다.

커넥터 수준 client-ssl-context 정의의 예

amqp-use-ssl=true
mp.messaging.connector.smallrye-amqp.wildfly.elytron.ssl.context=exampleSSLContext
Copy to Clipboard Toggle word wrap

mp.messaging.connector.undercloudrye-amqp.wildfly.elytron.ssl.context 속성은 자체 서명된 인증서를 사용하는 경우에만 필요합니다.

중요

프로덕션 환경에서는 자체 서명된 인증서를 사용하지 마십시오. CA(인증 기관)에서 서명한 인증서만 사용합니다.

다음과 같이 채널에 client-ssl-context 를 지정할 수도 있습니다.

채널 수준 client-ssl-context 정의의 예

mp.messaging.incoming.from.wildfly.elytron.ssl.context=exampleSSLContext
Copy to Clipboard Toggle word wrap

예제에서 exampleSSLContext에서 들어오는 채널과만 연결됩니다.

Expand
표 14.8. 항목 토론
항목설명

amqp-use-ssl

이는 브로커에 연결할 때 보안 연결을 사용하도록 지정합니다.

mp.messaging.connector.smallrye-amqp.wildfly.elytron.ssl.context

AMQ 브로커가 CA(인증 기관) 서명 인증서로 보안된 경우 이 속성을 지정할 필요가 없습니다.

자체 서명된 인증서를 사용하는 경우 관리 모델에서 /subsystem=elytron/client-ssl-context=* 아래의 Elytron 하위 시스템에 정의된 SSLContext 를 지정합니다.

중요

프로덕션 환경에서는 자체 서명된 인증서를 사용하지 마십시오. CA(인증 기관)에서 서명한 인증서만 사용합니다.

다음 관리 CLI 명령을 사용하여 client-ssl-context 를 정의할 수 있습니다.

/subsystem=elytron/client-ssl-context=exampleSSLContext:add(key-manager=exampleServerKeyManager,trust-manager=exampleTLSTrustManager)
Copy to Clipboard Toggle word wrap

자세한 내용은 JBoss EAP 가이드의 SSL/TLS 구성에서양방향 SSL/TLS 구성에 대한 서버 인증서 구성, 클라이언트 인증서에 대한 신뢰 저장소 및 신뢰 관리자 구성 을 참조하십시오.

14.6. OpenTelemetry 참조

14.6.1. OpenTelemetry 하위 시스템 속성

opentelemetry 하위 시스템 속성을 수정하여 해당 동작을 구성할 수 있습니다. 속성은 내보내기, 샘플러 및 범위 프로세서의 구성 측면으로 그룹화됩니다.

Expand
표 14.9. 내보내기 속성 그룹
속성설명기본값

endpoint

OpenTelemetry가 추적을 푸시하는 URL입니다. 이 값을 내보내기가 수신 대기하는 URL로 설정합니다.

http://localhost:14250/

exporter-type

추적이 전송되는 내보내기입니다. 다음 중 하나일 수 있습니다.

  • Jaeger. 사용하는 내보내기는 Jaeger입니다.
  • otlp. 사용하는 내보내기는 OpenTelemetry 프로토콜과 함께 작동합니다.

jaeger

Expand
표 14.10. 샘플러 속성 그룹
속성설명기본값

내보낼 추적의 비율입니다. 값은 0.0 에서 1.0 사이여야 합니다. 예를 들어 애플리케이션에서 생성한 100개 추적에서 하나의 추적을 내보내려면 값을 0.01 로 설정합니다. 이 속성은 특성 sampler-typeratio 로 설정한 경우에만 적용됩니다.

 

Expand
표 14.11. 프로세서 특성 그룹 범위
속성설명기본값

batch-delay

JBoss EAP가 연속적으로 두 번 내보내는 간격(밀리초)입니다. 이 속성은 특성 span-processor-type일괄 로 설정한 경우에만 적용됩니다.

5000

export-timeout

취소되기 전에 내보내기를 완료할 수 있는 최대 시간(밀리초)입니다.

30000

max-export-batch-size

각 배치에 게시된 최대 추적 수입니다. 이 수는 max-queue-size 값보다 작거나 같아야 합니다. 특성 span-processor-type일괄 로 설정한 경우에만 이 속성을 설정할 수 있습니다.

512

max-queue-size

내보내기 전에 대기열에 추가할 최대 추적 수입니다. 애플리케이션에서 더 많은 추적을 생성하면 기록되지 않습니다. 이 속성은 특성 span-processor-type일괄 로 설정한 경우에만 적용됩니다.

2048

span-processor-type

사용할 범위 프로세서 유형입니다. 값은 다음 중 하나일 수 있습니다.

  • batch: JBoss EAP는 다음 특성을 사용하여 정의된 일괄 처리로 추적을 내보냅니다.

    • batch-delay
    • max-export-batch-size
    • max-queue-size
  • 단순: JBoss EAP 내보내기 추적은 완료되는 즉시 수행됩니다.

batch

법적 공지

Copyright © 2025 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
맨 위로 이동