При развертывании в качестве приложения WAR в WildFly, Spring Boot
приложениям может потребоваться некоторый расширенный API-интерфейс отражения JDK для
проксирование, включенное в пакет sun.reflect. Для этого ваш
приложение должно перечислить jdk.unsupported в качестве зависимости в его
Файл MANIFEST.MF (об этом см. Вики WildFly).
source - поэтому я применил это первым.
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<packagingExcludes>WEB-INF/web.xml</packagingExcludes>
<archive>
<manifestEntries>
<Dependencies>jdk.unsupported</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
Далее я исправляю ведение журнала: я применил первый комментарий принятого ответа здесь для ведения журнала и добавил basic logback.xml отсюда в src / main / resources .
Итак, мой основной файл jboss-deploy-structure.xml следующий:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="logging" />
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
С этого момента в консоли Wildfly вы можете видеть, что происходит.
Я тестировал POC в двух дистрибутивах:
Распределение только по сервлетам
(Wildfly-servlet-13.0.0.Final.zip)
Это работало с базовым jboss-deploy-structure.xml.
Распределение сервера приложений
(Wildfly-13.0.0.Final.zip)
На этом сервере мне пришлось добавить модуль org.reactivestreams:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="logging" />
</exclude-subsystems>
<dependencies>
<module name="org.reactivestreams"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
Вы должны поместить этот файл в каталог src / main / webapp / WEB-INF.
Если вам нужно использовать поддержку контента другого типа, чем application / x-www-form-urlencoded, вы можете сделать это, зарегистрировав соответствующий MessageConverter для вашего контента.
В вашем случае из-за строки запроса в теле запроса FormHttpMessageConverter будет «правильным», и вы должны указать свой тип контента как константу MY_OTHER_CONTENT_TYPE:
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FormHttpMessageConverter converter = new FormHttpMessageConverter();
MediaType utf8FormEncoded = new MediaType("application","x-www-form-urlencoded", Charset.forName("UTF-8"));
converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_FORM_URLENCODED, MY_OTHER_CONTENT_TYPE));
converters.add(converter);
super.configureMessageConverters(converters);
}
Однако используемый конвертер должен справиться с этим, поэтому вы должны проверить источник конвертера (я так и сделал, и в случае FormHttpMessageConverter он должен работать таким образом), я думаю (или вы можете попробовать его) и если это работает, работает). Иногда это не так просто просто , но я надеюсь, что для вас это сработает.
Если вы не смогли решить ее, пожалуйста, дайте нам полный образец проблемного запроса , и я постараюсь, чтобы он работал.
к тестированию
Пожалуйста, убедитесь, что вы используете заголовок Content-Type: application / x-www-form-urlencoded с методом POST, и ваши параметры перемещаются в теле запроса. (Я использовал плагин Boomerang Chrome для тестирования, и там, когда я определил параметры запроса для пост-запроса, он добавлялся в URL-адрес запроса как параметры получения. Это явно приводило к неверному результату.)
Надеюсь, это поможет вам. Если нет, то после того, как вы примените правильные параметры ведения журнала, вы сможете показать нам причину (обновите ваше сообщение за исключением).