segunda-feira, 30 de novembro de 2009

Applying Agile and Lean Principles to the Governance of Software and Systems Development

Reading a couple DeveloperWorks articles at IBM portal, I've found this very interesting Scott Ambler work that talks about agile and lean methods applied to IT governance. For those that work day by day on a IT environment trying to maintain projects aligned to the business and delivering value at every project milestone, it's a good reference.

The article is freely available to download at the following link:

ftp://ftp.software.ibm.com/software/rational/web/whitepapers/Lean_Development_Governance.pdf

Enjoy It!

quinta-feira, 19 de novembro de 2009

Plugin de Governança SOA para o RMC

Já está disponível (a um certo tempo) um plugin de governança SOA para o Rational Method Composer (aka RMC). O plugin oferece um conteúdo bem interessante para a composição de métodos de entrega baseados nas melhores práticas da Rational sobre governança em SOA.

Você precisa ter instalado o RMC 7.1 ou superior para instalar este plugin. Dentre as features encontradas, existe uma bilbioteca densa sobre cenários de governo e empresas de telco (minha área) que envolvem a aplicação de CoE's e corpos de governança. Através do modelo de framework, é simples usando o RMC a criação do seu próprio método de governança baseado nas melhores práticas. Fiz uma PoC com este plugin e criei, para um cenário fictício, um método em apenas uma semana. Vale a pena conferir!

Problemas com o NotifyFTP do JBoss ESB

Estou fazendo uma prova de conceito para um cliente estes últimos dias, e me deparei com uma situação que merece um blog, por se tratar de um problema daqueles que não adianta ler documentação, acessar google, nem tentativa de erro.

Usando o componente Notifier do JBoss ESB para enviar uma mensagem do barramento para um diretório FTP remoto, vi que mesmo fazendo tudo certo, o arquivo não é enviado de forma alguma. Este tipo de situação te faz revisar coisas bem atípicas como regras de firewall, configuração do servidor FTP, parâmetros do Apache entre outros. A listagem abaixo mostra como, de acordo com a documentação, deve ser utilizado o Notifier para envio de mensagens a um FTP:

A chave para resolver o problema é utilizar o atributo "passive" na declaração do notificador. A configuração então ficaria assim:

Ai você me pergunta? - "Mas Ricardo, como você achou este parâmetro?" E a resposta é simples: Conversei com os desenvolvedores do ESB e eles me explicaram detalhadamente sobre este parâmetro. Este é um benefício de trabalhar numa empresa como a Red Hat, benefício este que, pessoas que contratam uma subscrição também têm. O acesso as informações se torna muito mais eficiente, e a resolução de problemas é feita de uma forma confortável para seu orçamento e prazos.

E ainda têm gente que acha isso caro ... dizendo que têm que ser de graça. Pois então, sendo de graça, você pode ainda mandar um e-mail para os core-developers dos produtos e rezar para que eles leiam, e se lerem, que eles respondam. Ou espere por blogs que nem este, que também dependem da boa vontade e paciência das pessoas. Como exemplo do que estou falando, não explicarei no post qual é a razão do parâmetro "passive", mande um e-mail que eu explico ... se eu puder ;-)

Boas Integrações!

quinta-feira, 12 de novembro de 2009

Criando Variáveis de Contexto no JNDI do JBoss

Este post é pra deixar registrado uma dica que acredito ser interessante pra quem desenvolve aplicações em JBoss. Um amigo me perguntou sobre isso e tendo esse tipo de coisa registrada em blog me pouca alguns minutos de pesquisa nas docs do JBoss. Vamos lá ...

Imagine que você têm uma aplicação rodando em JBoss, mas gostaria de ter parâmetros gerais definidos num arquivo externo ao módulo da aplicação. Estes parâmetros informam coisas como por exemplo, a língua e idioma que a aplicação deverá carregar nos arquivos de bundle. Uma forma simples de se fazer isso, é usando arquivos de properties. Criando um arquivo de properties num diretório qualquer, você pode carregá-lo junto com o JBoss usando a seguinte linha de comando ao iniciar o servidor:

O problema disso é que os parâmetros não podem ser atualizados. Se você alterar o arquivo, somente na próxima inicialização do JBoss que ele verá as alterações. Outra forma de se fazer isso, é usando variáveis de contexto do arquivo web.xml (No caso de aplicações baseadas em Servlets). Através das seções "context-param" você pode criar variáveis acessíveis via JNDI. Mas para isso, você deverá ter uma ferramenta que possa instrumentar o arquivo e refazer o deployment do módulo em tempo de execução, cenário este que, em alguns casos de aplicações críticas, não é adequado, pois você não pode tirar a aplicação do ar nem que seja 1 segundo!

A solução: Usando binding de variáveis no JNDI do JBoss usando MBeans

Se você quer criar váriaveis no contexto do JNDI, usando JBoss, você pode usar o MBean "JNDIBindingServiceMgr". Este é um MBean que é capaz de criar objetos de qualquer tipo no contexto do JNDI e assinalá-lo a uma variável de binding. Vamos a um exemplo. Crie um arquivo XML. Chame-o de "custom-params-service.xml" e nele coloque o conteúdo abaixo:

Repare no arquivo que ele define uma seção chamada "jndi:bindings". Você pode criar uma ou mais entradas do tipo "jndi:binding" neste seção, sendo possível então a definição de vários parâmetros num único arquivo XML. Repare também que criamos um parâmetro chamado "springFileLocation". A idéia é fazer com que qualquer componente do JBoss em tempo de execução possa, via JNDI, recuperar o valor desta variável e carregar o contexto do Spring.

Copie este arquivo para a pasta deploy do JBoss. A partir deste ponto, você pode acessar as variáveis no contexto do JNDI da seguinte forma:

Como a variável está no contexto do JNDI, se você estiver usando EJBs ou outro componente gerenciado do JEE 5, você pode injetar este parâmetro da seguinte forma:

A parte mais interessante desta abordagem é que, como se trata de um objeto gerenciado pelo JBoss, ou seja, um MBean, você pode a qualquer momento alterar o arquivo XML que as variáveis serão atualizadas no contexto do JNDI, desde que você deixe o HotDeploy do JBoss ativo ;-)

Bons Códigos!

quinta-feira, 5 de novembro de 2009

JBoss no The Developers Conference 2009

Confirmando presença no evento The Developers Conference 2009 da GlobalCode, a JBoss estará além de patrocinando o evento, disponibilizando palestras bem interessantes sobre nossas tecnologias. Em especial, estamos trazendo o Alejandro Guizar, Core Developer sênior dos projetos JBoss Web Services, jBPM e Riftsaw. O Alejandro além de ser uma excelente pessoa, é commiter da especificação de BPEL 2.0 no OASIS, e estará no evento falando justamente sobre a tecnologia BPEL, tendências e nossa implementação dentro e fora do ESB.

Além do Alejandro, teremos mini-talks (apresentações curtas de 20 minutos) ministrados pelos experts da JBoss Brasil como o Bruno Rosseto e o Alessandro Lazarotti. Falaremos sobre JOPR, Web Beans, Weid, JBoss AS 5, Guvnor, Drools Fusion e muito mais! Estarei apresentando também uma aplicação integrando Drools + ESB + jBPM + Guvnor + HornetQ pra demonstrar como as tecnologias JBoss podem ser aplicadas a cenários críticos, usando as melhores práticas de desenvolvimento de software.

O evento promete, e espero encontrá-los por lá, Até!