【问题标题】:Where to put a shared library in JBoss AS 7在 JBoss AS 7 中将共享库放在哪里
【发布时间】:2013-10-22 13:07:18
【问题描述】:

我有多个 Web 应用程序,每个应用程序都使用 spring-hibernate 和其他开源库和 portlet,所以现在基本上每个 war 文件都包含这些 jar 文件。如何将这些 jar 移动到一个公共位置,这样我就不必将它们放在每个 war 文件中?我的罐子放在D:/ 目录中。

我尝试创建模块但没有成功。例如如果我添加了罐子

<resources>
    <resource-root path="mylib.jar"/>
</resources>

而 mylib.jar 需要另一个 ABC 类。那个 ABC 类在我的 WAR 类路径中。在这里加载此模块时出现异常。 mylib.jar 找不到 ABC 类并抛出异常。

【问题讨论】:

  • 使用模块绝对是使用最新 JBoss 版本的常用库的方法。在这里我已经详细解释了模块创建,也许它可以帮助你:stackoverflow.com/questions/14852144/…
  • 问题已编辑:模块异常解释
  • 如果您的公共库/模块需要一个将与应用程序一起部署的类,那么恐怕这是一个失败的原因。但是 spring-hibernate 应该取决于您的应用程序,这听起来很奇怪。也许你可以先解开,或者我可能误解了这个问题。
  • 如何检查 JBOSS 中的类加载。我想查看类加载的顺序

标签: java spring-mvc jboss shared-libraries


【解决方案1】:

如果这些库在多个应用程序中重复使用,最好的解决方案可能是创建 JBoss 模块。

例如,我正在开发的几个项目中使用了 OJDBC 库。因此,我在 JBoss 7 中添加了一个新模块:https://community.jboss.org/wiki/CreateAModuleForOracleDatasourceInJBoss711Final(这只是一个示例)。

但是您说,您尝试创建模块,但没有成功。出了什么问题?你有什么错误吗?

编辑 与更新的问题相关的更新答案。

所以,如果我理解正确,我们可以将您的库分为两类:

  1. 第一类是“标准库”:Spring、Hibernate、Log4j 等。因此,这些库可以作为模块添加到 JBoss AS 中并在每个 WAR 中重用(范围=在 Maven 的依赖项中提供)。
  2. 任何其他非标准库(即您自己编写的)也可以作为模块添加。如果这些库需要一些其他依赖项 - 这些依赖项必须列在模块的 XML 文件中,如下所述:https://docs.jboss.org/author/display/MODULES/Module+descriptors

希望这至少有一点帮助:)

【讨论】:

  • 如何检查 JBOSS 中的类加载。我想查看类加载的顺序。可能会先加载模块,然后加载类路径中的类。所以这可能是错误的原因
猜你喜欢
  • 2014-07-12
  • 1970-01-01
  • 2022-08-17
  • 2017-11-06
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 2014-07-26
相关资源
最近更新 更多