Add Oracle DB datasource to JBoss

:heavy_exclamation_mark: This post is older than a year. Consider some information might not be accurate anymore. :heavy_exclamation_mark:

This post demonstrates how to establish a data-source configuration for JBoss EAP with the Oracle DB.

Dump the contents of the help command to help.txt

[standalone@localhost:9999 /] data-source --help --properties > help.txt

The contents

 --name                 - Required argument in commands which identifies the
                          instance to execute the command against.
 --share-prepared-statements  - (BOOLEAN,read-write) Whether to share prepared
                                statements, i.e. whether asking for same
                        statement twice without closing uses the same underlying
                        prepared statement
 --driver-class         - (STRING,read-write) The fully qualified name of the
                          JDBC driver class
 --prepared-statements-cache-size  - (LONG,read-write) The number of prepared
                                     statements per connection in an LRU cache
 --spy                  - (BOOLEAN,read-write) Enable spying of SQL statements
 --password             - (STRING,read-write) Specifies the password used when
                          creating a new connection
 --max-pool-size        - (INT,read-write) The max-pool-size element specifies
                          the maximum number of connections for a pool. No more
                        connections will be created in each sub-pool
 --set-tx-query-timeout  - (BOOLEAN,read-write) Whether to set the query timeout
                           based on the time remaining until transaction
                        timeout. Any configured query timeout will be used if
                        there is no transaction
 --jndi-name            - (STRING,read-write) Specifies the JNDI name for the
 --url-delimiter        - (STRING,read-write) Specifies the delimiter for URLs
                          in connection-url for HA datasources
 --enabled              - (BOOLEAN,read-write) Specifies if the datasource
                          should be enabled. Note this attribute will not be
                        supported runtime in next versions.
 --connectable          - (BOOLEAN,read-write) Enable the use of CMR. This
                          feature means that a local resource can reliably
                        participate in an XA transaction.
 --blocking-timeout-wait-millis  - (LONG,read-write) The blocking-timeout-millis
                                   element specifies the maximum time, in
                        milliseconds, to block while waiting for a connection
                        before throwing an exception. Note that this blocks only
                        while waiting for locking a connection, and will never
                        throw an exception if creating a new connection takes an
                        inordinately long time
 --statistics-enabled   - (BOOLEAN,read-write) define if runtime statistics is
                          enabled or not.
 --pool-use-strict-min  - (BOOLEAN,read-write) Specifies if the min-pool-size
                          should be considered strictly
 --validate-on-match    - (BOOLEAN,read-write) The validate-on-match element
                          specifies if connection validation should be done when
                        a connection factory attempts to match a managed
                        connection. This is typically exclusive to the use of
                        background validation
 --transaction-isolation  - (STRING,read-write) Set the java.sql.Connection
                            transaction isolation level. Valid values are:
 --jta                  - (BOOLEAN,read-write) Enable JTA integration
 --valid-connection-checker-class-name  - (STRING,read-write) An
                        ctionChecker that provides an
                        isValidConnection(Connection) method to validate a
                        connection. If an exception is returned that means the
                        connection is invalid. This overrides the
                        check-valid-connection-sql element
 --allocation-retry-wait-millis  - (LONG,read-write) The allocation retry wait
                                   millis element specifies the amount of time,
                        in milliseconds, to wait between retrying to allocate a
 --exception-sorter-properties  - (OBJECT,read-write) The exception sorter
 --background-validation-millis  - (LONG,read-write) The
                                   background-validation-millis element
                        specifies the amount of time, in milliseconds, that
                        background validation will run. Changing this value can
                        be done only on disabled datasource,  requires a server
                        restart otherwise
 --track-statements     - (STRING,read-write) Whether to check for unclosed
                          statements when a connection is returned to the pool,
                        result sets are closed, a statement is closed or return
                        to the prepared statement cache. Valid values are:
                        "false" - do not track statements, "true" - track
                        statements and result sets and warn when they are not
                        closed, "nowarn" - track statements but do not warn
                        about them being unclosed
 --use-fast-fail        - (BOOLEAN,read-write) Whether to fail a connection
                          allocation on the first try if it is invalid (true) or
                        keep trying until the pool is exhausted of all potential
                        connections (false)
 --flush-strategy       - (STRING,read-write) Specifies how the pool should be
                          flush in case of an error. Valid values are:
                        FailingConnectionOnly (default), IdleConnections and
 --stale-connection-checker-class-name  - (STRING,read-write) An
                        ctionChecker that provides an
                        isStaleConnection(SQLException) method which if it
                        returns true will wrap the exception in an
 --exception-sorter-class-name  - (STRING,read-write) An
                        that provides an isExceptionFatal(SQLException) method
                        to validate if an exception should broadcast an error
 --background-validation  - (BOOLEAN,read-write) An element to specify that
                            connections should be validated on a background
                        thread versus being validated prior to use. Changing
                        this value can be done only on disabled datasource,
                        requires a server restart otherwise.
 --check-valid-connection-sql  - (STRING,read-write) Specify an SQL statement to
                                 check validity of a pool connection. This may
                        be called when managed connection is obtained from the
 --reauth-plugin-class-name  - (STRING,read-write) The fully qualified class
                               name of the reauthentication plugin
 --allow-multiple-users  - (BOOLEAN,read-write) Specifies if multiple users will
                           access the datasource through the getConnection(user,
                        password) method and hence if the internal pool type
                        should account for that
 --url-selector-strategy-class-name  - (STRING,read-write) A class that
 --user-name            - (STRING,read-write) Specify the user name used when
                          creating a new connection
 --use-ccm              - (BOOLEAN,read-write) Enable the use of a cached
                          connection manager
 --reauth-plugin-properties  - (OBJECT,read-write) The properties for the
                               reauthentication plugin
 --driver-name          - (STRING,read-write) Defines the JDBC driver the
                          datasource should use. It is a symbolic name matching
                        the the name of installed driver. In case the driver is
                        deployed as jar, the name is the name of deployment unit
 --stale-connection-checker-properties  - (OBJECT,read-write) The stale
                                          connection checker properties
 --datasource-class     - (STRING,read-write) The fully qualified name of the
                          JDBC datasource class
 --idle-timeout-minutes  - (LONG,read-write) The idle-timeout-minutes elements
                           specifies the maximum time, in minutes, a connection
                        may be idle before being closed. The actual maximum time
                        depends also on the IdleRemover scan time, which is half
                        of the smallest idle-timeout-minutes value of any pool.
                        Changing this value can be done only on disabled
                        datasource, requires a server restart otherwise.
 --query-timeout        - (LONG,read-write) Any configured query timeout in
                          seconds. If not provided no timeout will be set
 --use-java-context     - (BOOLEAN,read-write) Setting this to false will bind
                          the datasource into global JNDI
 --valid-connection-checker-properties  - (OBJECT,read-write) The valid
                                          connection checker properties
 --min-pool-size        - (INT,read-write) The min-pool-size element specifies
                          the minimum number of connections for a pool
 --allocation-retry     - (INT,read-write) The allocation retry element
                          indicates the number of times that allocating a
                        connection should be tried before throwing an exception
 --security-domain      - (STRING,read-write) Specifies the security domain
                          which defines the javax.security.auth.Subject that are
                        used to distinguish connections in the pool
 --new-connection-sql   - (STRING,read-write) Specifies an SQL statement to
                          execute whenever a connection is added to the
                        connection pool
 --connection-url       - (STRING,read-write) The JDBC driver connection URL
 --use-try-lock         - (LONG,read-write) Any configured timeout for internal
                          locks on the resource adapter objects in seconds
 --pool-prefill         - (BOOLEAN,read-write) Should the pool be prefilled.
                          Changing this value can be done only on disabled
                        datasource, requires a server restart otherwise.

Add driver modules

#    _     _ _
#   (_) __| | |__   ___
#   | |/ _` | '_ \ / __|
#   | | (_| | |_) | (__
#  _/ |\__,_|_.__/ \___|
# |__/
# install jdbc driver with i18n
# module remove --name=com.oracle.jdbc6
# module remove --name=com.oracle.orai18n
module add --name=com.oracle.jdbc6 \
    --resources=${deploy.dir}/deploy/jdbc/ojdbc6-11203.jar \
module add --name=com.oracle.orai18n \

Add datasource

#      _       _
#   __| | __ _| |_ __ _ ___  ___  _   _ _ __ ___ ___
#  / _` |/ _` | __/ _` / __|/ _ \| | | | '__/ __/ _ \
# | (_| | (_| | || (_| \__ \ (_) | |_| | | | (_|  __/
#  \__,_|\__,_|\__\__,_|___/\___/ \__,_|_|  \___\___|
/subsystem=datasources/jdbc-driver=oracle:add( \
    driver-name=oracle, \
    driver-module-name=com.oracle.jdbc6, \
# pool-name will be demo
/subsystem=datasources/data-source=demo:add( \
    jta=true, \
    jndi-name=java:jboss/datasources/demo, \
    enabled=true, \
    use-java-context=true, \
    use-ccm=true, \
    connection-url=${jdbc.url}, \
    driver-name=oracle, \
    transaction-isolation=TRANSACTION_READ_COMMITTED, \
    min-pool-size=1, \
    max-pool-size=10, \
    pool-prefill=true, \
    flush-strategy=FailingConnectionOnly, \
    user-name=scott, \
    password=tiger, \
    check-valid-connection-sql="SELECT 1 FROM DUAL")
Please remember the terms for blog comments.