gpt4 book ai didi

java - JBoss - war 库依赖

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:43 25 4
gpt4 key购买 nike

我正在尝试添加一些依赖项 jar 文件。但是这些文件放在 lib/endorsedWEB_INF/lib.jar 中会导致 jboss 实例启动错误。我想这是因为 JBoss 的平面类加载器结构而发生的。如果有人在 jboss-web.xml

中实现了类加载器设置
<class-loading> 
<loader-repository>com.example:archive=unique-archive-name</loader-repository>
</class-loading>

谁能给我一个现实生活中的例子?

另外,我应该将这些 jar 文件放在哪里 - jboss 的 lib/endorsed,或部署文件夹或 WEB_INF/lib 中的 lib 文件夹

最佳答案

Duffymo 关于不将 jar 放入 endorsed 的指令被忽略,后果自负。

一些额外的细节:

将库放在您的 WEB-INF/lib 中是可移植性和一致性的最佳实践,因为它遵循创建自给自足和可分发的网络文件的标准规定,但您需要支付注意您在 jboss-web.xml 中的 class-loading 声明。

假设一个没有 class-loading 声明和一个虚构的example.jar 的简单场景:

  • 如果您将 example.jar 放入 WEB-INF/lib 并且不会 也存在于 jboss//lib 中,那么 example.jar 将只对该特定的 WAR 可见。
  • 如果您将 example.jar 放入 WEB-INF/lib 并且/strong> 也存在于 jboss//lib 中,WEB-INF/lib 中的实例基本上将被忽略,WAR 将使用 JBoss 服务器实例的统一类加载器来从 jboss//lib/example.jar 加载 example 类。 (这同样适用于同一服务器实例中的任何其他 WAR 或 EAR,假设没有class-loading 覆盖。)

class-loading 声明在您有两个不同版本的 example.jar 的情况下(例如)是必需的: - jboss//lib: example1.0.jar - WEB-INF/lib: example2.0.jar

在这种情况下,JBoss 将为您的 WAR 创建一个独特且独立的类加载器,这将避免使用 jboss//lib/example1.0.jar 而使用 WEB-INF/lib/example2.0.jar 在您的 WAR 上下文中。

总而言之,如果您只在 jboss 服务器实例中运行一个 WAR 和/或您没有冲突的 JAR 问题,放弃 class-loading 声明并将您的 JAR 放入 jboss//lib.它使 WAR 文件更轻量,整体部署可能更简单,并且在热部署期间您不会因额外的类版本而消耗额外的内存。

关于java - JBoss - war 库依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34533814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com