#java #rest #jersey #wildfly
#java #rest #джерси #wildfly
Вопрос:
Я пытаюсь перенести приложение Java EE 7 с сервера WebLogic (оно хорошо работает на нем) на WildFly. Но запросы Rest работают, поскольку это непонятно. Может быть, кто-то сталкивался? Я показываю код конфигурации и зависимости. Я был бы благодарен за любую помощь. В основном всплывают ошибки, связанные с типом содержимого: MessageBodyReader не найден для типа носителя = text / html; кодировка = UTF-8;
jboss-deployment-structure.xml
jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclude-subsystems>
<subsystem name="jaxrs" />
<subsystem name="resteasy" />
<subsystem name="webservices" />
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
pom.xml
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.25</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.25</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.connectors</groupId>
<artifactId>jersey-apache-connector</artifactId>
<version>2.25</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.25</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-jaxb</artifactId>
<version>2.25</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.25</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-jetty-servlet</artifactId>
<version>2.25</version>
</dependency>
Rest
@GET
@Produces({MediaType.APPLICATION_XML, AbstractFacade.TYPE_JSON_UTF})
public List<Country> findAll() {
return countryBeanLocal.findAll();
}
Запрос
countries = restClient.readEntity(
restClient.getWebTargetByPath("country")
.request(MediaType.APPLICATION_XML, RestClient.APPLICATION_JSON)
.get(), new GenericType<List<Country>>() {
});
Самое интересное, что после перезагрузки сервера он работает один раз, а второй — нет.
Комментарии:
1. Похоже, вы получаете какое-то исключение на стороне сервера, и сервер отправляет вам HTML-страницу с ошибкой. Вот почему в сообщении об ошибке отображается текст / html. Вы должны получить ответ в виде
Response
и проверить статус, и если это не код статуса успеха, проверьте тело. Держу пари, что это HTML-страница с ошибкой. Если да, выясните, в чем ошибка на стороне сервера.2. @Paul Samsotha Спасибо за ответ, я пытаюсь исправить это на стороне сервера =) Интересно, что на сервере WebLogic таких проблем нет, и код не изменился.
3. Нужно ли использовать Jersey? В целом я обнаружил, что перенос между серверами приложений проще, если вы просто используете, в данном случае, стандартный JAX-RS. Использование альтернативной реализации JAX-RS — под прикрытием того, что Wildfly использует RestEasy, — может привести к конфликту. Используя стандарты, вам все равно. Действительно, WLS также не должен требовать зависимостей от Джерси.
4. @stdunbar Да, мне нужно использовать jersey, но я не могу отказаться от RestEasy. Спасибо за ответ. Может быть, вы все еще можете что-то сказать. Поскольку я, возможно, не понимаю, о чем вы говорите =)