Pergunta

Eu tenho um grande, crescendo aplicativo OSGi com um número de pacotes. Estou curioso para saber a melhor forma de gerir este tipo de aplicação. Atualmente, estou usando Eclipse e Maven, mas, embora isso é ótimo para a construção de pacotes (via maven-bundle-plugin), a partir de agora não foi fácil de gerir todo o aplicativo.

O que eu gostaria de fazer é quer ter uma configuração de corrida ou UMA pom.xml que pode ser lançado e todo o application / projeto ser construído e lançado. Além disso, eu gostaria de ter algo que seria bom para depuração.

Já ouvi falar de Construct PAX e tê-lo instalado em Eclipse, mas até agora tem sido de pouca ajuda (talvez eu não estou usando-o corretamente).

Estou certo de que há pessoas lá fora com aplicativos OSGi grandes que estão sendo gerenciados corretamente. Qualquer conselho que poderia ser compartilhada iria ajudar tremendamente.

Obrigado, Stephen

Foi útil?

Solução

A configuração de execução é possível através Pax Runner . Ele permite que você escolha implementação da plataforma OSGi, especificar perfis (conjuntos pré-embalados de pacotes para algum papel, por exemplo web, log, ds, etc.) e tem boa provisionamento de apoio, por exemplo, ele pode carregar pacotes do repositório Maven. Como resultado, você pode ter uma configuração de execução como

--platform=felix
--log=INFO
--profiles=scalamodules,ds,config,log
mvn:com.my/bundle/1.0.1-SNAPSHOT@update
# other bundles

No caso de sua aplicação é muito grande ou você tem aplicações diferentes, há uma maneira de criar próprios perfis também.

Outras dicas

Bem ...

Tudo deopends sobre o que você quer dizer com "gestão" da aplicação.

Para dev lançamento tempo, construindo e depuração -. Eclipse IDE deve caber a conta perfeitamente

Maven ... Eu não posso falar por ele, como eu nunca usei-me.

Temos uma muito grande aplicação baseada eclipse (vários, na verdade) e no lado de dev de coisas que não estão usando nada de especial além do Eclipse e é SCM integrado.

No servidor cc construção, também usamos eclipse sem cabeça para fazer a construção e embalagens.

Agora, a configuração do espaço de trabalho tem ido um pouco fora de mão de tarde com todas as dependências e etapas de construção intermediários, por isso estamos investigando Buckminster para gerir a materialização de recursos da plataforma e espaço de trabalho de destino.

Se isso der certo, provavelmente vamos passar para a construção com Bucky, bem como -. Não deixe parece promissor

(Eu não tenho nenhuma experiência com PAX, mas à primeira vista, parece promissor, bem ...)

eu sou muito novo para OSGi, mas,

não seria possível usar OBR-service, de tal forma que você teria um OBR arquivo de repositório que precisa dos feixes e deixe a figura-service OBR as dependências e preencher seu OSGIhost para você?

Esta área eu acho que tem muito pobre suporte no momento. OSGI realmente não define nada sobre a implantação ou embalagem, de modo cabe a outras estruturas (por exemplo, Eclipse) para chegar a sua própria maneira de fazê-lo.

Se você está construindo uma RCP (base Eclipse) aplicação, em seguida, os sistemas eclipse fazer todas essas coisas, para baixo direito de criar exes etc. No entanto constrói são feitas principalmente na área de trabalho do Eclipse, sem cabeça compilações são mais complicado. O projeto Tycho está tentando tornar isso mais sensata juntando-se os ciclos de construção do Maven e Eclipse, no entanto, ainda está focada em aplicativos RCP em vez de OSGI genérico.

Se você não fazer RCP, que é a minha situação, bem, então você provavelmente tem que rolar sua própria solução, como eu não encontrei nenhuma solução geral. Aqui está um esboço do que fazemos:

Nós definimos um projeto POM que lista todos os pacotes que estão contidos na sua aplicação. lista as referências Tudo isto projeto faz é -. vamos chamá-lo de 'bundle-list' do projeto

Em seguida, usamos provisão pax para executar o projeto no modo de desenvolvimento. Isto é conseguido, fazendo o 'bundle-list' pom o pai do pom provisionamento do projeto pax (geralmente na pasta 'provisão'). Então, quando você começar a pax, ele usa a lista de pacotes a partir desse projeto para começar a OSGi. As referências pacote no projeto 'bundle-list' têm de ser marcado como escopo 'fornecida' para que isso funcione.

Em seguida, criar uma distribuição, temos um outro projeto. Este projeto também tem o projeto 'bundle-list' como seu pai. Este projeto utiliza vários plugins para criar uma distribuição, incluindo o download dos frascos pacote. A distribuição inclui scripts que iniciam OSGI, mas estes são escritos a mão, não há sistemas pax aqui.

Isso funciona bem para nós para manter a lista de pacotes em um lugar, mas ainda há um monte de roteiros escritos à mão, e há problemas de compartilhamento de configuração entre os dois sistemas - por exemplo, arquivos de configuração, níveis de início pacote etc.

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