gpt4 book ai didi

hibernate - 如何将 SLF4J 用于部署在带有 Hibernate JPA 的 GlassFish 3 上的 Java EE Web 应用程序?

转载 作者:行者123 更新时间:2023-12-04 21:44:40 25 4
gpt4 key购买 nike

是否可以在特定 GlassFish 应用程序中使用 SLF4J 并仅为该应用程序配置 SLF4J?我们目前正在努力解决这样一个事实,即安装了 Hibernate 的 GlassFish 本身包含 SLF4J API 和其 lib 目录中的记录器绑定(bind)。

我们的团队正在开发一个 Java EE 6 Web 应用程序。对于开发,应用程序部署在 GlassFish 3.1.2 上,但它应该尽可能便携。

我们决定使用 SLF4J 来记录应用程序消息。根据消息级别,应用程序必须以不同方式处理某些日志消息,因此必须能够自行配置日志记录后端——而不是在应用程序服务器中配置日志记录。

不幸的是,GlassFish 3.1.2 在其 lib 文件夹中包含 slf4j-api-1.5.8.jar 和 slf4j-jdk14-1.5.8.jar。这会阻止我们的应用程序使用 slf4j-api-1.7.5.jar 和 slf4j-simple-1.7.5.jar (后者最终将被另一个绑定(bind)替换)。

有没有办法告诉 GlassFish 在考虑自己的应用程序库之前考虑应用程序库(以便使用正确版本的 API)以及确保使用应用程序提供的 SLF4J 绑定(bind)的任何方法?

我们使用 Eclipse 进行开发,但我们是 不使用 Maven .到目前为止,我发现的大多数调整/解决方法都是指我们无法使用的 Maven 中的配置。如果您可以提供任何 Eclipse 特定的提示,那就太好了。在 Eclipse 项目的属性中,我已经配置了构建路径的顺序,以便 Web App Libraries 位于顶部。但不知何故,这似乎还不够。

非常感谢您的帮助!

更新 1:为了让它暂时工作,我刚刚从 GlassFish lib 目录中删除了 SLF4J 库。然后,应用程序使用它自己提供的 SLF4J 库。但我不认为这是部署过程的解决方案,我不确定这是否会破坏 GlassFish 使用的任何东西(为什么这些库仍然存在?),这对我们的开发团队来说不是一个实用的解决方案。

更新 2:实际上,不是 GlassFish 包含了开箱即用的干扰 SLF4J 库,而是我通过更新工具安装的 Hibernate JPA 包。我们目前不需要 Hibernate JPA,但在某些时候可能会出现更改为 Hibernate 的要求,我们还希望使应用程序易于移植到安装了 Hibernate JPA 或其他包含 SLF4J 的包的应用程序服务器上。我相应地更新了问题标题。 如何解决干扰应用服务器和应用程序依赖关系的普遍问题?

最佳答案

这是由于“类加载器委托(delegate)”造成的,请尝试更改它,使其从您的应用程序中获取类而不是父类中的类。

关于hibernate - 如何将 SLF4J 用于部署在带有 Hibernate JPA 的 GlassFish 3 上的 Java EE Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16490060/

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