【问题标题】:Is it possible to move Application JARs libs outside WEB-INF/libs and EAR/lib是否可以将应用程序 JAR 库移动到 WEB-INF/libs 和 EAR/lib 之外
【发布时间】:2011-11-19 01:11:26
【问题描述】:

我们有一个 EAR,在 EAR/lib 目录中有一些特定于应用程序的库 (.jar)。很多时候,在 Eclipse 下的开发阶段,即使在取消部署之后,JBoss 也会锁定这些 jar。然后我们必须重新启动 JBoss,浪费时间...... 嵌入式 jar 的其他缺点是远程服务器部署上传时间,如果这些 jar 很大,每个部署都需要上传那些始终相同的 JAR。 我们在 jboss 目录中尝试了几个地方,都导致在应用程序的启动阶段或运行阶段出现 ClassLoader 问题。

请注意,我们已经成功地在另一个外部 JSF WAR 中做到了这一点,将这些库放在 [JBossInstallDir]/server/default/deployers/jsf.deployers/[OurJSFConfig]/jsf-libs 它工作得很好。

有什么想法吗?

【问题讨论】:

    标签: jboss jboss6.x


    【解决方案1】:

    如果您想热重新部署这些库,.ear 文件是您的最佳选择。 在开发过程中您可以做的是部署exploded(不是.zip,而是一个目录)并且只交换您想要更改的那些类)。 然后,当您触摸 myApp.ear/META-INF/application.xml 时,将使用 changd 类重新部署 ear。

    当它们是静态且不更改时,您当然可以将它们放入例如 jboss/server/default/lib/ 文件夹中(对于 AS4,我认为这也适用于 AS5)。

    【讨论】:

    • 这正是我们不想做的,意味着重新部署或热重新部署这些库。它们主要是静态的第三方实用程序库,(几乎)永远不会改变。这就是为什么将它们与 EAR 打包并每次重新部署它们是如此愚蠢的原因。最大的问题是 JBoss,在应用程序异常之后的大部分时间,都是写锁定这些库(在 Windows 7 下)。我们不使用 application.xml,因为我们使用标准 J2EE 结构和注释,在这种情况下不需要应用程序描述符。
    • Heiko,它似乎对静态库有效。关键是我们用于项目的 JSF 部分的库与 JBoss jar 冲突(如 commons-beanutils.jar、commons-logging.jar)。我们将它们放在 deployers/jsf.deployers/OurConfig/jsf-libs 中,并在那里 JBoss6(不是 4 或 5)确保隔离。但是关于我们在 EJB-EAR 级别拥有的 jar,它们不存在于 JBoss 层次结构中。所以没有类加载器问题,如果我们把它们放在 server/default/lib 中。
    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 2012-01-19
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    相关资源
    最近更新 更多