Mvc com managed-beans

Bom dia,

   sou desenvolvedor de sistemas desktop e a algum venho

desenvolvendo pequenos aplicativos em Java. Entrei agora no mundo web
onde já desenvolvi uns pilotos usando Struts. Porém agora estou me
aprofundando na especificação Faces e estou com algumas dúvidas. Hoje na
minha aplicação desktop eu implemento (ou pelo menos eu tento
implementar) o MVC. Então eu tenho minha visão desenvolvida
utilizando swing, meu controlador e meu modelo que é composto, entre
outras, por meus pojos. Eles conversam com a visão utilizando o padrão
Observer. Por motivos óbvios não é possível ser implementar esse padrão
na web (sei lá mas me parece que o faces faz um processo similar) e é aí
que está minha dúvida.
Como eu devo proceder para manter esse modelo na minha aplicação
web? Na verdade minha dúvida é um pouco mais específica: O faces usa os
managed-beans para popular “automaticamente” com os valores dos inputs e
também utiliza métodos desses managed-beans para executar ações
(validação, conversão, listener e eventos de submit). No meu modo de ver
um managed-bean seria similar a um Action no Struts e portanto faria
parte da camada controller. Nesse caso eles não deveria também ser
“pojos”, então eu deveria tê-los separadamente, mas aí ficar repassando
e retornando valores para os managed-beans? Estou meio perdido nos
conceitos, será que alguém pode dar uma esclarecida?