JBoss – 战争库依赖

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

  com.example:archive=unique-archive-name  

有人可以给我一个真实的例子吗?

另外我应该在哪里放置这些jar文件 – lib/endorsed of jboss,或者在deploy文件夹或WEB_INF/lib lib文件夹

Duffymo关于不让jar装背书的指令在你的危险中被忽略了。

在一些额外的细节:

将库放在WEB-INF / lib中是可移植性和一致性的最佳实践,因为它遵循创建自给自足和可分发的Web存档的标准规定,但您需要密切关注类加载声明您是放入你的jboss-web.xml

假设没有 类加载声明和虚构的example.jar的简单场景:

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

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

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

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

它们属于WAR文件的WEB-INF / lib目录。 不要把东西放在背书文件夹中。