Introduction
This blog explains how to install and use an Oracle database JDBC driver in JBoss EAP 7.1 standalone instance and in a domain deployment.
Oracle JDBC driver installation
The first step is to install the JDBC driver in the JBoss installation. This can be done copying the files to the right directory or using the JBoss CLI to do the install properly.
I will use the JBoss CLI script for this.
Start the JBoss CLI without connecting to any JBoss instance.
/opt/jboss-eap-7.1/bin/jboss-cli.sh
Then use the module add CLI command to install the Oracle JDBC driver to the right place.
module add --name=com.oracle --resources=/home/pascal/jdbc_drivers/ojdbc8.jar --dependencies=javax.api,javax.transaction.api
This will place the driver in the following directory:
$JBOSS_HOME/modules/com/oracle/main
Note: This CLI command has to be run on each host participating to a domain deployment.
Once the module is installed, it can be use to declare the JDBC driver inside the JBoss instance
Create a Data-Source
For a standalone instance using the default profile:
a. Start jboss_cli.sh to connect to the standalone server and declare the JDBC driver in the Jboss instance
/opt/jboss-eap-7.1/bin/jboss-cli.sh -c --controller=192.168.56.21:9990
[standalone@192.168.56.21:9990 /] /subsystem=datasources/jdbc-driver=oracle:add(driver-name=oracle,driver-module-name=com.oracle,driver-xa-datasource-class-name=oracle.jdbc.driver.OracleDriver) {"outcome" => "success"} [standalone@192.168.56.21:9990 /]
b. Confirm the JDBC driver has been declared successfully.
[standalone@192.168.56.21:9990 /] /subsystem=datasources/jdbc-driver=oracle:read-resource { "outcome" => "success", "result" => { "deployment-name" => undefined, "driver-class-name" => undefined, "driver-datasource-class-name" => undefined, "driver-major-version" => undefined, "driver-minor-version" => undefined, "driver-module-name" => "com.oracle", "driver-name" => "oracle", "driver-xa-datasource-class-name" => "oracle.jdbc.driver.OracleDriver", "jdbc-compliant" => undefined, "module-slot" => undefined, "profile" => undefined, "xa-datasource-class" => undefined } }
c. Create the data-source pointing to the Oracle Database
[standalone@192.168.56.21:9990 /] data-source add --name=testOracleDS --jndi-name=java:/jdbc/testOracleDS --driver-name=oracle --connection-url=jdbc:oracle:thin:@vm12:1521/orcl --user-name=scott --password=tiger --jta=true --use-ccm=true --use-java-context=true --enabled=true --user-name=scott --password=tiger --max-pool-size=10 --min-pool-size=5 --flush-strategy="FailingConnectionOnly"
d. Confirm the Datasource creation and parameters.
[standalone@192.168.56.21:9990 /] /subsystem=datasources/data-source=testOracleDS:read-resource { "outcome" => "success", "result" => { "allocation-retry" => undefined, "allocation-retry-wait-millis" => undefined, "allow-multiple-users" => false, "authentication-context" => undefined, "background-validation" => undefined, "background-validation-millis" => undefined, "blocking-timeout-wait-millis" => undefined, "capacity-decrementer-class" => undefined, "capacity-decrementer-properties" => undefined, "capacity-incrementer-class" => undefined, "capacity-incrementer-properties" => undefined, "check-valid-connection-sql" => undefined, "connectable" => false, "connection-listener-class" => undefined, "connection-listener-property" => undefined, "connection-url" => "jdbc:oracle:thin:@vm12:1521/orcl", "credential-reference" => undefined, "datasource-class" => undefined, "driver-class" => undefined, "driver-name" => "oracle", "elytron-enabled" => false, "enabled" => true, "enlistment-trace" => false, "exception-sorter-class-name" => undefined, "exception-sorter-properties" => undefined, "flush-strategy" => "FailingConnectionOnly", "idle-timeout-minutes" => undefined, "initial-pool-size" => undefined, "jndi-name" => "java:/jdbc/testOracleDS", "jta" => true, "max-pool-size" => 10, "mcp" => "org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool", "min-pool-size" => 5, "new-connection-sql" => undefined, "password" => "tiger", "pool-fair" => undefined, "pool-prefill" => undefined, "pool-use-strict-min" => undefined, "prepared-statements-cache-size" => undefined, "query-timeout" => undefined, "reauth-plugin-class-name" => undefined, "reauth-plugin-properties" => undefined, "security-domain" => undefined, "set-tx-query-timeout" => false, "share-prepared-statements" => false, "spy" => false, "stale-connection-checker-class-name" => undefined, "stale-connection-checker-properties" => undefined, "statistics-enabled" => false, "track-statements" => "NOWARN", "tracking" => false, "transaction-isolation" => undefined, "url-delimiter" => undefined, "url-selector-strategy-class-name" => undefined, "use-ccm" => true, "use-fast-fail" => false, "use-java-context" => true, "use-try-lock" => undefined, "user-name" => "scott", "valid-connection-checker-class-name" => undefined, "valid-connection-checker-properties" => undefined, "validate-on-match" => undefined, "connection-properties" => undefined, "statistics" => { "jdbc" => undefined, "pool" => undefined } } }
At this stage, the data-source is available to all applications deployed in the standalone server. I started with the standalone.xml default profile configuration file. To have additional subsystems, an other standalone profile configuration file should be used.
For a JBoss domain using the Full-ha profile
The domain I’m using in my tests is having a domain controller and two slave Hosts running two servers organized in two server groups.
a. Start jboss_cli.sh to connect to the domain master
/opt/jboss-eap-7.1/bin/jboss-cli.sh -c --controller=192.168.56.21:9990
The domain I’m using in my tests is having a domain controller and two slave Hosts running two servers organized in two server groups.
a. Start jboss_cli.sh to connect to the domain master
/opt/jboss-eap-7.1/bin/jboss-cli.sh -c --controller=192.168.56.21:9990
b. Register the Oracle JDBC driver
[domain@192.168.56.21:9990 /] /profile=full-ha/subsystem=datasources/jdbc-driver=oracle:add(driver-name=oracle,driver-module-name=com.oracle,driver-xa-datasource-class-name=oracle.jdbc.driver.OracleDriver) { "outcome" => "success", "result" => undefined, "server-groups" => {"Group2" => {"host" => { "host1" => {"server-two" => {"response" => { "outcome" => "success", "result" => undefined }}}, "host2" => {"server-four" => {"response" => { "outcome" => "success", "result" => undefined }}} }}} } [domain@192.168.56.21:9990 /]
In the JBoss domain I used for the testing, the full-ha profile has been used when creating the Group2 Servers group.
c. Confirm the JDBC driver has been declared successfully.
[domain@192.168.56.21:9990 /] /profile=full-ha/subsystem=datasources/jdbc-driver=oracle:read-resource { "outcome" => "success", "result" => { "deployment-name" => undefined, "driver-class-name" => undefined, "driver-datasource-class-name" => undefined, "driver-major-version" => undefined, "driver-minor-version" => undefined, "driver-module-name" => "com.oracle", "driver-name" => "oracle", "driver-xa-datasource-class-name" => "oracle.jdbc.driver.OracleDriver", "jdbc-compliant" => undefined, "module-slot" => undefined, "profile" => undefined, "xa-datasource-class" => undefined } } [domain@192.168.56.21:9990 /]
d. Create the Data source pointing to the Oracle Database
[domain@192.168.56.21:9990 /] data-source add --profile=full-ha --name=testOracleDS --jndi-name=java:/jdbc/testOracleDS --driver-name=oracle --connection-url=jdbc:oracle:thin:@vm12:1521/orcl --user-name=scott --password=tiger --jta=true --use-ccm=true --use-java-context=true --enabled=true --user-name=scott --password=tiger --max-pool-size=10 --min-pool-size=5 --flush-strategy="FailingConnectionOnly"
e. Confirm the data source has been create correctly
[domain@192.168.56.21:9990 /] /profile=full-ha/subsystem=datasources/data-source=testOracleDS:read-resource { "outcome" => "success", "result" => { "allocation-retry" => undefined, "allocation-retry-wait-millis" => undefined, "allow-multiple-users" => false, "authentication-context" => undefined, "background-validation" => undefined, "background-validation-millis" => undefined, "blocking-timeout-wait-millis" => undefined, "capacity-decrementer-class" => undefined, "capacity-decrementer-properties" => undefined, "capacity-incrementer-class" => undefined, "capacity-incrementer-properties" => undefined, "check-valid-connection-sql" => undefined, "connectable" => false, "connection-listener-class" => undefined, "connection-listener-property" => undefined, "connection-url" => "jdbc:oracle:thin:@vm12:1521/orcl", "credential-reference" => undefined, "datasource-class" => undefined, "driver-class" => undefined, "driver-name" => "oracle", "elytron-enabled" => false, "enabled" => true, "enlistment-trace" => false, "exception-sorter-class-name" => undefined, "exception-sorter-properties" => undefined, "flush-strategy" => "FailingConnectionOnly", "idle-timeout-minutes" => undefined, "initial-pool-size" => undefined, "jndi-name" => "java:/jdbc/testOracleDS", "jta" => true, "max-pool-size" => 10, "mcp" => "org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool", "min-pool-size" => 5, "new-connection-sql" => undefined, "password" => "tiger", "pool-fair" => undefined, "pool-prefill" => undefined, "pool-use-strict-min" => undefined, "prepared-statements-cache-size" => undefined, "query-timeout" => undefined, "reauth-plugin-class-name" => undefined, "reauth-plugin-properties" => undefined, "security-domain" => undefined, "set-tx-query-timeout" => false, "share-prepared-statements" => false, "spy" => false, "stale-connection-checker-class-name" => undefined, "stale-connection-checker-properties" => undefined, "statistics-enabled" => false, "track-statements" => "NOWARN", "tracking" => false, "transaction-isolation" => undefined, "url-delimiter" => undefined, "url-selector-strategy-class-name" => undefined, "use-ccm" => true, "use-fast-fail" => false, "use-java-context" => true, "use-try-lock" => undefined, "user-name" => "scott", "valid-connection-checker-class-name" => undefined, "valid-connection-checker-properties" => undefined, "validate-on-match" => undefined, "connection-properties" => undefined } } [domain@192.168.56.21:9990 /]
At this stage, all servers in the Server group Group2 have been targeted with the data-source and all applications deployed to those servers can use it.
As the data-source has been targeted to the profile, all server groups created with this profile will allow their JBoss servers instances to use it.
Cet article Configuring Oracle DB data source in JBoss EAP 7.1 est apparu en premier sur Blog dbi services.