我正在尝试在jboss EAP 6.3中部署一个耳朵,但我收到了以下错误:
JBAS014775: New missing/unsatisfied dependencies:
service jboss.naming.context.java.jdbc.mn572phOraDataSource (missing) dependents: [service jboss.naming.context.java.module.pharma.pharma.env.jdbc.mn572phOraDataSource]
service jboss.naming.context.java.jdbc.mn572phaOraDataSource (missing) dependents: [service jboss.naming.context.java.module.pharma.pharma.env.jdbc.mn572phaOraDataSource]
15:01:38,171 ERROR [org.jboss.as] (Controller Boot Thread) JBAS015875: JBoss EAP 6.3.0.GA (AS 7.4.0.Final-redhat-19) started (with errors) in 66301ms - Started 462 of 659 services (160 services failed or missing dependencies, 64 services are lazy, passive or on-demand)
我的standlone.xml文件有这个条目:
<datasource jndi-name="java:/module/env/jdbc/mn572phOraDataSource" pool-name="mn572phOraDataSource" enabled="true" use-java-context="true">
<connection-url>jdbc:oracle:thin:@test:1521:mndb11g</connection-url>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<security>
<user-name>test</user-name>
<password>test</password>
</security>
</datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
<driver name="oracle.jdbc.driver.OracleDriver" module="oracle.jdbc.driver.OracleDriver">
<datasource-class>oracle.jdbc.driver.OracleDriver</datasource-class>
</driver>
</drivers>
</datasources>
我在.war文件中的jboss-web.xml有以下条目:
<resource-ref>
<res-ref-name>jdbc/mn572phaOraDataSource</res-ref-name>
<jndi-name>java:/jdbc/mn572phaOraDataSource</jndi-name>
</resource-ref>
任何人都可以解释错误说明的内容以及问题所在。
答案 0 :(得分:0)
通常,“新的缺失/不满足的依赖关系:”是关于ear文件中与其中的资源相关并在服务器上提供的内容。它告诉你的是,有人要求注射你没有提供的对象:
这可能是由我能想到的六件事引起的。
第二点非常复杂,它涉及Java EE应用程序中类加载器的范围。基本上是:
<强>更新强> 很抱歉延迟回复,但我想在我回复之前检查这个,因为这个区域非常复杂。
在这种情况下,问题是您在jboss-web.xml中提供的名称与您在standalone.xml中提供的名称不匹配。
JavaEE6有几个不同的资源名称空间。
jboss-web.xml的默认命名空间是模块命名空间,它用作java:module /// XXXXX。在您的情况下,您的模块是您的war文件(pharma),除非您实际在名为pharma JB的耳朵文件中定义它,否则JBOSS会自动将其包装在名为pharma的ear文件中。所以你得到java:module/pharma/pharma/XXXXXX
。
standalone.xml
的默认命名空间为java:global
,因此您的实际数据源可能安装在java:global/module/env/jdbc/mn572phaOraDataSource
我试图用你提供的配置文件运行一个小的webapp应用程序并为映射提供资源我添加了@Singleton @Startup
bean,定义了Datasource
{{1}的链接}。
虽然不是完全
,但我设法得到类似于您的错误消息的内容我认为有两个问题:
@Resource
与standalone.xml中的java:/jdbc/mn572phaOraDataSource
不匹配。我通过将standalone.xml中的名称更改为java:/module/env/jdbc/mn572phOraDataSource
来实现它。