我知道这个错误有很多主题,但我仍然遇到一些问题。
我实际上是在尝试在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>
如果有人能够解释我做错了什么,或者只是给我一个线索,那将非常受欢迎......
答案 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&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"/>