Как реализовать службу JAX-RS RESTful в системе JSF

В моей лаборатории меня попросили создать простой веб-сайт с использованием структуры JSF и использовать REST. Я провел некоторое исследование этих двух. Оказывается, для REST я должен использовать JAX-RS с Джерси. Мне было интересно, как я могу интегрировать эти две структуры, JAX-RS и JSF?

У меня уже есть сервлет в web.xml для JSF:

  Faces Servlet javax.faces.webapp.FacesServlet   Faces Servlet /test/*  

Для Джерси я решил, что должен использовать ниже сервлет в web.xml :

  Jersey REST Service org.glassfish.jersey.servlet.ServletContainer  jersey.config.server.provider.packages com.jbm.rest    Jersey REST Service /api/*  

Теперь моя забота заключается в том, что мне кажется, что этот сервлет Джерси заменит сервлет Faces в web.xml . Это изменит мое приложение от JSF до JAX-RS. Но я хочу сохранить JSF и использовать JAX-RS. Как я могу это сделать?

Эта проблема не нужна. Вы можете безопасно иметь несколько сервлетов в одном веб-приложении, если их шаблоны URL не сталкиваются друг с другом. Обычно, если бы это было так, бит-сервлет-контейнер уже выкинул бы исключение во время запуска webapp. В вашем случае вы зарегистрировали сервлет JSF on /test/* (что странно, кстати, вы обычно используете *.xhtml для этого), и вы зарегистрировали сервлет JAX-RS в /api/* . Поэтому вам просто нужно позвонить им, используя URL-адреса, соответствующие этим шаблонам URL.

И, чтобы устранить концептуальное недоразумение, вы не можете и не можете «реализовать REST в JSF» вообще. Они полностью независимы друг от друга. Они могут просто легко бегать друг за другом в одном и том же веб-приложении во всем мире, не зная друг о друге. Единственное, что они могут использовать, это уровень сервиса или «общий» (CDI). Но это обычно так. Дизайн сервисного уровня, в свою очередь, не зависит от того, кто его использует.

Эта специфическая проблема не связана с JSF и JAX-RS. Это просто базовые servlets . Возможно, стоит также попытаться сделать шаг назад к основам и потратить немного времени, чтобы узнать больше о строительном камне в основном о каждом веб-приложении Java EE.

Вы не можете напрямую иметь как в одном classе или слое java. Я реализовал его, как показано ниже

  |---> JSF Managed Beans(Inject logic here) Database --> Daos --> Logic --| |---> JAX-RS (Inject logic here) 

Проводя это для тех, кто пытается это сделать в XPages, есть элемент управления REST, который вы можете вывести на страницу из библиотеки компонентов.

Подобно привязке ActionListener, вы привязываете Java-class к компоненту и задаете шаблон url.

См. Это примечание: https://oliverbusse.notesx.net/hp.nsf/blogpost.xsp?documentId=2C4E

и пример приложения https://github.com/zeromancer1972/simplerest/blob/master/ODP/XPages/index.xsp

Interesting Posts
Давайте будем гением компьютера.