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

时间:2014-05-27 11:20:20

标签: java spring maven jboss7.x ear

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

我的项目有下一个结构:

root pom.xml
 - core module
 - ddbac module
 - web module - includes core.jar and ddbac.jar
 -ear module - includes web.war

每个模块还包含一个pom.xml。所有依赖项都在root pom.xml中声明。 当我在ear模块内部执行`mvn clean install`时,我得到的是ear-file,其中包含web.war。此web.war包含core.jar和ddbac.jar。

之后我将这个ear文件部署到jBoss 7.1.1中 - 它有效。但是,当我开始测试它时 - 做一些动作 - 我得到例外:

Caused by: java.lang.ClassNotFoundException: org.springframework.beans.BeansException from [Module "org.apache.cxf:main" from local module loader @5a0deddc (roots: /home/roman/jboss-as-7.1.1.Final/modules)]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
    ... 99 more

所以问题是:如何正确定义依赖关系,来自ddbac模块的代码可以"参见" web.war中的lib?

1 个答案:

答案 0 :(得分: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>

OR

<强> 的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>