8.6. 데이터 소스

데이터 소스는 일부 환경 변수의 값에 따라 자동으로 생성됩니다.

가장 중요한 환경 변수는 데이터 소스에 대한 JNDI 매핑을 정의하므로 DB_SERVICE_PREFIX_MAPPING 입니다. 이 변수에 허용되는 값은 POOLNAME-DATABASETYPE=PREFIX 트라이블릿의 쉼표로 구분된 목록입니다. 여기서:

  • POOLNAME 은 데이터 소스에서 pool-name 으로 사용됩니다.
  • DATABASETYPE 은 사용할 데이터베이스 드라이버입니다.
  • PREFIX 는 데이터 소스를 구성하는 데 사용되는 환경 변수의 이름에 사용되는 접두사입니다.

8.6.1. 데이터 소스에 대한 JNDI 매핑

DB_SERVICE_ PREFIX_MAPPING 환경 변수에 정의된 각POOLNAME-DATABASETYPE= PREFIX Triplet에 대해 시작 스크립트는 이미지를 실행할 때 실행되는 별도의 데이터 소스를 생성합니다.

참고

DB_SERVICE_PREFIX_MAPPING 의 첫 번째 부분(등호 앞에)은 소문자여야 합니다.

DATABASETYPE 은 데이터 소스의 드라이버를 결정합니다.

드라이버 구성에 대한 자세한 내용은 모듈, 드라이버 및 일반 배포를 참조하십시오. JDK 8 이미지에는 postgresqlmysql 용 드라이버가 기본적으로 구성됩니다.

주의

POOLNAME 매개 변수에 특수 문자를 사용하지 마십시오.

데이터베이스 드라이버

이제 OpenShift용 JBoss EAP와 함께 Red Hat 제공 내부 데이터 소스 드라이버를 사용하는 지원이 더 이상 사용되지 않습니다. Red Hat은 데이터베이스 벤더에서 JBoss EAP 애플리케이션을 위해 얻은 JDBC 드라이버를 사용하는 것이 좋습니다.

다음 내부 데이터 소스는 더 이상 OpenShift용 JBoss EAP 이미지와 함께 제공되지 않습니다.

  • MySQL
  • PostgreSQL

드라이버 설치에 대한 자세한 내용은 모듈, 드라이버 및 일반 배포를 참조하십시오.

JBoss EAP를 사용하여 JDBC 드라이버 구성에 대한 자세한 내용은 JBoss EAP 구성 가이드의 JDBC 드라이버를 참조하십시오.

프로비저닝된 서버에 추가하려는 경우 이러한 드라이버 및 데이터 소스를 설치할 사용자 지정 계층도 만들 수 있습니다.

8.6.1.1. 데이터 소스 구성 환경 변수

다른 데이터 소스 속성을 구성하려면 다음 환경 변수를 사용합니다.

중요

다음 변수 이름에 있는 POOLNAME, DATABASETYPEPREFIX 의 값을 적절한 값으로 교체해야 합니다. 이러한 교체 가능한 값은 이 섹션과 Datasources 섹션에 설명되어 있습니다.

변수 이름설명

POOLNAME_DATABASETYPE_SERVICE_HOST

데이터 소스의 connection-url 속성에서 사용할 데이터베이스 서버의 호스트 이름 또는 IP 주소를 정의합니다.

값 예: 192.168.1.3

POOLNAME_DATABASETYPE_SERVICE_PORT

데이터 소스에 대한 데이터베이스 서버의 포트를 정의합니다.

값 예: 5432

PREFIX_BACKGROUND_VALIDATION

true 데이터베이스 커넥션으로 설정하면 를 사용하기 전에 백그라운드 스레드에서 주기적으로 유효성을 검사합니다. 기본값은 false 입니다. 즉, validate-on-match 메서드가 기본적으로 활성화되어 있습니다.

PREFIX_BACKGROUND_VALIDATION_MILLIS

background-validation 데이터베이스 연결 유효성 검사 메커니즘이 활성화된 경우 유효성 검사 빈도(밀리초)를 지정합니다(PREFIX_BACKGROUND_VALIDATION 변수가 true로 설정됨). 기본값은 10000 입니다.

PREFIX_CONNECTION_CHECKER

사용 중인 특정 데이터베이스에 대한 연결을 확인하는 데 사용되는 연결 검사기 클래스를 지정합니다.

예제 값: org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker

PREFIX_DATABASE

데이터 소스의 데이터베이스 이름을 정의합니다.

값 예: myDatabase

PREFIX_DRIVER

데이터 소스에 대한 Java 데이터베이스 드라이버를 정의합니다.

값 예: postgresql

PREFIX_EXCEPTION_SORTER

치명적인 데이터베이스 연결 예외 후 올바르게 감지 및 정리하는 데 사용되는 예외 분류기 클래스를 지정합니다.

예제 값: org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter

PREFIX_JNDI

데이터 소스의 JNDI 이름을 정의합니다. 기본값은 java:jboss/datasources/POOLNAME_DATABASETYPE 으로, 여기서 POOLNAMEDATABASETYPE 은 위에서 설명한 Triplet에서 가져옵니다. 이 설정은 생성된 기본 JNDI 이름을 재정의하려는 경우에 유용합니다.

예제 값: java:jboss/datasources/test-postgresql

PREFIX_JTA

비 XA 데이터 소스에 대한 Jakarta Transactions 옵션을 정의합니다. XA 데이터 소스는 기본적으로 사용할 수 있는 자카르타 트랜잭션입니다.

기본값은 true 입니다.

PREFIX_MAX_POOL_SIZE

데이터 소스에 대한 최대 풀 크기 옵션을 정의합니다.

값 예: 20

PREFIX_MIN_POOL_SIZE

데이터 소스에 대한 최소 풀 크기 옵션을 정의합니다.

값 예: 1

PREFIX_NONXA

데이터 소스를 비 XA 데이터 소스로 정의합니다. 기본값은 false입니다.

PREFIX_PASSWORD

데이터 소스의 암호를 정의합니다.

값 예: password

PREFIX_TX_ISOLATION

데이터 소스의 java.sql.Connection 트랜잭션 격리 수준을 정의합니다.

값 예: TRANSACTION_READ_UNCOMMITTED

PREFIX_URL

데이터 소스의 연결 URL을 정의합니다.

예제 value: jdbc:postgresql://localhost:5432/postgresdb

PREFIX_USERNAME

데이터 소스의 사용자 이름을 정의합니다.

값 예: admin

OpenShift에서 이 이미지를 실행하는 경우 POOLNAME_DATABASETYPE_SERVICE_HOSTPOOLNAME_DATABASETYPE_SERVICE_PORT 환경 변수는 OpenShift 애플리케이션 템플릿의 데이터베이스 서비스 정의에서 자동으로 설정되며 템플릿에 있는 다른 항목은 각 포드 템플릿의 컨테이너 정의의 env 항목으로 직접 구성됩니다.

8.6.1.2. 예제

이 예에서는 DB_SERVICE_PREFIX_MAPPING 환경 변수의 값이 데이터 소스 생성에 어떤 영향을 주는지 보여줍니다.

8.6.1.2.1. 단일 매핑

test-postgresql=TEST 값을 고려합니다.

그러면 java:jboss/datasources/test_postgresql 이름을 사용하여 데이터 소스가 생성됩니다. 또한 password 및 username과 같은 모든 필수 설정은 TEST_ 접두사가 있는 환경 변수로 제공되어야 합니다(예: TEST_USERNAMETEST_PASSWORD ).

8.6.1.2.2. 다중 매핑

여러 데이터 소스 매핑을 지정할 수 있습니다.

참고

항상 여러 데이터 소스 매핑을 쉼표로 구분합니다.

DB_SERVICE_PREFIX_MAPPING 환경 변수 cloud-postgresql=CLOUD,test-mysql=TEST_MYSQL 의 값을 고려합니다.

이렇게 하면 다음과 같은 두 개의 데이터 소스가 생성됩니다.

  1. java:jboss/datasources/test_mysql
  2. java:jboss/datasources/cloud_postgresql

그런 다음 TEST_MYSQL 접두사를 사용하여 MySQL 데이터 소스의 사용자 이름 및 암호(예: TEST_MYSQL_USERNAME )를 구성할 수 있습니다. PostgreSQL 데이터 소스의 경우 CLOUD_ 접두사(예: CLOUD_ USERNAME )를 사용합니다.