такая связь позволяет разделять бэк и фронт (могут быть на разных серверах, может быть много бэков и много фронтов), но замедляет взаимодействие (вставка данных из бина в пределах одной программы все равно быстрее, чем посылка запроса. генерация жсона, посылка ответа, разбор жсона, вставка данных)
Ты не поверишь, но когда твой фронт - JSF, он всё равно генерит запрос (и жсон или какое бы там ни было тело, не помню, что под капотом), посылает его, а твой бэк принимает и разбирает его. Действия клиента не магическим образом оказываются на стороне сервера.