Включение функции mpHealth ломает автономное приложение в Open Liberty - PullRequest
0 голосов
/ 24 января 2019

Сейчас я играю с Open Liberty 18.0.0.4 и его поддержкой Microprofile.Когда я пытаюсь создать автономный исполняемый Jar-файл, который включает в себя функцию mpHealth-1.0, при запуске

[ERROR   ] CWWKF0033E: The singleton features com.ibm.websphere.appserver.javax.servlet-3.1 and com.ibm.websphere.appserver.javax.servlet-4.0 cannot be loaded at the same time.  The configured features mpHealth-1.0 and jaxrs-2.1 include one or more features that cause the conflict. Your configuration is not supported; update server.xml to remove incompatible features.
[ERROR   ] CWWKF0033E: The singleton features com.ibm.websphere.appserver.javax.annotation-1.2 and com.ibm.websphere.appserver.javax.annotation-1.3 cannot be loaded at the same time.  The configured features mpHealth-1.0 and jaxrs-2.1 include one or more features that cause the conflict. Your configuration is not supported; update server.xml to remove incompatible features.
[ERROR   ] CWWKF0033E: The singleton features com.ibm.websphere.appserver.javaeeCompatible-8.0 and com.ibm.websphere.appserver.javaeeCompatible-7.0 cannot be loaded at the same time.  The configured features jsonb-1.0 and mpHealth-1.0 include one or more features that cause the conflict. Your configuration is not supported; update server.xml to remove incompatible features.
[ERROR   ] CWWKF0033E: The singleton features com.ibm.websphere.appserver.javax.cdi-2.0 and com.ibm.websphere.appserver.javax.cdi-1.2 cannot be loaded at the same time.  The configured features jsonb-1.0 and mpHealth-1.0 include one or more features that cause the conflict. Your configuration is not supported; update server.xml to remove incompatible features.

происходит сбой, я использую jaxrs-2.1 и jsonb-1.0, и все работает нормально.Как только я добавляю функцию mpHealth-1.0, я получаю вышеуказанные ошибки.Вот соответствующий фрагмент server.xml:

    <featureManager>
        <feature>jaxrs-2.1</feature>
        <feature>jsonb-1.0</feature>
        <feature>mpHealth-1.0</feature>
    </featureManager>

И это то, что говорит запущенный Jar в конце (но никакой службы не будет доступно):

[AUDIT   ] CWWKF0012I: The server installed the following features: [jsonb-1.0, servlet-4.0, jndi-1.0, mpHealth-1.0, json-1.0, cdi-1.2, jsonp-1.1, jaxrsClient-2.1, jaxrs-2.1].

1 Ответ

0 голосов
/ 24 января 2019

Эта ошибка возникает из-за того, что не все функции OpenLiberty совместимы друг с другом, и если вы включаете конфликтующие функции, вы получаете сообщение об ошибке, указывающее, какие функции конфликтуют. Это должно быть разрешено путем включения дополнительных функций в вашем server.xml, чтобы помочь среде выполнения выяснить, какие функции следует включить.

Существуют две основные причины конфликта:

  1. Попытка включения двух версий одной и той же функции (например, foo-1.0 и foo-2.0)
  2. Включено сочетание функций Java EE 7 и Java EE 8 (например, cdi-1.2 из EE 7 и jaxrs-2.1 из EE 8)

Чтобы разбить функциональные зависимости того, что вы включили, это выглядит примерно так:

- jsonb-1.0 -> jsonp-1.1
- jaxrs-2.1 -> cdi-2.0
            -> servlet-4.0
- mpHealth-1.0 -> cdi-1.2 (tolerates cdi-2.0)

Причина, по которой вы видите эти ошибки, заключается в том, что у диспетчера функций OpenLiberty нет достаточных доказательств того, что он может переключиться на зависимость mpHealth-1.0 -> cdi-2.0.

Чтобы исправить это, у вас есть два варианта:

  1. Включить функцию cdi-2.0 в файле server.xml. Это должно помочь устранить неоднозначность для диспетчера функций, чтобы он мог переключаться на зависимость mpHealth-1.0 -> cdi-2.0.
  2. Вместо включения отдельных функций включите вспомогательную функцию microProfile-2.0. Здесь вам не придется беспокоиться о конфликтах функций, но он будет загружать больше функций во время выполнения (например, MP Metrics, MP Config, MP Fault Tolerance и т. Д.), Что повлечет за собой дополнительное время запуска и затраты памяти.
...