Liquibase 3.7.0 в Azure - неожиданное исключение Liquibase: не удается найти LockService - PullRequest
0 голосов
/ 23 октября 2019

В настоящее время я работаю над Java8 WebApp с Hibernate и Vaadin и Liquibase в качестве зависимости, которую я пытался запустить на Azure для тестирования.
Я не писал это приложение сам, и версия, которая была мне предоставлена, былапервоначально используя Liquibase 3.0.7 и, очевидно, работающий на Tomcat 8.0.28

Я обновил его до 3.7.0 (конкретные причины см. внизу) и теперь получаю следующую ошибку:

liquibase.exception.UnexpectedLiquibaseException: Cannot find LockService for unsupported
    liquibase.lockservice.LockServiceFactory.getLockService(LockServiceFactory.java:74)
    liquibase.Liquibase.update(Liquibase.java:183)
    liquibase.Liquibase.update(Liquibase.java:179)
    liquibase.Liquibase.update(Liquibase.java:175)
    liquibase.Liquibase.update(Liquibase.java:168)
    com.app.test.AppServlet.initDB(AppServlet.java:86)
    com.app.test.AppServlet.servletInitialized(AppServlet.java:44)
    com.vaadin.server.VaadinServlet.init(VaadinServlet.java:217)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)


Я тестирую локально с tomcat 8.5.47 и Tomcat 7, а также с подключаемым модулем tomcat7 maven, который позволяет мне запускать приложение с помощью maven и видеть все записи в консоли. Я пытаюсь развернуть .war на Tomcat 8.5 в Azure.
Итак, я получил следующие серверы:

Tomcat 8.5.47 (local)
Tomcat 7.0.96 (local)
Tomcat 7.x (Maven Plugin)
Tomcat 8.5.41 (Azure)

Вышеуказанная проблема возникает only в Azure
Кажется, что все локальные серверы работают (хотя я не слишком углубился в тестирование, но, по крайней мере, они отображают главную страницу).

База данных - это MariaDB, также работающая в Azure, и вся конфигурация длясоединение выполняется в коде через конфигурацию hibernate или в строке соединения jdbc, поэтому все серверы используют один и тот же код и подключаются к одной и той же базе данных.

Я уже пробовал последнюю версию 3.8.0, нота же проблема там, поэтому я вернулся к 3.7.0

Как я могу исправить эту ошибку?

Обновление:
Я нашел больше ошибок в журнале серверапосле активации подробного ведения журнала:

2019-10-23T13:30:58.611225727Z Caused by: liquibase.exception.ServiceNotFoundException: liquibase.exception.ServiceNotFoundException: Could not find unique implementation of liquibase.executor.Executor.  Found 0 implementations
2019-10-23T13:30:58.611235727Z     at liquibase.servicelocator.ServiceLocator.newInstance(ServiceLocator.java:216) ~[liquibase-core-3.7.0.jar:na]
2019-10-23T13:30:58.611246427Z     at liquibase.executor.ExecutorService.lambda$getExecutor$0(ExecutorService.java:26) ~[liquibase-core-3.7.0.jar:na]
2019-10-23T13:30:58.611256327Z     ... 31 common frames omitted
2019-10-23T13:30:58.611265628Z Caused by: liquibase.exception.ServiceNotFoundException: Could not find unique implementation of liquibase.executor.Executor.  Found 0 implementations
2019-10-23T13:30:58.611275428Z     at liquibase.servicelocator.ServiceLocator.findClass(ServiceLocator.java:188) ~[liquibase-core-3.7.0.jar:na]
2019-10-23T13:30:58.611285028Z     at liquibase.servicelocator.ServiceLocator.newInstance(ServiceLocator.java:214) ~[liquibase-core-3.7.0.jar:na]
2019-10-23T13:30:58.611294328Z     ... 32 common frames omitted

и

2019-10-24T08:59:39.545505776Z 24.10.2019 08:59:39.483 INFO  com.app.test.AppServlet - servletInitialized
2019-10-24T08:59:39.546076490Z 24.10.2019 08:59:39.492 INFO  com.app.test.AppServlet - initDB
2019-10-24T08:59:40.130035108Z 24.10.2019 08:59:40.129 WARN  liquibase.database.DatabaseFactory - Unknown database: MySQL
2019-10-24T08:59:40.162920831Z 24.10.2019 08:59:40.162 INFO  l.database.core.UnsupportedDatabase - Error getting default schema
2019-10-24T08:59:40.162974433Z liquibase.exception.UnexpectedLiquibaseException: liquibase.exception.ServiceNotFoundException: liquibase.exception.ServiceNotFoundException: Could not find
 unique implementation of liquibase.executor.Executor.  Found 0 implementations


More Background
Azure позволяет мне создавать службы приложений только с Tomcat 8.5 или9 и приложение в исходном состоянии не будет работатьна обоих серверах Tomcat 8.5. Я получил ошибку: Could not find implementation of liquibase.logging.Logger
Обновление Liquibase до 3.2.3 (потому что именно там должна была быть исправлена ​​ошибка) исправило это для всех моих локальных машин, но я все равно получил его в Azure.
Послеобновление до 3.7.0 Я больше не получаю ошибку could not find implementation.., но теперь получаю ошибку, описанную выше, а также проблему с моей схемой xml, которая, похоже, не приводит к сбою приложения и, похоже, не связана:

Caused by: org.xml.sax.SAXParseException: s4s-elt-schema-ns: Namespace des Elements 'databaseChangeLog' muss aus dem Schema-Namespace 'http://www.w3.org/2001/XMLSchema' stammen.
...