Pergunta

Alguém já usou OSGi e JSF juntos?

Eu pergunto porque JSF usa a magia classe-loader para encontrar componentes personalizados. A partir de um tutorial (grifo meu):

Este arquivo de configuração vai acabar sendo META-INF / faces-config.xml no arquivo .jar que representa este componente. JSF irá procurar por um tal nome do arquivo em cada um dos arquivos .jar que são carregados no tempo de execução (no WEB-INF / lib para arquivos .war) e usar cada um deles em seu configuração. Desta forma, múltiplos .jar componentes podem ser combinados em uma aplicação web, e todos os componentes descritos em cada jar estará disponível para a aplicação.

Eu gostaria de ser capaz de ter componentes personalizados JSF como pacotes OSGi (ou seja, componentes personalizados estão em diferentes pacotes OSGi do que o tempo de execução JSF) e para JSF para ser capaz de encontrá-los em tempo de execução.

Alguém já fez algo semelhante?

Foi útil?

Solução

É possível da seguinte forma:

  • O seu pacote OSGi web tem que ter "Exigir-Bundle" em MANIFEST.MF apontando para o pacote que contém os componentes
  • O seu jar componente tem de ter Export-Package contendo META-INF e subpackages de META-INF, onde houver qualquer arquivo relacionado JSF (e de pacotes de curso padrão do componente). Por exemplo: Export-Package: META-INF, meta-INF.resources ...

Se você usar maven-bundle plugin que você deve usar um apóstrofo e um igual para exportar META-INF e sub-pacotes. Por exemplo:

<Export-Package>
  a.b.c,
  '=META-INF',
  '=META-INF.resources',
  ...
</Export-Package>

Em JSF Spec 2.2 pode haver partes sobre o relacionamento JSF-OSGi. Para ver o progresso consulte http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-942

Outras dicas

Eu não estou certo de que é exatamente responder a seu problema, mas eu achei esta discussão sobre Spring e OSGi interresting, especialmente este resposta específica onde dependências e classpath são empacotados no MANIFEST.MF.

Esse fio também leva à atualização deste para tutorial sobre Spring dinâmico Modules (DM) para Plataformas OSGi Serviços ™ , que também podem ser de interesse.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top