Archive for March 25th, 2008

Não sou tão monstro em comandos Linux quanto meu amigo Cláudio Miranda , mas um comandinho que vem me ajudado bastante é o :

ps aux | grep =run.sh | grep -v grep | awk ‘{ print $6 }’
Que imprime pra mim quanto o JBoss está gastando de memória residente, não é a única métrica importante, mas é um sinal importante para medir quanto que alguns tunnings estão ou não surtindo efeito.

Outra dica interessante é o comando:

watch -d2 “ps aux | grep =run.sh | grep -v grep | awk ‘{ print \$6 }’”

Que mostra a mudança do valor dinamicamente de 2 em 2 segundos.

Há 5 anos atrás tinhamos uma necessidade de integração em um cliente:

a) Usar Java na camada Servidora aproveitando a performance e suporte transacional dos EJBs

b) Usar Delphi como cliente

Eis então que durante alguns dias trabalhei na criação de um componente, o qual demos o nome de Jacode, não me pergunte a origem do nome, talvez eu estivesse bebado demais. Este projeto era embasado em vários conceitos de interoperabilidade, segurança e governança que hoje é bastante presente nas demandas de SOA de mercado. Vários outros desenvolvedores, da minha antiga empresa (Argos), contribuiram, estes caras, a maioria está hoje no Rio de Janeiro, São Paulo e Belo Horizonte, entre eles: Ricado Ferreira(Squadra), David Farias(Squadra) e Fábio Cabral(IBM). Este componente é usado até hoje pelo cliente, e o que pensavámos que fosse nos deixar pelo menos bem de vida 5 anos atrás, ficou para uso de somente um cliente, sendo assim, resolvi buscar os fontes de muitos anos atrás e tentar readaptá-lo para trabalhar em conjunto com o JBoss ESB, tive um tempo estes últimos dias e isto foi possível, apesar de que ainda há vários java.util.Vectors espalhados pelo código, e sem usar nada de Java 5.

Usando o Jacode com JBoss ESB

A idéia é doar/integrar os códigos do Jacode no core do ESB, isto se os caras quiserem/deixare/estiverem de bom humor e etc, que basicamente são 2 classes. a principal: org.jboss.soa.esb.ext.transformers.jacode.Jacode possui um método chamado de : getData(java.sql.Connection conn, int xmlType, int maxResults, String sql); este por sua vez devolve dados através de qualquer camada do JBoss ESB, podendo ser um Socket, ou para facilitar a vida um WebService. Veja exemplo da chamada:

@WebMethod(operationName = “getData”)
public String getData(@WebParam(name = “sql”)
String sql) {
try {
jacode = new Jacode();
return jacode.getData(ConnectionFactory.getConnection(), Jacode.XMLDELPHI, 30, sql) ;
} catch (SQLException ex) {
Logger.getLogger(DelphiBridge.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(DelphiBridge.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}

Na Cadama Delphi

Na camada Delphi, existe a classe da VCL TFieldDataLink que alimenta os DataControls através da referência a um DataSet, no caso este DataSet é um Stream que é o resultado String de nosso método, que é carregado para dentro de um componente TClientDataSet, que por sua vez possuirá o resultado em forma de um DataSet, exibindo os dados num DBGrid por exemplo, ou alguma ferramenta de Cubo de Decisão ou Relatório do Delphi. Veja o código de Exemplo na camada Delphi:

procedure TForm1.Button1Click(Sender: TObject);
var
service: DelphiBridge;
stream: TStringStream;
begin
service:= HTTPRIO1 as DelphiBridge;
ClientDataSet1.close;
stream:=TStringStream.create(service.getProductsSLAs);
ClientDataSet1.LoadFromStream(stream);
ClientDataSet1.open;
ShowMessage(’Data Loaded’);
end;

Integração é a Chave

Como você pode observar não há limites para as integrações no JBoss ESB, o que mais me chama a atenção é que estas são as realidades quando falamos de SOA no Brasil, os exemplos dos livros sempre falam de ERPs magnificos como PeopleSoft, SAP, mas quando pegamos algo em Delphi, VB, Clipper ou DataFlex, aí sim vem a pergunta se realmente sua ferramenta lhe ajuda a integrar sistemas de forma produtiva e realista, ou não!

Se você quiser assistir uma DEMO (meio complicada de criar pois o Wink no Linux é osso), clique aqui. 

[]s