JBoss - 战争库依赖

时间:2011-07-01 18:14:43

标签: java jboss

我正在尝试添加一些依赖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文件 - lib/endorsed jboss,或lib文件夹在deploy文件夹中或WEB_INF/lib

2 个答案:

答案 0 :(得分:5)

Duffymo关于不将罐子放入 认可的 的指令会被忽略。

在其他一些细节中:

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

假设一个简单的场景没有 类加载声明和一个虚构的 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 加载示例类。 (同样适用于同一服务器实例中的任何其他WAR或EAR,假设没有类加载覆盖。)

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 / WAR的上下文中的example2.0.jar

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

答案 1 :(得分:2)

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