【问题标题】:Unable to deploy an application in JBOSS EAP 6.3无法在 JBOSS EAP 6.3 中部署应用程序
【发布时间】:2015-04-14 10:35:20
【问题描述】:

我正在尝试在 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>

谁能解释一下错误是什么以及问题可能是什么。

【问题讨论】:

    标签: java jdbc jboss naming


    【解决方案1】:

    一般来说,“新的缺失/未满足的依赖项:”是关于您的 ear 文件的内容与其中的资源相关并在服务器上提供的。它告诉你的是,有一些你没有提供的对象注入请求:

    • 所需的类;或
    • 您的服务器中没有配置资源。

    这可能是由我能想到的六件事造成的。

    1. 您错过了 ear 文件中的一个 jar。
    2. 您在封闭的 jar 文件中有类,它们无权访问包含其依赖项的 jar。
    3. 包含的 jar 文件之一中缺少 beans.xml。
    4. 您的类依赖于应该安装在服务器中但尚未安装的模块。
    5. 您在 joss*.xml 文件中错过了第 4 项中的依赖项声明
    6. 您的应用程序需要资源(例如 DataSource),而您尚未在服务器中定义资源。

    第二点相当复杂,涉及 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 的模块命名空间。在您的情况下,您的模块是您的战争文件(pharma),除非您实际上在名为 pharma 的 ear 文件中定义了它,否则 JBOSS 会自动将其包装在名为 pharma 的 ear 文件中。所以你会得到java:module/pharma/pharma/XXXXXX

    standalone.xml 的默认命名空间是 java:global,因此您的实际 DataSource 可能安装在 java:global/module/env/jdbc/mn572phaOraDataSource

    我尝试运行一个带有您提供的配置文件的小型 webapp 应用程序,并为映射提供资源,我添加了一个 @Singleton @Startup bean,该 bean 定义了指向 Datasource@Resource 的链接。

    虽然不完全,但我设法得到了与您的错误消息类似的东西

    我认为有2个问题:

    • 其中一个是您的一些 jndi 名称读取为 mn572phOraDataSource,而另一些读取为 mn572phaOraDataSource,您可以在错误消息中看到这一点,因为包含了 2 个变体。
    • 其次是jboss-web中的JNDI名称java:/jdbc/mn572phaOraDataSource与standalone.xml中的java:/module/env/jdbc/mn572phOraDataSource不匹配。我通过将standalone.xml 中的名称更改为java:/jdbc/mn572phaOraDataSource 来使其工作。

    【讨论】:

    • 知道下面这行的确切含义。服务 jboss.naming.context.java.jdbc.mn572phOraDataSource(缺少)依赖项:[服务 jboss.naming.context.java.module.pharma.pharma.env.jdbc.mn572phOraDataSource]
    • 我已经有:jdbc/mn572phaOraDataSourcejava:/jdbc/mn572phaOraDataSourcename> 我需要别的东西吗?
    • 它说(缺少)家属:[service jboss.naming.context.java.module.pharma.pharma.env.jdbc.mn572phOraDataSource] 但在我的standalone.xml中我已经有 jndi-name= “java:/module/env/jdbc/mn572phOraDataSource”。我在这里遗漏了什么或做错了什么?
    • 在 ref-res 中添加了一个查找标签,从而解决了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2020-03-09
    相关资源
    最近更新 更多