java - tomEE 知道 Maven 依赖吗?

标签 java maven jdbc apache-tomee

我正在尝试将 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/

相关文章:

java - 当方法生成 std​​err 时,如何在 STDERR 前面添加信息?

java - RSA加密-AES key 解密并存储在文件中

java - 该绘图应用程序运行,但当您绘制某些内容时没有任何反应

java - 这里需要关闭数据库连接吗?

java - Smalltalk 与 java 中的实例变量

java - 在哪里可以找到 WSO2 Balana 的 Maven 存储库

android - Fabric maven repo 导致 gradle 构建缓慢

javascript - 建议在 Windows 上使用 Node JS 的 BDD 测试框架

java - 如何在 ResultSet 中查找记录数

java - Jruby、JDBC、Netezza