【问题标题】:Jboss 7 - Oracle Datasource not workingJboss 7 - Oracle 数据源不工作
【发布时间】:2012-09-13 23:08:50
【问题描述】:

我正在开发一个只有一个 WAR 项目的 Web 应用程序。它使用 JPA 并有一个数据源,我需要配置它才能在 JBOSS 7 上运行。数据库是 Oracle。

我收到此错误:

JBAS014775:    New missing/unsatisfied dependencies:
      service jboss.naming.context.java.jboss.resources.jboss.jdbc.batchAdminDB

我已按照说明在 Jboss 上使用 dataSource。所以我有这些配置:

{JBOSS_HOME}/modules/com/oracle/ojdbc6/main/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"/>
    </resources>
    <dependencies>
        <module name="javax.api" />
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
    </dependencies>
</module>

ojdbc6.jar 存在且名称正确。

standalone.xml

<datasources>

                <datasource jndi-name="java:jboss/jdbc/batchAdminDB" pool-name="batchAdminDB" enabled="true" use-java-context="true">
                    <connection-url>jdbc:oracle:thin:@HOST:PORT/xe</connection-url>
                    <driver>oracle</driver>
                    <security>
                        <user-name>USER</user-name>
                        <password>PASSW</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="oracle" module="com.oracle.ojdbc6">
                        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
                        <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>

在应用程序上: META-INF/persistence.xml:

<persistence-unit name="batchAdminEM" transaction-type="JTA">
    <jta-data-source>java:jboss/jdbc/batchAdminDB</jta-data-source>

    <class>...</class>
 ...</persistence-unit>

当 Jboss 启动(没有应用程序)时,它会读取(绑定)数据源。当我尝试部署应用程序时出现错误,它没有运行。

更多 StackTrace 的帮助:

15:57:46,888 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) JBAS010400: Bound data source [java:jboss/jdbc/batchAdminDB]
...
15:57:52,356 INFO  [org.hibernate.ejb.Ejb3Configuration] (MSC service thread 1-2) HHH000204: Processing PersistenceUnitInfo [
    name: batchAdminEM
    ...]
15:57:53,649 ERROR [org.jboss.as] (MSC service thread 1-1) JBAS015875: JBoss AS 7.1.1.Final "Brontes" started (with errors) in 13255ms - Started 325 of 568 services (165 services failed or missing dependencies, 76 services are passive or on-demand)
15:57:53,861 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "BatchAdmin.war" was rolled back with failure message {"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.module.BatchAdmin.BatchAdmin.env.jboss.jdbc.batchAdminDBjboss.naming.context.java.jboss.resources.jboss.jdbc.batchAdminDBMissing[jboss.naming.context.java.module.BatchAdmin.BatchAdmin.env.jboss.jdbc.batchAdminDBjboss.naming.context.java.jboss.resources.jboss.jdbc.batchAdminDB]"]}
JBAS014775:    New missing/unsatisfied dependencies:
      service jboss.naming.context.java.jboss.resources.jboss.jdbc.batchAdminDB (missing) dependents: [service jboss.naming.context.java.module.BatchAdmin.BatchAdmin.env.jboss.jdbc.batchAdminDB] 

15:57:53,934 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.module.BatchAdmin.BatchAdmin.env.jboss.jdbc.batchAdminDBjboss.naming.context.java.jboss.resources.jboss.jdbc.batchAdminDBMissing[jboss.naming.context.java.module.BatchAdmin.BatchAdmin.env.jboss.jdbc.batchAdminDBjboss.naming.context.java.jboss.resources.jboss.jdbc.batchAdminDB]"]}}}

【问题讨论】:

标签: oracle persistence datasource jboss7.x ojdbc


【解决方案1】:

您使用了错误的连接 URL 格式。使用xe 作为 SID,您必须使用:

jdbc:oracle:thin:@HOST:PORT:xe

或

jdbc:oracle:thin:@//HOST:PORT/xe

查看here了解更多信息。

添加

您还必须以这种方式更改 module.xml 文件中的一行:

<module xmlns="urn:jboss:module:1.0" name="com.oracle.ojdbc6">

【讨论】:

  • 嗨,雷扎。我已经按你说的改了,但错误还是一样。
  • 嗨@Reicardo,我想我前段时间遇到了同样的问题,这是因为我的module.xml 文件中有一些多余的空格。我最终从一个工作模块中复制了一个文件,然后仔细更改了内容,以免添加任何额外的空格。此外,我认为正确的驱动程序类名必须是“oracle.jdbc.OracleDriver”。试试这两个,看看接下来会发生什么。
  • 感谢@Reza 的帮助。我重新检查了每个配置文件中的字符串。他们都还好。我还更改了 oracle 驱动程序类。问题仍然存在
  • @Ricardo:您也应该更改 module.xml 文件。见上文!
【解决方案2】:

找了好久才发现问题所在。

web.xml 包含之前在 Tomcat 上使用的配置。

<resource-ref>
  <description>DB Connection</description>
  <res-ref-name>jboss/jdbc/batchAdminDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>

这个配置可能让 Jboss 感到困惑。没有必要了。

解决办法:
只需评论或删除该部分(resource-ref)。

一个有用的链接(葡萄牙语):
http://www.guj.com.br/java/256103-resolvido-seam-3--hibernate-4--jbossas7-erro-de-datasource

【讨论】:

    猜你喜欢
    • 2014-01-05
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多