Перемещение простого приложения Spring из Tomcat в Liberty не работает - PullRequest
0 голосов
/ 24 апреля 2018

Для изучения Spring я создал очень маленький проект и успешно построил его с помощью Gradle.Затем я смог успешно запустить получившийся .war, используя java -jar UserSettingController.war, получив сообщение Spring:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.1.0.BUILD-SNAPSHOT)

Затем я хотел переместить это из Tomcat в Websphere Liberty.Итак, наивно я скопировал файл .war из моего проекта / build / libs / в соответствующую папку dropins, затем запустил сервер Liberty.В этот момент в Liberty console.log я вижу не логотип Spring , а скорее следующее:

[WARNING ] CWWKC0044W: An exception occurred while scanning class and annotation data. The exception was java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at [internal classes]
.
[WARNING ] CWWKC0044W: An exception occurred while scanning class and annotation data. The exception was java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at [internal classes]
.
[WARNING ] CWWKC0044W: An exception occurred while scanning class and annotation data. The exception was java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at [internal classes]
.
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://ui15-lin.utopusinsights.com:9080/UserSettingController/
[AUDIT   ] CWWKZ0001I: Application UserSettingController started in 4.829 seconds.
[AUDIT   ] CWWKF0012I: The server installed the following features: [jsp-2.2, servlet-3.1, ssl-1.0, jndi-1.0, websocket-1.0, json-1.0, localConnector-1.0, adminCenter-1.0, distributedMap-1.0, jaxrs-1.1, restConnector-1.0].
[AUDIT   ] CWWKF0011I: The server defaultServer is ready to run a smarter planet.

Мой вопрос: имеет ли значение [Warning] s?;если так, в чем проблема?Или приложение действительно прослушивает через веб-сервер, и если да, то к какому порту оно прослушивает (8080?)?

1 Ответ

0 голосов
/ 25 апреля 2018

Весьма вероятно, что в приложение включен файл jar с функцией java9.

Наиболее просто, существует нормальный класс, скомпилированный в java9.

Скорее всего,приложение загрузило утилиту jar, например, log4j, которая имеет класс «module-info» или содержит каталог с несколькими выпусками (в настоящее время возможна только «META-INF / version / 9»).

(См. https://www.javaworld.com/article/3184029/java-language/java-9s-other-new-enhancements-part-4-multi-release-jar-files.html, для получения дополнительной информации о мульти-выпусках jar.)

Файл класса "module-info" всегда будет компилироваться в java9 или выше.Классы в каталоге с несколькими выпусками будут скомпилированы в версию Java, которая указана в качестве имени каталога.

Во всех случаях, если класс достигает обработки аннотаций с использованием ASM, возникает исключение IllegalArgumentException.(Попытка загрузить класс также приведет к исключению.)

Проблема возникает, отчасти, потому что текущая обработка аннотаций WebSphere Liberty использует простой тест для обнаружения ресурсов «класса», причем тестпроверить, заканчивается ли имя ресурса класса (запись файла или jar) на «.class».До введения классов типов module-info и до помещения классов в папку META-INF этого теста было достаточно.

В качестве обновления делается изменение кода, которое предотвратит проблемные классы(класс «module-info» или любой класс в «META-INF») из обрабатываемого.См. Выпуск 1635 об открытой свободе: https://github.com/OpenLiberty/open-liberty/issues/1635 для получения дополнительной информации.

В отношении обновления проекта, которое решает проблему: мой лучший смысл заключается в том, что это обновление проекта влияет на то, что фляги помещаются вприложение, в результате чего банки с функциями java9 больше не вставляются.

...