Como criar um aplicativo modular JSF 2.0?

Eu tenho um aplicativo com uma interface bem definida. Ele usa o CDI para a resolução dos módulos (especificamente usa os pontos de injeção da Instância <> nas interfaces da API para resolver os módulos) e passa vários dados para trás e para o quarto pelas interfaces sem problemas. Eu intencionalmente mantive a API e a implementação separadas, e os módulos só herdam da API para evitar acoplamentos rígidos, e o aplicativo conhece apenas os módulos por meio de dependências de tempo de execução e passagem de dados realizada por meio das APIs. O aplicativo funciona bem sem os módulos, que podem ser adicionados simplesmente colocando o jar na pasta WEB-INF / lib e reiniciando o servidor de aplicativo

Onde estou enfrentando problemas é que quero que os módulos criem uma parte da exibição e, portanto, desejo invocar, de maneira portátil, um componente JSF ou fazer uma inclusão no módulo para ter torna sua visão. Eu já resolvi qual módulo gostaria de chamar e já tenho referências à interface do módulo. A maneira que eu inicialmente pensei em fazer isso era fazer uma interface do usuário: include que solicita ao módulo que forneça onde está o modelo de exibição, mas não tenho idéia de como responder a essa consulta de maneira significativa, pois a resolução da visualização é feita no aplicativo raiz, não a raiz da biblioteca.

O resumo executivo é que não tenho idéia de como pular a lacuna do aplicativo para a biblioteca usando o JSF para arquivos .xhtml (modelo / componente

Usar um CC seria bom, mas como especificar que quero uma instância específica do CC em tempo de execução, em vez de ter esse código embutido na págin

É claro que posso invocar o código do aplicativo diretamente e solicitá-lo para marcação, mas isso parece realmente uma força bruta, e uma vez que eu tenho a marcação, não sei exatamente como instruir o JSF para avaliá-lo. Dito isso, posso imaginar um componente que pegaria o caminho do recurso, agarrasse a marcação e a avaliasse, retornando a marcação concluída, simplesmente não sei como implementá-l

Prefiro evitar forçar os desenvolvedores de módulos a adotar a abordagem UIComponent de serviço pesado, se possível, o que significa uma maneira dinâmica de fazer interface do usuário: include (ou algum equivalente) ou uma maneira dinâmica de chamar os CCs. (Não me importo de codificar a abordagem UIComponent ONCE no aplicativo, se é isso que é necessário para facilitar a vida dos desenvolvedores de módulo

Alguma sugestão sobre onde devo procurar descobrir isso? (Vou postar a resposta aqui se a encontrar primeiro)

questionAnswers(3)

yourAnswerToTheQuestion