Добавить недостающий драйвер в устаревший проект в рабочей среде

#java #deployment #runtime

#java #развертывание #время выполнения

Вопрос:

Я переношу устаревший проект на новый сервер. Ранее в проекте использовалась Oracle DB, но теперь я хочу, чтобы он использовал Postgress. Запросы достаточно просты и работают одинаково в Postgres.

Однако в проекте отсутствует jdbc-драйвер Postgres. Могу ли я каким-то образом добавить эту зависимость в jar без перекомпиляции?

Комментарии:

1. Нет. если вы используете java -jar для запуска своего приложения, вам необходимо изменить файл манифеста внутри jar.

Ответ №1:

Могу ли я как-то добавить эту зависимость в jar без перекомпиляции?

Это зависит.

  • Если вы используете сервер как java -jar myserver.jar ... , то вам, по крайней мере, потребуется изменить манифест в файле JAR. Строго говоря, это не влечет за собой перекомпиляцию, но вам нужно разнести, изменить и переупаковать файл JAR.
  • Если сервер использует Class.forName для явной загрузки Driver класс Oracle, вам нужно будет изменить этот код, чтобы Driver вместо него загрузить класс Postgres. (Есть и другие способы использования JDBC, которые позволяют избежать этого, но это зависит от того, как реализован ваш устаревший сервер.)
  • Если ваш сервер использует специфические классы баз данных Oracle или специфические функции SQL Oracle (или ему необходимо сделать то же самое в мире Postgres), потребуются более обширные изменения.

Но без детального изучения вашей кодовой базы мы не можем предсказать, что потребуется.

Мой совет — заменить JAR-файл драйвера Oracle JAR-файлом драйвера Postgres и посмотреть, что произойдет, когда вы запустите свой сервер с базой данных Postgres с соответствующими схемами и данными.

Но я бы не стал делать это «на производстве». Сделайте это в тестовой среде. Если вы не можете настроить подходящую тестовую среду … забудьте об этом.

И если у вас нет исходного кода для вашего сервера, я бы тоже забыл об этом. Если что-то пойдет не так, вам, скорее всего, понадобится исходный код, чтобы выяснить проблему и исправить ее.