无法在 JBOSS EAP 6.3 中部署应用程序
Unable to deploy an application in JBOSS EAP 6.3
我正在尝试在 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>
我的 jboss-web.xml 在 .war 文件中有以下条目:
<resource-ref>
<res-ref-name>jdbc/mn572phaOraDataSource</res-ref-name>
<jndi-name>java:/jdbc/mn572phaOraDataSource</jndi-name>
</resource-ref>
任何人都可以解释错误的内容和问题所在。
一般来说 'New missing/unsatisfied dependencies:' 是关于您的 ear 文件的内容与其中的资源以及在服务器上提供的资源的关系。它告诉你的是,有一些你没有提供的对象注入请求:
- 所需的class;或
- 您的服务器中没有配置资源。
这可能是由我能想到的六件事造成的。
- 您错过了 ear 文件中的一个 jar。
- 您在封闭的 jar 文件中有 classes,它们无法访问包含其依赖项的 jar。
- 您有一个包含的 jar 文件 beans.xml 丢失。
- 您的 classes 依赖于服务器中应该安装但尚未安装的模块。
- 您错过了 joss*.xml 文件中第 4 项的依赖声明
- 您的应用程序需要一种资源(例如数据源),而您尚未在服务器中定义。
第二点相当复杂,涉及 class 加载程序在 Java EE 应用程序中的范围。基本上:
- classes in war files 可以访问lib中的普通jar文件。
- EJB jar 可以访问lib 中的jar 文件。
- lib 中的 jar 文件可能无法访问其他两个文件。
更新:
很抱歉延迟回复,但我想在回复之前检查一下,因为这个区域非常复杂。
在这种情况下,问题是您在 jboss-web.xml 中提供的名称与您在 standalone.xml 中提供的名称不匹配。
JavaEE6 有几个不同的资源命名空间。
jboss-web.xml 的默认命名空间是作为 java:module///XXXXX 工作的模块命名空间。在您的情况下,您的模块是您的 war 文件 (pharma),除非您实际在名为 pharma JBOSS 的 ear 文件中定义它,否则它会自动将其包装在名为 pharma 的 ear 文件中。所以你得到 java:module/pharma/pharma/XXXXXX
.
standalone.xml
的默认命名空间是 java:global
因此您的实际数据源可能安装在 java:global/module/env/jdbc/mn572phaOraDataSource
我已经尝试 运行 使用您提供的配置文件构建一个小的 webapp 应用程序,并为映射提供资源我添加了一个 @Singleton @Startup
bean,它定义了 link至 Datasource
@Resource
.
我设法得到了类似于你的错误消息的东西,虽然不完全
我认为有两个问题:
- 一个是你的一些 jndi 名称读作 mn572phOraDataSource,一些读作 mn572phaOraDataSource 你可以在错误消息中看到这个,因为这 2 个变体包含在内。
- 其次是jboss-web中的JNDI名称
java:/jdbc/mn572phaOraDataSource
与standalone.xml中的java:/module/env/jdbc/mn572phOraDataSource
不匹配。我通过将 standalone.xml 中的名称更改为 java:/jdbc/mn572phaOraDataSource
. 使其工作
我正在尝试在 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>
我的 jboss-web.xml 在 .war 文件中有以下条目:
<resource-ref>
<res-ref-name>jdbc/mn572phaOraDataSource</res-ref-name>
<jndi-name>java:/jdbc/mn572phaOraDataSource</jndi-name>
</resource-ref>
任何人都可以解释错误的内容和问题所在。
一般来说 'New missing/unsatisfied dependencies:' 是关于您的 ear 文件的内容与其中的资源以及在服务器上提供的资源的关系。它告诉你的是,有一些你没有提供的对象注入请求:
- 所需的class;或
- 您的服务器中没有配置资源。
这可能是由我能想到的六件事造成的。
- 您错过了 ear 文件中的一个 jar。
- 您在封闭的 jar 文件中有 classes,它们无法访问包含其依赖项的 jar。
- 您有一个包含的 jar 文件 beans.xml 丢失。
- 您的 classes 依赖于服务器中应该安装但尚未安装的模块。
- 您错过了 joss*.xml 文件中第 4 项的依赖声明
- 您的应用程序需要一种资源(例如数据源),而您尚未在服务器中定义。
第二点相当复杂,涉及 class 加载程序在 Java EE 应用程序中的范围。基本上:
- classes in war files 可以访问lib中的普通jar文件。
- EJB jar 可以访问lib 中的jar 文件。
- lib 中的 jar 文件可能无法访问其他两个文件。
更新: 很抱歉延迟回复,但我想在回复之前检查一下,因为这个区域非常复杂。
在这种情况下,问题是您在 jboss-web.xml 中提供的名称与您在 standalone.xml 中提供的名称不匹配。
JavaEE6 有几个不同的资源命名空间。
jboss-web.xml 的默认命名空间是作为 java:module///XXXXX 工作的模块命名空间。在您的情况下,您的模块是您的 war 文件 (pharma),除非您实际在名为 pharma JBOSS 的 ear 文件中定义它,否则它会自动将其包装在名为 pharma 的 ear 文件中。所以你得到 java:module/pharma/pharma/XXXXXX
.
standalone.xml
的默认命名空间是 java:global
因此您的实际数据源可能安装在 java:global/module/env/jdbc/mn572phaOraDataSource
我已经尝试 运行 使用您提供的配置文件构建一个小的 webapp 应用程序,并为映射提供资源我添加了一个 @Singleton @Startup
bean,它定义了 link至 Datasource
@Resource
.
我设法得到了类似于你的错误消息的东西,虽然不完全
我认为有两个问题:
- 一个是你的一些 jndi 名称读作 mn572phOraDataSource,一些读作 mn572phaOraDataSource 你可以在错误消息中看到这个,因为这 2 个变体包含在内。
- 其次是jboss-web中的JNDI名称
java:/jdbc/mn572phaOraDataSource
与standalone.xml中的java:/module/env/jdbc/mn572phOraDataSource
不匹配。我通过将 standalone.xml 中的名称更改为java:/jdbc/mn572phaOraDataSource
. 使其工作