Вы столкнулись с довольно большими усилиями по переписыванию.Действительно в зависимости от размера вашего существующего приложения.Логика вашего приложения должна быть перенесена либо на клиентскую сторону в ваш Angular javascript / typcript, либо на ваш серверный API, который вам нужно будет создать для поддержки приложения.Это довольно большое усилие.Возможно, вам удастся добиться некоторых улучшений скорости / производительности в вашем приложении JSF с помощью частичной перезагрузки страниц или попробовать TurboLinks для ускорения переходов страниц.
См .: https://github.com/turbolinks/turbolinks
У меня естьнесколько успешно преобразовал несколько JSF и приложений Struts в приложения Angular + Java REST API.Вы можете сохранить свою спящую модель, вероятно, как есть.Вам нужно будет создать REST API, чтобы упростить запросы / отправку данных между внешним интерфейсом Angular и вашим внутренним интерфейсом Java.Код, который входит в ваши контроллеры REST, может быть извлечен из ваших существующих компонентов поддержки, но в конечном итоге часть его придется переписать в интерфейсе Angular, в зависимости от того, как вы хотите, чтобы приложение работало.
Структура проекта, которую я, вероятно, предложил бы, состоит в том, чтобы взять существующий код гибернации, добавить его в новый проект Jax-RS.(Вы также можете использовать Spring MVC, я никогда не использовал Spring, поэтому не знаком с его возможностями).И начните создавать API для предоставления доступа к данным, которые потребуются вашему интерфейсу.Затем создайте свой угловой интерфейс как отдельный проект.В конечном итоге он может быть скомпилирован / запутан / упакован в ваш проект EAR и развернут вместе с остальным приложением, или просто размещен как статический веб-контент.