2012-09-21 53 views
0

我正在使用一个WAR项目来开发Web应用程序。它使用JPA,并有一个数据源,我需要配置运行在JBOSS 7。该数据库是OracleJboss 7 - Oracle数据源不起作用

我得到这个错误:使用JBoss的数据源

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

我跟着指示。所以,我有以下配置:

{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时开始(不应用程序)也能读到(绑定)数据源。我尝试部署应用程序时出现错误,但无法运行。

更多堆栈跟踪,以帮助:

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

我见过http://stackoverflow.com/questions/9481510/deploying-ejb-over-jboss-7-1,HTTP://堆栈溢出。com/questions/10102826 /无法定义-oracle-datasource-on-jboss-as-7等,但没有一个然后为我工作 –

回答

0

后很长一段时间,我发现是什么问题。

的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

0

你使用了错误的连接URL格式。随着xe的SID,您必须使用:

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

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

检查here以获取更多信息。

ADD

你也必须改变一条线在module.xml文件中这样说:

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

嗨Reza。我已经按照你的说法改变了它,但错误仍然一样。 –

+0

嗨@Reicardo,我想我前一阵子有同样的问题,这是因为我的module.xml文件中有一些额外的不需要的空间。我最终最终从一个工作模块复制了一个文件,然后仔细地更改了内容,以免添加任何额外的空间。另外,我认为正确的Driver类名称必须是“oracle.jdbc.OracleDriver”。试试这两个,看看接下来会发生什么。 – RGO

+0

感谢您帮助@Reza。我重新检查了每个配置文件中的字符串。他们都还好。我也改变了oracle驱动类。问题仍然存在 –