Всякий раз, когда вы используете специфичные для поставщика функции c, такие как зависимости RESTEasy для WildFly, вы не можете легко перенести ваше приложение на другой сервер приложений (например, Payara / Glassfish / Open Liberty).
В качестве передового опыта просто начните с зависимости Jakarta EE API:
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>8.0.0</version>
<scope>provided</scope>
</dependency>
Это включает в себя спецификацию JAX-RS 2.1, которую все серверы приложений поддерживают вне коробка. Если вы просто используете это, вы сможете легко перенести ваше приложение на другой сервер.
Спецификация JAX-RS 2.1 охватывает множество функций, которых, скорее всего, достаточно.
Могут быть некоторые крайние случаи, когда спецификация не предоставляет простого в использовании решения, и вы можете захотеть включить специфичные для поставщика реализации c, которые не являются частью формального JAX-RS Спецификация.
Хорошим примером является отсутствие поддержки MultiPart
данных JAX-RS, например, для загрузки файлов на сервер. RESTEasy предоставляет решение для этого, если вы импортируете в свой проект Maven следующее:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
<version>3.6.3.Final</version>
<scope>provided</scope>
</dependency>
Недостатком здесь является то, что если вы используете какой-либо импорт, который не приходит из javax.ws.rs
/ jakarta.ws.rs
, вы вы используете что-то, выходящее за рамки спецификации.
С другой стороны, вам также следует подумать о вероятности переключения сервера приложений.
ОБНОВЛЕНИЕ:
Что если, например, в обновленной реализации сервера все еще нет ошибок?
Никто не знает, не содержит ли реализация ошибок. Вы все еще должны запланировать некоторое время для проверки / тестирования при обновлении версии вашего сервера. Это также верно, если вы полагаетесь на простую Джакарту EE 8 spe c. В общем, производители серверов также тратят время на тестирование всего (имея большой набор тестов) и, возможно, уже найдут исправления некоторых ошибок. Но тем не менее, вы не можете быть на 100% уверены, что после обновления сервера все работает без ошибок.
Говоря об ошибках после обновления сервера приложений и JAX-RS, у меня был один с Payara, где все мои фильтры запросов JAX-RS выполнялись дважды для входящего запроса.
И, кстати. Вы не должны принимать Tomcat во внимание. Tomcat - это просто контейнер сервлетов, а не полностью совместимый с Jakarta EE сервер приложений. На домашней странице Jakarta EE вы можете просмотреть все Jakarta EE 8 совместимых серверов .