【问题标题】:jboss 7 oracle datasource configurationjboss 7 oracle 数据源配置
【发布时间】:2012-08-16 12:06:46
【问题描述】:

我目前正在从 jboss 4.3 迁移到 jboss 7.1.1 (Final),并且我正在尝试配置 oracle 数据源,但它无法正常工作。以下是我为设置 Oracle 数据源所做的工作

1)下载ojdbc6-11.jar并放在文件夹$JBOSS_HOME/modules/com/oracle/ojdbc6/main中

2)在$JBOSS_HOME/modules/com/oracle/ojdbc6/main下创建了文件module.xml,这是文件的内容

<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)在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>

但是,当我部署我的 war 文件时,我收到以下错误

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]"]}

我错过了什么吗?

【问题讨论】:

    标签: oracle datasource jboss7.x


    【解决方案1】:

    尝试在驱动程序中使用驱动程序类作为 &lt;driver-class&gt;oracle.jdbc.OracleDriver&lt;/driver-class&gt;

    【讨论】:

      【解决方案2】:

      这是一个关于 JBoss 7 的数据源配置的链接,当然适用于 7.1

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

      该示例正在配置一个 MySQL 示例。
      这就是我为 Oracle 驱动程序所做的

      <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>
      

      驱动部分如下所示:

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

      我的 module.xml 位于 jar ojdbc6.jar 中的 $JBOSS_HOME\modules\com\oracle\main 下:

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

      【讨论】:

        【解决方案3】:

        在module.xml jar中,你有path="ojdbc6.jar"作为resource-root标签,但是你说你下载了ojdbc6-11.jar

        我认为你需要在你的 module.xml 中有path="ojdbc6-11.jar"

        【讨论】:

          【解决方案4】:

          验证 $JBOSS_HOME\modules\system\layers\base\com\oracle\ojdbc6\main 存在并且有 ojdbcXX.jar 和 module.xml module.xml 中的 Module name="com.oracle.ojdbc" 应该与standalone.xml 中的 module="com.oracle.ojdbc" 匹配

          例如 模块.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>
          

          【讨论】:

            【解决方案5】:

            所有这些答案都帮助我让它发挥作用,但它们都不是确切的解决方案,所以我想我会添加我的。

            首先,请注意,您可以在JBoss web-console 中执行此操作,也可以通过在 xml 文件中手动配置数据源来执行此操作。但是,我强烈建议您通过网络控制台对其进行配置,以避免错误,例如 OP 制造的错误,而且显然没有人注意到:

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

            请注意,驱动程序声明包含两个 i。

            手动配置[不推荐]

            首先,您必须确保您的 Oracle jdbc 已配置。

            • 导航到$JBOSS_HOME/modules,如果它不存在,则创建文件夹树oracle/jdbc/main
            • 导航到该文件夹​​并复制odjbc6-11.jar
            • 使用以下内容创建module.xml
            <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>
            

            现在您的 jdbc 已配置完毕,您必须编辑 standalone.xml 文件以指定驱动程序和数据源属性。

            • 导航到$JBOSS_HOME/standalone/configuration 并编辑standalone.xml 文件。
            • 找到drivers标签并配置你的驱动程序如下:
            <driver name="oracle" module="oracle.jdbc">
                <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
            </driver>
            
            • 现在添加数据源配置:
            <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>
            

            在线配置[推荐]

            • 导航到管理控制台(默认为 localhost:9990/console)
            • 点击配置并在连接器中展开数据源
            • 单击添加(数据源表右侧的第一个按钮)
            • 填写姓名,在你的情况下Altis
            • 填写 JNDI 名称,在您的情况下为 java:jboss/datasources/Altis。请注意,JNDI 名称必须以 java:/java:jboss/ 开头
            • 选择您的驱动程序,如果配置正确,它应该在检测到的驱动程序中。
            • 连接url填写为jdbc:oracle:thin:@255.255.255.255:1521:sid
            • 填写用户名和密码。
            • 您可以根据需要将安全域留空或指定一个。
            • 确保在单击完成之前测试连接。
            • 保存数据源后,在表格中选择它并单击Enable

            【讨论】:

              【解决方案6】:

              在 Jean-François Savard 的手动解决方案之上,我还从 jboss-deployment-structure.xml 中排除了 jar,然后我才设法启动并运行它。只是在这里登录,因为这可能对其他人有帮助。我的 jboss-deployment-structure.xml 示例如下

              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>
              

              【讨论】:

                【解决方案7】:

                转到 JBoss AS 的控制台面板。输入您在 adduser.bat 的帮助下创建的用户的用户名和密码。然后将出现一个关于所有配置的页面。现在按照以下步骤操作:

                1) 转到个人资料

                2) 从左侧窗格中选择数据源

                3) 然后点击数据源部分的添加按钮

                4) 提供名称、jndi 名称等详细信息。

                • 名称:OracleDS
                • Jndi: java:jboss/datasources/OracleDS

                5) 点击下一步

                6) 在standalone.xml的帮助下选择你在jboss中部署的驱动

                7) 点击下一步

                8) 现在填写详细信息...

                • 连接地址:jdbc:oracle:thin:@[host]:1521:[sid]
                • 用户名:[用户]
                • 密码:[通过]
                • 安全域:留空

                9) 点击完成。

                现在会出现一条消息“数据源添加成功”

                就是这样……!!!

                【讨论】:

                  猜你喜欢
                  • 2012-03-11
                  • 1970-01-01
                  • 2012-09-13
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-04-23
                  • 2014-02-07
                  相关资源
                  最近更新 更多