首页 > 解决方案 > 将缺少的驱动程序添加到生产中的遗留项目

问题描述

我正在将旧项目迁移到新服务器。以前该项目使用 Oracle DB,但现在我希望它使用 Postgress。查询很简单,并且在 Postgres 中的工作方式相同。

但是该项目缺少 Postgres jdbc 驱动程序。我可以在不重新编译的情况下以某种方式将此依赖项横向添加到 jar 中吗?

标签: javadeploymentruntime

解决方案


我可以在不重新编译的情况下以某种方式将此依赖项添加到 jar 中吗?

这取决于。

  • 如果您将服务器运行为java -jar myserver.jar ...,那么您至少需要修改 JAR 文件中的清单。严格来说,这并不需要重新编译,但您确实需要分解、修改和重新打包 JAR 文件。

  • 如果服务器用于Class.forName显式加载 OracleDriver类,那么您将需要更改该代码以加载 PostgresDriver类。(还有其他使用 JDBC 的方法可以避免这种情况,但这取决于您的旧服务器是如何实现的。)

  • 如果您的服务器使用 Oracle 特定的数据库类,或 Oracle 特定的 SQL 功能(或者它需要在 Postgres 世界中做同样的事情),则需要进行更广泛的更改。

但是如果没有实际检查您的代码库的详细信息,我们无法预测需要什么。

我的建议是用 Postgres 驱动程序 JAR 替换 Oracle 驱动程序 JAR,看看当您针对具有适当模式和数据的 Postgres 数据库运行服务器时会发生什么。

但我不会在“生产中”这样做。在测试环境中进行。如果不能搭建合适的测试环境……算了。

如果您没有服务器的源代码,我也会忘记它。如果出现任何问题,您很可能需要源代码来找出问题并修复它。


推荐阅读