Apache Karaf, opiniões?

Srs.,

Alguém aqui já implementou algo p/ OSGi usando o Apache Karaf? Quais são as suas opiniões? Que gargalo encontraram?

[]'s!

A grande vantagem do Karaf é que é muito leve e fácil de instalar. Não tive grandes dificuldades com ele. A única coisa chata é você se adaptar a todos os serviços que ele oferece, que nem sempre são tão bem documentados assim.

E o bicho funciona muito bem em produção: trabalhei em um projeto de telecom que processa milhões de transações por dia sem gritar.

Opa kicolobo, beleza? Obrigado pela resposta.

Então, a minha idéia é utilizar o danado mesmo p/ controlar os componentes mesmo. Mas aí então, surgiram algumas dúvidas. Estou criando uma appl de teste, com dois bundles, um com a parte de persistência e outra com a “view” da coisa toda. Ok, gerei os bundles pelo maven, consegui instala-los no Karaf, mas a questão é: como rodar “deploys”? Digamos que eu tenha um cliente X, qual será o requisito que devo passar p/ ele rodar? Eu vi que tem os web extenders, mas p/ mim não ficou muito claro se numa appl JEE então, eu não teria que ter o web container p/ rodar a aplicação. Enfim, digamos que eu queira rodar uma appl web e que o cliente me peça que tenha que rodar no Tomcat, no JBoss, e no Jetty, sem ter problemas. Como fica essa questão?

Também não ficou muito claro p/ mim o relacionamento com o Spring, estou usando os context.xml p/ definir os beans e tal, mas e se eu quiser a injeção por Spring? Enfim, fiquei meio perdido nessa parte, hehe. :). Até dei um olhada no Spring DM, mas vi que está abandonado na Apache.

Tem algum tutorial por aí? Alguma boa dica?

Valeu.

Pois é: a maior dificuldade do Karaf irônicamente é o próprio OSGi.

Você tem duas opções quando trabalha com ele:

  • Sua aplicação inicia um container OSGi e o usa como um cliente (excelente pra aplicações desktop ou que possam ser executadas FORA de um servidor de aplicações)
  • Sua aplicação está inteirinha executada dentro do container OSGi (bacana quando você quer que seu servidor de aplicações seja O container OSGi)

Com relação à web, já vi duas abordagens:

  • Você inclui um container web dentro do container OSGi
  • Você embarca o container OSGi dentro da sua aplicação web (ai você vai ter um container OSGi dentro de um war, que por sua vez está dentro de um servidor de aplicações, a pior coisa que você pode fazer na sua vida)