[[db_service_prefix_mapping]] ==== JNDI mappings for datasources For each `-=PREFIX` triplet in the `DB_SERVICE_PREFIX_MAPPING` environment variable, a separate datasource will be created by the launch script, which is executed when running the image. The `` will determine the driver for the datasource. Currently, only `postgresql` and `mysql` are supported. The `` parameter can be chosen on you own. Do not use any special characters. NOTE: The first part (before the equal sign) of the `DB_SERVICE_PREFIX_MAPPING` should be lowercase. ===== Database drivers Every image contains Java drivers for MySQL, PostgreSQL and MongoDB databases deployed. Datasources are *generated only for MySQL and PostgreSQL databases*. NOTE: For MongoDB database there are no JNDI mappings created because this is not a SQL database. ===== Datasource configuration environment variables Other datasource properties will be configured from the following environment variables: |=== |Variable name |Description |Example value |`__SERVICE_HOST` |Defines the database server's hostname or IP to be used in the datasource's `connection-url` property. |`192.168.1.3` |`__SERVICE_PORT` |Defines the database server's port for the datasource. |`5432` |`_JNDI` |Defines the JNDI name for the datasource. Defaults to `java:jboss/datasources/_`, where `name` and `database_type` are taken from the triplet described above. This setting is useful if you want to override the default generated JNDI name. |`java:jboss/datasources/test-postgresql` |`_USERNAME` |Defines the username for the datasource. |`admin` |`_PASSWORD` |Defines the password for the datasource. |`password` |`_DATABASE` |Defines the database name for the datasource. |`myDatabase` |`_TX_ISOLATION` |Defines the java.sql.Connection transaction isolation level for the datasource. |`TRANSACTION_READ_UNCOMMITTED` |`_MIN_POOL_SIZE` |Defines the minimum pool size option for the datasource. |`1` |`_MAX_POOL_SIZE` |Defines the maximum pool size option for the datasource. |`20` |=== When running this image in OpenShift, the `__SERVICE_HOST` and `__SERVICE_PORT` environment variables are set up automatically from the database service definition in the OpenShift application template, while the others are configured in the template directly (as `env` entries in container definitions under each pod template). ===== Examples These examples show how value of the `DB_SERVICE_PREFIX_MAPPING` environment variable influences datasource creation. ====== Single mapping Consider value `test-postgresql=TEST`. This will create a datasource with `java:jboss/datasources/test_postgresql` name. Additionally all the required settings like password and username will be expected to be provided as env variables with the `TEST_` prefix, for example `TEST_USERNAME` and `TEST_PASSWORD`. ====== Multiple mappings You can also specify multiple database mappings. Consider following value for the `DB_SERVICE_PREFIX_MAPPING` environment variable: `cloud-postgresql=CLOUD,test-mysql=TEST_MYSQL`. NOTE: Multiple datasource mappings should be separated with comma. This will create two datasources: 1. `java:jboss/datasources/test_mysql`, and 2. `java:jboss/datasources/cloud_postgresql`. MySQL datasource configuration (username, etc) will be expected with the `TEST_MYSQL` prefix, for example `TEST_MYSQL_USERNAME`, whereas for the PostgreSQL datasource it'll expect beexpected with the `CLOUD_` prefix, for example `CLOUD_USERNAME`.