缺少依赖JBoss AS 7.1.1

时间:2014-05-20 14:29:45

标签: java xml jdbc jboss

我知道这个错误有很多主题,但我仍然遇到一些问题。

我实际上是在尝试在JBoss 7.1.1上部署一场战争,不幸的是我一次又一次地遇到这个错误:

JBAS014775:    New missing/unsatisfied dependencies:
  service jboss.naming.context.java.module.myapplication.myapplication.env.jdbc_app (missing) dependents: [service jboss.naming.context.java.module.myapplication.myapplication.env.jdbc.PKBNM01]

这就是我的DS在standalone.xml中定义的方式(我已经很好地连接到我的数据库):

<datasource jta="false" jndi-name="java:/jdbc/jdbc_app" pool-name="jdbc_app" enabled="true" use-ccm="false">
    <connection-url>jdbc:oracle:thin:@localhost:1521:xe</connection-url>
    <driver-class>oracle.jdbc.OracleDriver</driver-class>
    <driver>ojdbc6.jar</driver>
    <security>
        <user-name>ADMIN</user-name>
        <password>PASSWORD</password>
    </security>
    <validation>
        <validate-on-match>false</validate-on-match>
        <background-validation>false</background-validation>
    </validation>
    <statement>
        <share-prepared-statements>false</share-prepared-statements>
    </statement>
</datasource>

这是jboss-web.xml:

<jboss-web>
       <resource-ref>
           <res-ref-name>jdbc/PKBNM01</res-ref-name>
           <jndi-name>jdbc_app</jndi-name>
       </resource-ref>
       <context-root>myApplication</context-root>
 </jboss-web>

这是我的web.xml:

<resource-ref>
    <res-ref-name>jdbc/PKBNM01</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

如果有人能够解释我做错了什么,或者只是给我一个线索,那将非常受欢迎......

2 个答案:

答案 0 :(得分:2)

很难给出明确的答案,但我可以做一些观察。

1)我从未在jboss-web.xml或web.xml中配置任何内容,以便为JBoss中的应用程序模块提供数据源。 standalone.xml中的数据源声明就足够了

2)官方文档声明您应该创建一个驱动程序模块;我建议你这样做。 https://community.jboss.org/wiki/DataSourceConfigurationInAS7

3)这就是我的数据源的样子(MySQL数据库示例):

<datasource jndi-name="java:jboss/datasources/MyDS" pool-name="MyDS" enabled="true" use-java-context="true">
  <connection-url>jdbc:mysql://localhost:3306/somedatabase?useUnicode=true&amp;characterEncoding=UTF-8</connection-url>
  <driver>mysql</driver>
  <security>
    <user-name>someuser</user-name>
    <password>somepass</password>
  </security>
</datasource>
<drivers>
  <driver name="mysql" module="com.mysql"/>
</drivers>

基本上我只是复制并改编了&#39; ExampleDS&#39;默认情况下位于standalone.xml中。

为了完成,JPA persistence.xml可能看起来像这样;我从中删除了一些垃圾,以达到目的:

<persistence ... version="2.0">  
   <persistence-unit name="MyPU">  
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:jboss/datasources/MyDS</jta-data-source>
      ...
   </persistence-unit>  
</persistence>

所以只是数据源的JNDI名称,因为它在standalone.xml中定义。

希望其中一项观察可以帮助您更进一步。

答案 1 :(得分:0)

更改此行java:jboss/jdbc/而不是java:jboss/datasources

<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/jdbc/OracleDS" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>