gpt4 book ai didi

java - tomEE 知道 Maven 依赖吗?

转载 作者:行者123 更新时间:2023-11-30 05:19:55 26 4
gpt4 key购买 nike

我正在尝试将 postgresql 驱动程序与 tomcat 一起使用。但是当我运行 tomcat 时,我收到 FileNotFound 异常(Class.forName(“org.postgresql.Driver”))。tomEE 是否知道 Maven 依赖关系。我该如何克服它

最佳答案

没有。 Tomcat/TomEE部署后不涉及Maven

不,TomEE 不知道 Maven或您的POM

commented by Andreas ,您的 Maven 驱动的 Web 应用程序项目将生成 WAR 文件或 EAR 文件。该文件包含您可能在 POM 中配置的任何依赖项。

对于部署,您将将该 WAR 或 EAR 文件移动到 TomEE 服务器。到那时,不再有 Maven 参与。

上面的这些评论适用于您对 production 的最终部署。在开发过程中,您可能会使用 IDE例如可以调用外部的 IntelliJ/NetBeans/Eclipse web container例如 Tomcat 或 TomEE 来运行和调试您的 Web 应用程序。在这种特殊情况下,可能会涉及 Maven 设置,作为将 IDE 连接到外部 Web 容器的一部分。即使在这种特殊情况下,Tomcat/TomEE 也不知道 Maven 可能参与了其启动或配置。

JDBC 驱动程序很特殊

此外,由于类加载器问题和 JDBC 驱动程序注册过程,将 JDBC 驱动程序部署到 Tomcat、TomEE 或其他 Jakarta Servlet 容器是一件复杂的事情。一般来说,您不应该在 WAR/EAR 中捆绑 JDBC 驱动程序。

搜索 Stack Overflow 以了解更多信息。请记住TomEE建立在 Apache Tomcat 之上,因此您读到的有关 Tomcat 的大多数内容都适用。

参见:

顺便说一句,在具有 JDBC 驱动程序注册功能 ( DriverManager ) 的现代 Java 中,您 no longer need to call Class.forName 。那call is now legacy

数据源

提示:学习使用DataSource由您的驱动程序提供实现。关于Postgres ,如果使用来自 jdbc.postgresql.org 的 JDBC 驱动程序,请参阅 this chapter .

PGSimpleDataSource pgDataSource = new PGSimpleDataSource();
pgDataSource.setDataSourceName("Acme Corp invoicing database");
pgDataSource.setServerName("localhost");
pgDataSource.setDatabaseName("test");
pgDataSource.setUser("testuser");
pgDataSource.setPassword("testpassword");

DataSource dataSource = pgDataSource ; // Perhaps save as an "attribute" on your web app's "context".

Ask the data source对于Connection需要与数据库对话时对象。平时最好用try-with-resources语法。

try 
(
Connection conn = dataSource.getConnection() ;
)
{
… do your database work
}

稍后您可以学习在代码库外部配置此 DataSource 信息。该配置是通过 JNDI 和命名服务器(例如 Tomcat 中内置的 LDAP 样式服务器)完成的。

关于java - tomEE 知道 Maven 依赖吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59720613/

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