gpt4 book ai didi

java - 最佳实践? JNDI、Hibernate 和 Tomcat

转载 作者:行者123 更新时间:2023-11-28 22:14:47 25 4
gpt4 key购买 nike

我有一个 web 应用程序,由 tomcat 托管,它使用 hibernate 与数据库对话。

我正在研究如何在从开发迁移到测试和生产时减轻配置的痛苦。

我看到很多人提到 JNDI,乍一看,这似乎是个好主意。您在每个 tomcat 实例上配置一个 jndi 资源,Web 上下文只使用它。

然而,在进一步检查之后,似乎为了拥有 JNDI,我必须在 tomcat lib 文件中拥有我的所有数据库对象 + hibernate 才能使其工作。这对我来说听起来很可怕,如果我想部署另一个使用不同版本 hibernate 的上下文怎么办?

此外,我不只是将维护配置的痛苦换成了因安装的 jndi 资源类与我的上下文中的资源类不匹配而导致的破坏的痛苦。

理想情况下,我想我想要的只是在 tomcat 中说。有一个名为 X 的数据库,它在这台服务器上并且有这个用户/密码。

对于处理不同环境中不同配置需求的最佳方式,我很感激您的想法,而无需在每次部署后执行额外步骤来更新配置文件。

干杯,彼得

最佳答案

我相信你把事情搞糊涂了。

JNDI 只是分配给数据源池的名称。此数据源使用 JDBC 驱动程序,该驱动程序位于全局 Tomcat 类路径中,但它是整个设置中唯一的共享资源。

数据源定义了连接 U​​RL、用户名、密码和连接选项,这些可能因服务器而异,但应用程序不关心它——它只知道 JNDI 名称,例如“jdbc/我的数据源”。

所有 hibernate JAR 以及任何其他 JAR 和其他内容都将打包在 WAR 中。它们仅在 WAR 中“可见”,因此您可以将多个应用程序使用冲突版本的库部署到同一个 Tomcat。

无需污染Tomcat的lib/目录。正如您正确观察到的那样,这是一种不好的做法。

关于java - 最佳实践? JNDI、Hibernate 和 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5711488/

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