Правильный способ развертывания приложения J2EE на основе Hibernate на удаленном сервере - PullRequest
0 голосов
/ 27 июня 2009

У меня здесь довольно чудовищное Java-приложение. На данный момент он был развернут только на моей локальной установке Tomcat / MySQL.

Для полноты картины приложение представляет собой сервер онлайн-игр, написанный на Spring, Hibernate с MySQL, который в настоящее время находится на сервере.

Теперь я могу легко упаковать WAR-файл и получить его на удаленном сервере. Проблема в базе данных. Сейчас он генерируется с помощью сценария ANT, который использует Hibernate (в частности, задачу Ant HBM2DDL) для генерации схемы, а затем заполняет базу данных комбинацией статического SQL и парой анализаторов на основе муравьев, которые читают из других данных (XML). в основном). После этого у меня есть полностью созданная БД, заполненная «стартовым» набором данных игровых серверов.

Проблема в том, что в Java немного зеленовато. Я понятия не имею, как правильно ее развернуть.

Должен ли я:

  1. Экспортировать SQL из моего локального MySQL и вручную импортировать его на новый сервер? Eww.
  2. Сделать скрипт ANT менее громоздким (прямо сейчас в нем много жестко закодированных каталогов) и запустить его на сервере?
  3. Элегантный вариант, о котором я не знаю?

Другая сложность заключается в том, что WAR будет идти на другой (ие) сервер (ы), чем база данных MySQL. Существует ли книга или веб-ресурс по Java, в которых подробно рассматриваются вопросы развертывания такого типа?

Ответы [ 3 ]

1 голос
/ 27 июня 2009

Я сделал нечто подобное, создав цели ant для передачи сценария ant на удаленную машину, причем этот сценарий ant имеет цель для создания базы данных. Поскольку у вас уже есть цели ant для генерации схемы и инициализации БД, вы можете просто перенести существующий сценарий ant на удаленный компьютер (при условии, что на удаленном компьютере есть такой же набор инструментов).

Вы можете использовать задачу scp ant для удаленного копирования и sshexec для удаленного вызова ant и сценария.

1 голос
/ 27 июня 2009

Я думаю, что есть 3 варианта:

  1. Измените ваш ANT-сценарий, чтобы он предназначался для БД на удаленной машине. Вы можете запустить его на своем локальном компьютере, поэтому вам не нужно его менять: он найдет необходимые файлы в тех же местах. Основным недостатком этого метода является то, что выполнение большого количества SQL по сети (Интернет) может быть медленным).
  2. Экспорт схемы из локальной базы данных (сборки) в новую базу данных. Это не обязательно должен быть SQL, если ваша база данных поддерживает какой-то двоичный формат. Обычно это самый быстрый и наименее подверженный ошибкам способ сделать это, хотя могут быть некоторые очень тонкие проблемы, если конфигурация удаленной БД немного отличается от вашей локальной настройки (например, набора символов).
  3. Запустите скрипт ANT на вашем сервере. Самая большая проблема в том, что на вашем сервере баз данных должны быть все необходимые инструменты (такие как ant и java), а также все исходные файлы (отображения гибернации), в которых он обычно (будучи сервером баз данных) не нуждается.
0 голосов
/ 27 июня 2009

Вы можете использовать задачу Hibernate hbm2ddl, чтобы создать схему для вас. Это не будет заполнять какие-либо справочные данные, однако. Я часто использую задачу и конфигурацию JUnit, чтобы запустить ее один раз, а затем выполнить ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...