Запустить liquibase под Tomcat?

#tomcat #database-schema #liquibase #baseline

#tomcat #база данных-схема #liquibase #базовый уровень

Вопрос:

Как бы запустить проверку базы данных схемы liquibase для базовой строки под Tomcat по расписанию? Например, как развернуть liquibase под Tomcat?

Ответ №1:

Как насчет использования ServletContextListener и создания внутри него нового объекта Liquibase.

что-то вроде

 import java.sql.Connection;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

import liquibase.Liquibase;
import liquibase.database.Database;
import liquibase.database.DatabaseFactory;
import liquibase.database.jvm.JdbcConnection;
import liquibase.resource.ClassLoaderResourceAccessor;
import liquibase.resource.CompositeResourceAccessor;
import liquibase.resource.FileSystemResourceAccessor;
import lombok.SneakyThrows;

@WebListener
public class LiquibaseListener implements ServletContextListener {

  @SneakyThrows
  @Override
  public void contextInitialized(ServletContextEvent sce) {
    final Connection connection = null;
    final Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));
    final Liquibase liquibase = new Liquibase("changelogpath", new CompositeResourceAccessor(new ClassLoaderResourceAccessor(), new FileSystemResourceAccessor()), database);
    liquibase.update("");
    
  }
}
  

Или посмотрите внутри SpringLiquibase, как это делается для spring framework, и вы можете черпать вдохновение оттуда.

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

1. Спасибо за информацию @bilak в вашем коде, как я могу сказать, что мне нужен вывод JSON для результатов?

2. для каких результатов?

3. Я думал, что есть только один вывод, и он должен отображать каждую проверенную таблицу базы данных и определять, совпадает ли она, или перечислять то, что не совпадает.