Як вибрати між Джерсі, Apache Wink та JBoss RESTEasy? [зачинено]


75

Я щойно чув про Apache Wink , і мені було цікаво, які відмінності він мав порівняно з Джерсі або JBoss RESTEasy . Що можна зробити в одному, а два інших не можуть?

Ми використовували Джерсі для деяких наших внутрішніх проектів, здебільшого для простоти, але я не можу зрозуміти, що робить ці два найкращими, і я б міг їх змінити. Хто-небудь має варіанти використання, для якої ніші кожен із цих заповнювачів?


Відповіді:


114

Впровадження JAX-RS

Джерсі

  • Довідкова реалізація
  • Зазвичай самий передній край
  • Підтримує справжні асинхронні (тобто веб-сокети тощо ...) з'єднання через Atmosphere або версію 2.0.
  • Має підтримку для Spring та стандартних ін’єкційних контейнерів (тобто @Inject).
  • Скляна рибка розв'язує його.
  • Це набагато модульніше, ніж інші проекти JAX-RS.
  • Він має URI Builder
  • Не обов’язково потрібно контейнер для сервлетів.
  • Підтримка гризлі
  • Підтримка Netty (дуже рано).
  • Підтримка Swagger
  • Сорт відсутнього OAuth 2.0. Вам доведеться використовувати інші бібліотеки.
  • Деяка підтримка MVC через Viewables
  • Розміщений на java.net (мінус, оскільки сайт часом страшенно повільний).
  • Ліцензування базується на CCDL 1.1 та GPL-v2. Будь ласка, переконайтеся, що ви перевірили ліцензію на Джерсі, перш ніж використовувати її для комерційного використання

https://jersey.github.io/license.html

RestEasy

Apache Wink (ніколи не використовував)

  • Я не уявляю, чому існує цей проект.
  • Нібито його висока продуктивність зосереджена.
  • У нього є клієнт, побудований поверх HttpUrlConnection (що є мінусом ... його слід підключати, як Spring RestTemplate ).
  • В основному Wink був розроблений власноруч на деяких підприємствах, а потім переданий Apache.
  • Потрібен контейнер для сервлетів.

Рестлет

  • Дуже потужний, але дуже складний
  • Забезпечує деяку підтримку REST на низькому рівні
  • Не вимагає контейнера для сервлетів

Apache CXF

  • Цікава підтримка WADL.
  • Повторно використовуйте та комбінуйте JAX-RS з JAX-WS
  • Підтримка безпеки
  • Інтеграція з весною, хоч і неприємною
  • Припускається автогенерація клієнтських заглушок

Інші RPC-подібні системи

Черги повідомлень

Асинхронний RPC

Моя скромна думка

Я знаю, що OP запитував REST, але якщо це для внутрішнього спілкування, серйозно подумайте про використання або черги повідомлень, або будь-якого іншого асинхронного RPC (Finagle) замість традиційного REST, якщо ваші вимоги відповідають цим системам.

Якщо це повинен бути класичний HTTP REST (зовнішній), я б вибирав між RestEasy чи Jersey, оскільки основна частка акцій вкладена в ці два проекти.

Також дивіться: Відпочинок клієнтів для Java?


1
Я не рекомендую Джерсі (я спробував лише версію 2.5.1). Насамперед надзвичайно важко налаштувати та налаштувати.
Мухаммед Гелбана

Чи можете ви пояснити, чому Рестлет складний з вашої точки зору. Погляньте на приклад перших кроків: restlet.org/learn/guide/2.2/introduction/first-steps/…
Jerome Louvel

Можливо, "складний" - це не те слово, і рестлет також змінився. Я думаю, коли я подивився рестлет, здається, це набагато більше речей, ніж jaxrs. Це, мабуть, найповніша бібліотека сервера відпочинку, отже, "складна".
Адам Гент

2
Він має набагато ширший спектр можливостей REST / HTTP, 6 видань, 44 видання і існує приблизно з 2005 року, але його основне org.restlet.jar є дуже компактним (нульова залежність), уніфікованим клієнтом та сервером. Погляньте наш приклад перших кроків, щоб побачити, як ви можете розпочати роботу за 5 хвилин без необхідності налаштовувати будь-який контейнер Servlet або конфігурацію XML. Але все-таки ви можете дуже сильно рости / масштабуватися: restlet.com/discover/firststeps
Jerome Louvel

15

Вибираючи реалізацію для використання, майте на увазі це: якщо ви спробуєте розгорнути веб-службу Джерсі на JBOSS 7.1, це не буде працювати. Ця помилка трапиться:

Only one JAX-RS Application Class allowed

Це тому, що REST Easy поставляється в комплекті з JBOSS як реалізація JAX-RS за замовчуванням. Отже, JBOSS вирішить, що це реалізація, яку ви хочете використовувати, і не завантажить іншу реалізацію JAX-RS (наприклад, Джерсі). Для того, щоб це виправити, вам потрібно додати наступні рядки до вашого файлу web.xml:

  <context-param>
   <param-name>resteasy.scan</param-name>
   <param-value>false</param-value>
  </context-param>
  <context-param> 
   <param-name>resteasy.scan.providers</param-name>
   <param-value>false</param-value>
  </context-param>
  <context-param>
   <param-name>resteasy.scan.resources</param-name>
   <param-value>false</param-value>
  </context-param>

Посилання: https://community.jboss.org/message/744530


6
Це дуже корисна інформація (хоча вона відповідає на інше питання).
Rick-777

Я гадаю (давно я працюю з матеріалами JBOSS), що ви можете виключити наданий JAX-RS у JBOSS. Або ви можете виключити це у своєму пом. Підсумок: це проблема, з якою можна обійтись.
Йоханнеке

5

Одним з моїх улюблених розширень Джерсі є Viewables. Проглядаються дозволяють легко прив’язати дані до сторінки JSP для реалізації справжньої архітектури Model-View-Controller (MVC):


2
Ви робили цей коментар не раз. Я б сказав навпаки. YMMV.
Rick-777

1

Якщо ви збираєтеся використовувати JBoss 7.x, ви повинні використовувати RestEasy, оскільки він інтегрований у JBoss. Щоб використовувати Джерсі з JBoss 7.x, вам потрібно відключити RestEasy, і це складно!


1
Дивіться відповідь Тихоміра Мещича.
Rick-777
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.