OSGI - Serviços a seu Dispor

Em 2004 foi primeira vez que vi oOpen Services Gateway Initiative - OSGI, quando avaliava uma forma de atualização de módulos(bundles) de uma aplicação, de forma ciclica e com suporte a dependências, mais ou menos como o Maven faz, ou seja, em termos gerais que cada módulo fosse um plugin para o agente executador: A Aplicação. Naquele época, avaliei alguns esforços da IBM e o Oscar Framework.

Passando vários anos, a necessidade de habiltiação de Serviços passou a ser requisito para o mercado, OSGI pode ter uma boa Aplicabilidade pra distribuição, governança, gerenciamento, gestão de ativos em termos de componentes/serviços.

Em busca de uma solução para meus brinquedos de Profiler, resolvi fazer algumas coisas com o JBoss Micro-Container, Jetty e o Apache Felix , sendo este a implementação de OSGI da Apache, e presente também no projeto Spring OSGi.

Algumas dicas do Felix:

  • Ao fazer o download, você tem que ir ao diretório bin, porém não há um .sh ou .bat, nesse momento você tem que recorer ao braço forte e digitar: java -jar felix.jar
  • O Felix vai perguntar qual o nome do seu profile (registros de serviços OSGI), para que tudo funcione, copie a basta bundle para dentro da bin e digite “bundle” apenas.
  • Pronto, Felix estará no ar.

Criando um Serviço OSGI

Basicamente você precisa primeiro pensar em Interfaces, ou seja: O contrato do seu serviço, para exemplificar, criemos uma Interface MoneyConverter.java:

[java]

package br.com.edgarsilva.service;

public interface MoneyConverter {

public static final String BRAZILIAN_MONEY= “BRL”;
public static final String BRITSH_MONEY= “US”;

public Double convert(Double amount, String money);

}
[/java]

O OSGI precisa de um “ativador” dos seus serviços, no caso criamos um Ativador para esse pequeno serviço de Conversor de moedas, veja o exemplo:

[java]

package br.com.edgarsilva;

import br.com.edgarsilva.service.MoneyConverter;
import br.com.edgarsilva.service.impl.SimpleMoneyConverter;
import java.util.Properties;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

/**
*
* @author edgarsilva
*/
public class Activator implements BundleActivator {

public void start(BundleContext ctx) throws Exception {

Properties props = new Properties();

ctx.registerService(MoneyConverter.class.getName(), new SimpleMoneyConverter(),props);

}

public void stop(BundleContext ctx) throws Exception {
System.out.println(”Servico Parado !”);
}

}
[/java]

Veja que no método start(), retornarmos uma classe que implementa o serviço.

Alterando o MANIFEST do Jar do Serviço

Para que o container/framework OSGI reconheça seu compoente, ao contrário de descriptors via XMLs de darem medo, você precisa apenas preencher algumas informações, como no exemplo a seguir:

[java]

Bundle-Name: Money Converter
Bundle-Description: Conversor de Valores Dolar
Bundle-Vendor: Edgar Silva
Bundle-Version: 1.0.0
Bundle-Activator: br.com.edgarsilva.Activator
Export-Package: br.com.edgarsilva.service
Import-Package: org.osgi.framework
[/java]

Com OSGI você tem a capacidade de dizer quais as dependências seu serviço têm, assim como o que do seu pacote você quer que seja público para os outros componentes do cotainer OSGI. Isso pode ajudar bastante no desenvolvimento de forma mais tranquila no que diz respeito a independência e ao mesmo tempo dependência.

Pelo o que você viu lembra bastante JMX e o modelo de MBeans do JBoss Microcontainer, falando nisso, deveremos suporta OSGI dentro do JBoss MC também, não sei dizer qual a implementação iremos usar, particularmente gostei bastante dos fontes e da documentação do Felix.

Curiosidade: Você sabia que todo o esquema de atualização de plugins do Eclipse é baseado em OSGI, além de alguns core-components de alguns Application Servers de Mercado.

Para maiores informações: http://felix.apache.org

Presença no BorCon 2007 (São Paulo)

Do dia 29 a 31 de Outubro acontece o Borland Conference 2007 Brasil, no Frei Caneca, estarei por lá falando sobre as estratégias Opensource SOA de JBoss em conjunto com algumas soluções Borland. Espero ter tempo de conseguir instalar o Delphi para fazer alguns exemplos com .net também.

O Titulo da Palestra é: SOA (Simple, Open and Affordable), uma perspectiva prática de JBoss

Só assim para rever amigos das antigas, entre eles meu grande amigo BorlandMan: Renato Quedas. Espero ver voces lá.

JBoss Profiler 2.0

profilerlogo

Clebert Suconic, É um JBoss Core Developer que já passou pelo JBoss Cache, JBoss Serialization e atualmente está no JBoss Messaging. Clebert é sempre uma ótima referência de talento brasileiro na JBoss,  ele foi o criador e é atual Project Lead do JBoss Profiler, a ferramenta capaz de realizar testes e profiler vários Ambientes de Servidores de Aplicações , exemplo Sun Java System Application Server e claro o JBoss AS.

Já havia usado o JBoss Profiler inúmeras vezes na minha antiga empresa, aliás o Profiler nasceu por lá , visto que Clebert também trabalhou para a Summa. Estamos agora juntos com várias pessoas da comunidade, incluindo pessoas da Europa e até Japão, trabalhando na versão 2.0 do JBProfiler.
Várias novidades, estarão vindo no JBoss Profiler 2.0, entre elas esperamos a integração 100% Java para coleta de snapshots, assim como um webconsole novo, com alguns novos gráficos e todo construido utilizando JBoss Seam. Bom, novidades deste projeto, tentarei expor um pouco a respeito delas por aqui. A principal novidade é a nova logo do Projeto. Espero que gostem.

Ótimo Artigo sobre SOA

Pierre

Pierre Fricke, Diretor de Produtos da JBoss, escreveu um ótimo artigo sobre SOA, muito mais de visão de negócio e aplicabilidades, problemas e vantagens do que sobre Tecnologia, vale a pena conferir, leia aqui:


Artigo de Pierre Fricke

JustJava 2007 - Fotos, Comentários do Evento

O JustJava 2007 acabou, o evento na sua execução foi muito bom, a Sucesu-SP está de parabens. O Senac, apesar de longe, oferece uma ótima estrutura para um evento do porte do JustJava, que sem dúvidas ainda é o maior evento de Java do Brasil.

A única crítica ao evento está mais no Soujava, grupo do qual já fui bem mais ativo como colaborador, que foi responsável pela troca de Títulos nas palestras de Projetos Opensource que alguma empresa comercial seja o Sponsors, e isso aconteceu e eu fui uma das pessoas mais contra tudo isso, onde briguei bastante, me aborreci bastante, e ouvir várias pessoas reclamando disso comigo no evento, só me faz ter a certeza que eu então não estava errado. Por isso que muitas pessoas viram até palestra sobre o “Poodle Web ToolKit (Google)”, “Frameworks Ágeis (Spring)”, ” Soluções JCHEFE para SOA (JBoss)”. Tomara que esse tipo de coisa seja corrigida no próximo evento :).

JustJava - Aqui Luiz Bentes, meu conterraneo

Público no JustJava

Público no JustJava

Eliane, do Marketing da Red Hat no Stand de JBoss

A minha auto-crítica foi que minha segunda palestra sobre SOA poderia ter sido bem melhor, mas problemas técnicos em projetor e no meu laptop atrapalharam bastante, espero também maior sorte pra mim na próxima vez.