繁体   English   中英

无法在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>

我的.war文件中的jboss-web.xml具有以下条目:

<resource-ref>
   <res-ref-name>jdbc/mn572phaOraDataSource</res-ref-name>
   <jndi-name>java:/jdbc/mn572phaOraDataSource</jndi-name>
</resource-ref>

任何人都可以解释该错误说明什么以及可能是什么问题。

通常,“新的丢失/不满意的依赖项:”与您的耳文件的内容有关,该文件与其中的资源有关,并在服务器上提供。 告诉您的是,有一些您尚未提供的对象注入请求:

  • 必修课; 要么
  • 服务器中未配置的资源。

我可能会想到六件事。

  1. 您错过了耳锉里的一个罐子。
  2. 您在封闭的jar文件中具有无法访问包含其依赖项的jar的类。
  3. 您所包含的jar文件之一缺少bean.xml。
  4. 您的类取决于应该在服务器中安装但尚未安装的模块。
  5. 您已经从joss * .xml文件中错过了项目4中的依赖项声明。
  6. 您的应用程序需要一种资源(例如数据源),并且您尚未在服务器中定义资源。

第二点很复杂,涉及Java EE应用程序中类加载器的范围。 基本上:

  1. war文件中的类可以访问lib中的普通jar文件。
  2. EJB jar可以访问lib中的jar文件。
  3. lib中的jar文件可能无法访问其他两个文件。

更新:很抱歉延迟回复,但我想在回答之前先检查一下,因为该区域非常复杂。

在这种情况下,问题是您在jboss-web.xml中提供的名称与您在standalone.xml中提供的名称之间不匹配。

JavaEE6有几个不同的资源命名空间。

jboss-web.xml的默认名称空间是模块名称空间,它用作java:module //// XXXXX。 在您的情况下,您的模块就是您的war文件(药房),除非您在称为pharma的耳文件中实际定义了模块,否则JBOSS会自动将其包装在称为pharma的耳文件中。 所以你得到java:module/pharma/pharma/XXXXXX

standalone.xml的默认名称空间是java:global因此实际的数据源可能安装在java:global/module/env/jdbc/mn572phaOraDataSource

我试图运行一个小的Webapp应用程序,其中包含您提供的配置文件,并提供用于映射的资源,我添加了一个@Singleton @Startup bean,该bean定义了到Datasource @Resource链接。

我设法得到了与您的错误消息类似的内容,尽管不是完全

我认为有两个问题:

  • 一种是您的某些jndi名称读为mn572phOraDataSource,有些读的mn572ph OraDataSource,您可以在错误消息中看到此信息,因为其中包括2个变体。
  • 第二个是jboss-web中的JNDI名称java:/jdbc/mn572phaOraDataSourcejava:/jdbc/mn572phaOraDataSource中的java:/module/env/jdbc/mn572phOraDataSource不匹配。 我通过将standalone.xml中的名称更改为java:/jdbc/mn572phaOraDataSource

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM