jboss 7 oracle datasource configuration
Asked Answered
P

7

12

I'm currently migrating from jboss 4.3 to jboss 7.1.1 (Final) and i'm trying to configure an oracle datasource but it's not working. Following is what I've done to setup an oracle datasource

1)Downloaded ojdbc6-11.jar and placed it inside the folder $JBOSS_HOME/modules/com/oracle/ojdbc6/main

2)Created the file module.xml under $JBOSS_HOME/modules/com/oracle/ojdbc6/main and this is the content of the file

<module xmlns="urn:jboss:module:1.0" name="com.oracle.ojdbc6">
  <resources>
    <resource-root path="ojdbc6.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
  </dependencies>
</module>

3)Added the following driver and datasource inside standalone.xml

<drivers>
  <driiver name="oracle" module="com.oracle.ojdbc6">
    <xa-datasource-class>oracle.jdbc.OracleDriver</xa-datasource-class>
  </driver>
</drivers>

<datasource jndi-name="java:/Altis" pool-name="Altis" enabled="true" use-java-context="true">
  <connection-url>connurl</connection-url>
  <driver>oracle</driver>
  <security>
    <user-name>username</user-name>
    <password>passwd</password>
  </security>
</datasource>
</datasources>

However, when I deploy my war file, i get the following error

16:54:43,281 INFO  [org.jboss.as.server] (HttpManagementService-threads - 2) JBA
S015870: Deploy of deployment "altisavante.war" was rolled back with failure mes
sage {"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.na
ming.context.java.module.altisavante.altisavante.env.Altisjboss.naming.context.j
ava.AltisMissing[jboss.naming.context.java.module.altisavante.altisavante.env.Al
tisjboss.naming.context.java.Altis]"]}

Am I missing anything?

Psi answered 21/8, 2012 at 7:7 Comment(0)
A
19

Here's a link about the data source configuration for JBoss 7 that of course work with 7.1

https://community.jboss.org/wiki/DataSourceConfigurationInAS7

The example is configuring a MySQL example.
This is what i did for an Oracle Driver

<datasource jndi-name="java:/sigap_ws_receiver" pool-name="sigap_ws_receiver" enabled="true">
    <connection-url>jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=off)(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.1)(PORT=1524))(CONNECT_DATA=(SERVICE_NAME=profepa)(SERVER=DEDICATED)))</connection-url>
    <driver>com.oracle</driver>
    <pool>
        <min-pool-size>3</min-pool-size>
        <max-pool-size>5</max-pool-size>
    </pool>
    <security>
        <user-name>user</user-name>
        <password>pass</password>
    </security>
    <validation>
        <exception-sorter class-name="org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter"/>
    </validation>
    <timeout>
        <blocking-timeout-millis>5000</blocking-timeout-millis>
        <idle-timeout-minutes>5</idle-timeout-minutes>
    </timeout>
</datasource>

The driver's section would look like this:

<drivers>
    <driver name="com.oracle" module="com.oracle">
        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    </driver>
</drivers>

My module.xml is under $JBOSS_HOME\modules\com\oracle\main within the jar ojdbc6.jar:

<module xmlns="urn:jboss:module:1.0" name="com.oracle">
    <resources>
        <resource-root path="ojdbc6.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
    </dependencies>
</module>
Antilogy answered 19/12, 2012 at 18:3 Comment(0)
P
4

All of these answers helped me to get it to works, but none of them was the exact solution so I thought I would add mine.

First, note that you can do this either in the JBoss web-console or by manually configuring the datasource in the xml files. However, I highly suggest that you configure it through the web-console to avoid error such as the one the OP made and that apparently no-one noticed :

<drivers>
  <driiver name="oracle" module="com.oracle.ojdbc6">
    <xa-datasource-class>oracle.jdbc.OracleDriver</xa-datasource-class>
  </driver>
</drivers>

Notice that the driver declaration contains two i.

Manual configuration [Not recommended]

First of all, you must make sure your Oracle jdbc is configured.

  • Navigate to $JBOSS_HOME/modules and if it does not already exists, create folder tree oracle/jdbc/main.
  • Navigate to that folder and copy the odjbc6-11.jar.
  • Create module.xml with the following content
<module>
    <resources>
        <!-- make sure the path match the name of the file -->
        <resource-root path="ojdbc6-11.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

Now that your jdbc is configured, you must edit the standalone.xml file to specify the driver and datasource properties.

  • Navigate to $JBOSS_HOME/standalone/configuration and edit standalone.xml file.
  • Locate the drivers tag and configure your driver as follow :
<driver name="oracle" module="oracle.jdbc">
    <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
  • Now add the datasource configuration :
<datasource jndi-name="java:jboss/datasources/Altis" pool-name="Altis" enabled="true">
  <connection-url>jdbc:oracle:thin:@255.255.255.255:1521:sid</connection-url>
  <driver-class>oracle.jdbc.OracleDriver</driver-class>
  <driver>oracle</driver>
  <security>
    <user-name>username</user-name>
    <password>passwd</password>
  </security>
</datasource>

Online configuration [Recommended]

  • Navigate to the management console (by default localhost:9990/console)
  • Click on Configuration and expand Datasources in Connector
  • Click on add (first button on right of the datasources table)
  • Fill in the Name, in your case Altis
  • Fill in the JNDI name, in your case java:jboss/datasources/Altis. Note that JNDI name has to start with java:/ or java:jboss/
  • Select your driver, it should be in the detected driver if it was properly configured.
  • Fill in the connection url as jdbc:oracle:thin:@255.255.255.255:1521:sid
  • Fill in the username and password.
  • You can left empty the security domain if you want or specify one.
  • Make sure you test the connection before clicking on Done.
  • Once the datasource is saved, select it in the table and click on Enable
Pitchfork answered 8/12, 2014 at 18:4 Comment(0)
R
1

In the module.xml jar, you have path="ojdbc6.jar" for the resource-root tag, but you said you downloaded ojdbc6-11.jar

I think you need to have path="ojdbc6-11.jar" in your module.xml

Rask answered 15/1, 2014 at 19:18 Comment(0)
I
0

Try using driver-class in the driver as <driver-class>oracle.jdbc.OracleDriver</driver-class>

Ium answered 23/8, 2012 at 21:57 Comment(0)
P
0

verify $JBOSS_HOME\modules\system\layers\base\com\oracle\ojdbc6\main exists and have ojdbcXX.jar and module.xml Module name="com.oracle.ojdbc" in module.xml should match with module="com.oracle.ojdbc" in standalone.xml

e.g. module.xml -->

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="**com.oracle.ojdbc6**">
    <resources>
        <resource-root path="ojdbc6.jar"/>
        <!-- Insert resources here -->
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
    </dependencies>
</module>
standalone.xml -->

<datasource jndi-name="java:/abc" pool-name="abc" enabled="true" use-java-context="true">
                    <connection-url>jdbc:oracle:thin:@localhost:1521:orcl</connection-url>
                    <driver>**oracle**</driver>
                    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
                    <security>
                        <user-name>a_user</user-name>
                        <password>pwdXXX</password>
                    </security>
                </datasource>

                <drivers>
                    <driver name="**oracle**" module="**com.oracle.ojdbc6**">
                    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
                    <xa-datasource-class>oracle.jdbc.driver.OracleDriver</xa-datasource-class>
                    </driver>
                    </driver>
Parsaye answered 16/4, 2014 at 19:28 Comment(0)
J
0

On top of Jean-François Savard's manual solution I as well excluded jars from jboss-deployment-structure.xml, only then i managed to get it up and running. Just logging here as this might help others.Example of my jboss-deployment-structure.xml is below

enter code here

<!--exclude-subsystems>
<subsystem name="jpa" />
</exclude-subsystems-->
<!--http://mca.intranet.barclays.co.uk/confluence/display/MCA/Changes+required+in+MCA+for+aPaaS-->

<exclusions>
    <module name="org.codehaus.jackson.jackson-core-asl" />
    <module name="org.codehaus.jackson.jackson-mapper-asl" />
    <module name="org.apache.log4j" />
    <module name="javax.persistence.api" />
    <module name="org.hibernate" />

</exclusions>
    <dependencies>

        <module name="javax.activation.api" export="true"/>
        <module name="javax.annotation.api" export="true"/>
        <module name="javax.ejb.api" export="true"/>
        <module name="javax.el.api" export="true"/>
        <module name="javax.enterprise.api" export="true"/>
        <module name="javax.enterprise.deploy.api" export="true"/>
        <module name="javax.inject.api" export="true"/>
        <module name="javax.interceptor.api" export="true"/>
        <module name="javax.jms.api" export="true"/>
        <module name="javax.jws.api" export="true"/>
        <module name="javax.mail.api" export="true"/>
        <module name="javax.management.j2ee.api" export="true"/>

        <module name="javax.resource.api" export="true"/>
        <module name="javax.rmi.api" export="true"/>
        <module name="javax.security.auth.message.api" export="true"/>
        <module name="javax.security.jacc.api" export="true"/>
        <module name="javax.servlet.api" export="true"/>
        <module name="javax.servlet.jsp.api" export="true"/>
        <module name="javax.transaction.api" export="true"/>
        <module name="javax.validation.api" export="true"/>
        <module name="javax.ws.rs.api" export="true"  services="export"/>
        <module name="javax.xml.bind.api" export="true"/>
        <module name="javax.xml.registry.api" export="true"/>
        <module name="javax.xml.soap.api" export="true"/>
        <module name="javax.xml.ws.api" export="true"/>
        <module name="org.jboss.as.jmx" />
        <!--module name="ibm.mq" /-->
        <module name="javax.api" export="true"/>

    </dependencies>
</deployment>

Jacquelyn answered 17/5, 2016 at 7:57 Comment(0)
B
0

Goto console panel of JBoss AS. Enter the username and password of the user that you have created with the help of adduser.bat. Then a page will appear regarding all the configurations. Now follow the given below steps:

1) Go to profile

2) Select datasources from left hand side pane

3) Then click on add button in datasource section

4) Provide the details such as name, jndi name, etc.

  • Name: OracleDS
  • Jndi: java:jboss/datasources/OracleDS

5) Click on next button

6) Chose the driver that you have deployed in jboss with the help of standalone.xml

7) Click on next button

8) Now fill the details...

  • connection url: jdbc:oracle:thin:@[host]:1521:[sid]
  • username: [user]
  • password: [pass]
  • security domain: leave it blank

9) Click on done.

Now a message will appear that "Datasource added successfully".

That's it....!!!

Block answered 24/5, 2016 at 9:14 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.