Эта проблема не нужна. Вы можете безопасно иметь несколько сервлетов в одном веб-приложении, если их шаблоны URL не сталкиваются друг с другом. Обычно, если бы это было так, бит-сервлет-контейнер уже выкинул бы исключение во время запуска webapp. В вашем случае вы зарегистрировали сервлет JSF на /test/*
(что странно, кстати, вы обычно используете для этого *.xhtml
), и вы зарегистрировали JAX- Сервлет RS на /api/*
. Таким образом, вы просто должны вызывать их, используя URL-адреса, соответствующие этим шаблонам URL.
И, чтобы устранить концептуальное недоразумение, вы не можете и не можете «реализовать REST в JSF " вообще. Они полностью независимы друг от друга. Они могут просто легко бегать друг за другом в одном и том же веб-приложении во всем мире, не зная друг о друге. Единственное, что они могут использовать, это сервисный уровень . Но это обычно так. Дизайн служебного слоя в свою очередь не зависит от того, кто его использует.
Эта конкретная проблема не связана с JSF и JAX-RS. Это всего лишь базовые сервлеты . Возможно, также стоит попытаться сделать шаг назад к основам и потратить немного времени на узнать больше о строительном камне в основном о каждом веб-приложении Java EE.
Вы не можете напрямую иметь как в одном классе или слое java. Я реализовал его, как показано ниже
|---> JSF Managed Beans(Inject logic here)
Database --> Daos --> Logic --|
|---> JAX-RS (Inject logic here)
Проводя это для тех, кто пытается это сделать в XPages, есть элемент управления REST, который вы можете удалить на страницу из библиотеки компонентов.
Как привязка ActionListener, вы привязываете класс java к компоненту и установите шаблон url.
См. это примечание: https://oliverbusse.notesx.net/hp.nsf/blogpost.xsp?documentId=2C4E
и пример приложения https://github.com/zeromancer1972/simplerest/blob/master/ODP/XPages/index.xsp