Archive for October, 2007

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

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á.

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.

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

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.

Olá amigos,

Minha palestra amanha estará interessante, se tudo funcionar será melhor ainda =), vou tentar amanha instalar uma Máquina viritual Windows no meu Red Hat Enterprise Linux, para ter algumas aplicações .net interoperando com Aplicativos diversos e não somente em Java.

Para quem estiver lá, espero poder falar algumas das minhas visões sobre SOA, como por exemplo:

Não, SOA não é só WebServices! Por favor, há muito mais além disto!

Vários fornecedores tentam fala só em WebServices, WebServices, WebServices ! Porém o que fazemos com as aplicações legadas C, Cobol, C++, DataFlex, Clipper, FoxPro (overdose de nostalgia). Quem já teve que criar um conector JCA para conversar com IBM/CICS na unha entende bem que a questão de “Webseriçar” tudo não é puramente trivial ou simples como se imagina. Graças a Deus, eu tenho amigos como o Ricardo Ferreira, Fábio Velloso entre outros, que sempre me dão dicas além de conversamos muito sobre vários assuntos relacionados a SOA, e ai idéias das mais loucas acabam surgindo. Sendo assim, em um dos meus exemplos de amanha, mostrarei como aplicar um processo de BAM(Business Activity Monitoring) que no JBoss jBPM tratamos como informações acerca dos processos, instâncias, sendo assim, imagine que uma empresa usa o SugarCRM como solução, e como a maioria sabe o Sugar é escrito em PHP, porém imagine se uma empresa quer ter a um Dashboard, sobre algumas atividades dos processos de vendas de uma empresa, coisas que o SugarCRM faz muito bem. Então resolvi exemplificar um caso de SOA utilizando ESB(Enterprise Services Bus) para isso. usando o JBoss ESB 4.2, um dos projetos que vou mostrar na sexta dia 05.10 no JustJava as 16:30.

BAM como um “Dedo-Duro”

De acordo com o JavaReport (http://www.javareport.com/article.aspx?id=9238&page=) BAM seria:

Put simply, BAM is about the real-time monitoring of key business metrics. These metrics are presented to business users in a “dashboard” format and are used to revise the processes being monitored. The end-goal of BAM is a self-improving process that can learn and continue to tweak itself to become ever better

Sendo assim, a idéia aqui é saber o que o SugarCRM faz qdo fazemos algumas coisas dentro dele, como criar um Lead ou Oportunidade e etc. Para isso, primeiro criamos uma Tarefa (Task), algo muito interessante para se observar do ponto de vista de negócio.

Sugar CRM new Task

Mas ai você deve estar pensando, que truque devemos usar para saber que o SugarCRM adicionou uma nova tarefa? Você deve pensar: Vê o banco de dados Edgar seu imbecil ! Eu até pensaria nisso, mas se nosso Consumidor da informação for uma Aplicação Cobol, Oracle Forms, ou se for um SAP, um PeopleSoft ? Se você falar WebServices, juro que nossa amizade acabou agora :).

Não que WebServices sejam ruins, mas eles tem uma função muito útil, além de confundir as pessoas, mas nesse cenário, ele poderia ser uma das opções, só que o SugarCRM até onde sei não disponibiliza um WebService pro Cobol consumir, sendo assim, a solução que vamos mostrar é mais “bruta”. Como estou executando o SugarCRM no Linux, vi que se eu criar uma nova tarefa, e chamar o comando find para saber o que foi alterado no último minuto no meu file system, como abaixo:

find . -mmin -1

Eu posso ter uma lista de onde o MySQL (banco default do Sugar) guarda as informações de TAKS.
screenshot-jsilvajsilva-opt-java-redhat-products-sugarcrm-sugarcrm-451e.png

Com base na resposta, agora eu posso assumir que alterações em tasks refletem numa alteração no arquivo tasks.MYD , com base nisso, podemos criar um Gateway e um Listener para responder a este evento (estimulo), buscar uma informação via Java (JPA ou JDBC) e publicar as informações numa mensagem numa fila JMS, ou chamar um Invoker que chame um conector JCA para Cobol, PeopleSoft ou qualquer outro.

Bom o resto e a demo final vocês poderão confirir amanha, agora irei recuperar o cérebro treinando meu bom e velho Jiu-Jitsu, vejo vocês amanha!

Beijo no coração

Edgar

Hoje foi o primeiro dia do JustJava, o evento está bastante organizado. E esperamos um grande público e visita no nosso stand da JBoss no evento. Hoje palestrei com a Fabiane Nardon, que falou bastante quase não sobrando tempo pra mim :), mas tudo bem, sei que ela adora a palestra que fizemos no JavaOne 2007 , só que dessa vez na cidade que moramos e em nossa tão querida língua Portuguesa! Vejo vocês agora só na sexta, no último dia, afinal alguém tem ficar no escritório para trabalhar =). Abaixo umas fotos com resolução máxima permitida do celular:

JustJava200703-10-07_1614.jpg03-10-07_1615.jpg

No desenvolvimento de integração de aplicações usando ESB(Enterprise Service Bus), quem não gostar de XML terá problemas sérios, visto que várias dos frameworks e ferramentas usam extensívelmente XML como seus recursos de configuração.

Uma das features já solicitadas para o JBoss ESB é o uso de Annotations, é uma requisição importante que tenho trabalhado em testes utilizando novas features de Deployer do Micro-Kernel, na evolução deste trabalho publico algo por aqui, mas por hora veja os novos consoles presentes no JBoss-ESB 4.2.

JBoss ESB Config

Features como estas visam posicionar o JBoss ESB não mais como uma solução opensource para ESB como o Mule, e sim como um grande provedor de soluções como o BEA AquaLogic Service Bus. Durante o JustJava essa semana, na palestra das 16:30 no auditório nesta sexta dia 05, estaremos mostrando algumas coisas deste produto.

Abraço a todos