在 jBoss 7.1 中管理 jar 文件的依赖关系

Posted

技术标签:

【中文标题】在 jBoss 7.1 中管理 jar 文件的依赖关系【英文标题】:Manage dependencies of jar-files in jBoss 7.1 【发布时间】:2014-07-16 06:52:55 【问题描述】:

我从 jboss 开始,已经遇到了麻烦。

我的项目有下一个结构:

根 pom.xml
 - 核心模块
 - ddbac 模块
 - web 模块 - 包括 core.jar 和 ddbac.jar
 -ear 模块 - 包括 web.war

每个模块还包含一个 pom.xml。所有依赖项都在根 pom.xml 中声明。 当我在 ear 模块中执行 `mvn clean install` 时,我得到了包含 web.war 的 ear 文件。这个 web.war 包含 core.jar 和 ddbac.jar。

之后,我将此 ear 文件部署到 jBoss 7.1.1 中——它可以工作。但是当我开始测试它时——做一些动作——我遇到了异常:

引起:java.lang.ClassNotFoundException: org.springframework.beans.BeansException 来自本地模块加载器@5a0deddc 的 [Module "org.apache.cxf:main"(根:/home/roman/jboss-as-7.1.1.决赛/模块)] 在 org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) 在 org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) ... 99 更多

所以问题是:如何正确定义依赖关系,来自 ddbac 模块的代码可以“看到”web.war 中的库?

【问题讨论】:

你用的是spring吗?当 CXF 在您的应用程序中检测到 Spring .... 可能 id 决定使用 CXF+Spring 实现而不是单独使用 CXF。 community.jboss.org/thread/194685 是的,我正在使用 Spring,但问题已经解决(请参阅已接受的答案)。感谢您的提示:) 【参考方案1】:

您可以使用描述符来指定您的依赖项。以下方法之一可能对您有用。

application.xml。将您的库指定为应用程序中的模块。将 application.xml 放入 ear-root/META-INF/ 并描述您的项目。您必须指定类似的内容:

<application>
    <module>
        <web>
             <web-uri>web.war</web-uri>
             <context-root>web</context-root>
        </web>
    </module>   
    <module>
        <java>web/WEB-INF/lib/ddbac.jar</java>
    </module>
</application>

jboss-app.xml。它是 JBOSS 特有的配置文件,也应该位于 META-INF/ 中。

<!DOCTYPE jboss-app PUBLIC "-//JBoss//DTD J2EE Application 5.0//EN"
  "http://www.jboss.org/j2ee/dtd/jboss-app_5_0.dtd" >
<jboss-app>
    <library-directory>web/WEB-INF/lib</library-directory>
</jboss-app>

【讨论】:

是的,解决方案:将 core 和 ddbac 模块作为模块添加到 ear 文件中:ear pom.xml 和 jboss-deployment-structure.xml 中,这样它们就可以使用共享库了。

以上是关于在 jBoss 7.1 中管理 jar 文件的依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

JBOSS AS 7.1 JBAS014775:新的缺失/不满足的依赖项:

在 JBoss 7.1 中使用 log4j

在 Jboss 7.1 上部署 datasource.xml

如何在 JBoss 7.1 中配置外部供应商 SSL 证书

如何在 JBOSS EAP 7.1 中设置管理员用户(以便能够在紧急情况下通过 GUI 检查服务器?)?

JBoss EAP 7.1 部署失败的集成器:未找到提供程序