mcorp. tecnologia e informações inúteis de utilidade pública

16jun/100

Compilando o WSO2 Carbon 3.0.0 e corrigindo o WSO2 Data Services Server 2.5.0

Versões novas de produtos sempre são uma alegria, seja pelos recursos novos ou somente pela novidade que sempre alegra-nos, principalmente nós desenvolvedores. Mas juntamente com as novas versões (principalmente nos primeiros releases) vem também problemas, bugs ou incompatibilidade de versões- os problemas mais comuns.

E para não pararmos no tempo, vendo que as novidades do WSO2 Data Services Server 2.5.0 seriam muito bem vindas para nós, resolvemos realizar testes para verificar a possibilidade de atualizarmos nossa versão da 2.2.1 para a 2.5.0, e surgiu aquela alegria quando vimos que não teríamos problemas de incompatibilidade como ocorreu nos testes de migração da 2.0 para WSO2 Data Services Server 2.2.1.

Mas como nem tudo são rosas, um velho bug conhecido nosso na versão 2.0 e discutido no fórum - de não aceitar valores null, tinha sido corrigido na versão 2.2.1; mas resolveu dar as caras na versão 2.5.0. E por necessitarmos das novidades dessa versão, tivemos que correr atrás e corrigir o problema, já corrigido anteriormente.

Como já conhecemos a estrutura, fomos direto ao site do projeto para realizar o download do fonte do WSO2 Data Services Server e fomos atrás do arquivo problemático (SQLQuery.java). Mas para nossa surpresa, o arquivo não estava mais lá, foi centralizado no projeto WSO2 Carbon.

Então com o arquivo de código-fonte do WSO2 Carbon 3.0.0 devidamente baixado, vamos colocar a mão na massa.

Baixando e descompactando o fonte

wget  http://dist.wso2.org/products/carbon/3.0.0/wso2carbon-3.0.0-src.zip
unzip wso2carbon-3.0.0-src.zip

Baixando e aplicando o patch

wget /wp-content/uploads/2010/06/wso2-dataservices-accept-null.txt
cd wso2carbon-3.0.0-src
patch -p1 wso2-dataservices-accept-null.patch

E a mensagem recebida aqui será algo como:

patching file components/data-services/org.wso2.carbon.dataservices.core/3.0.0/src/main/java/org/wso2/carbon/dataservices/dispatch/query/SQLQuery.java

Compilando o componente

Levando em consideração que você tenha as dependências necessárias, vai ser um passo bem demorado. Vai fazer download de alguns pacotes, compilar, testar e gerar uma nova versão do componente, com a correção.

cd components/data-services
mvn install

Corrigindo o Data Services Server

Agora que temos o componente corrigido e devidamente compilado, vamos copiá-lo para a instância do WSO2 Data Services Server (levando em consideração que minha instalação fica em ~/Applications/wso2/wso2dataservices-2.5.0).

cp  org.wso2.carbon.dataservices.core/3.0.0/target/org.wso2.carbon.dataservices.core-3.0.0.jar   ~/Applications/wso2/wso2dataservices-2.5.0/wso2dataservices-2.5.0/repository/components/plugins/org.wso2.carbon.dataservices.core-3.0.0.jar
cp  org.wso2.carbon.dataservices.ui/3.0.0/target/org.wso2.carbon.dataservices.ui-3.0.0.jar    ~/Applications/wso2/wso2dataservices-2.5.0/wso2dataservices-2.5.0/repository/components/plugins/org.wso2.carbon.dataservices.ui-3.0.0.jar

Conclusão

Com o patch criado, testado e aplicado. Abrimos um pedido de correção no JIRA do WSO2, para que eles possam corrigir na próxima release (provavelmente a 2.5.1). Caso você não tenha disponibilidade (de tempo ou paciência), pode baixar os componente do WSO2 Data Services Server corrigido (bastando apenas descompactá-los).

E tenho que falar, viva o código aberto e o software livre! (;

6abr/100

Marília TechDay 2010

Esse fim de semana vou fazer algo totalmente diferente do costume! Vou até Marília assistir as palestras do Marília TechDay 2010.

Tá bom, é o lado "negro" da força, logo eu, que trabalho e gosto do código-aberto e livre... Mas vamos dar um desconto e ver como anda o pessoal do outro lado da força, não é?

Será um fim de semana totalmente Microsoft e com palestras de muito boa qualidade (garantia do Thiago Zavaschi) e como ainda confio na palavra dele, vamos lá conferir.

O meu maior interesse é na palestra "Introdução ao desenvolvimento de Sistemas Conectados com WCF 4.0" com o Evilázaro Alves. Que - pelo meu pífio entendimento - é a suíte da Microsoft para trabalhar com SOA, não custa dar uma espiadinha, não é?

Segue a grade de palestras (as inscrições estão encerradas):

26nov/090

Software livre, código aberto e o mundo SOA

Procurando por suítes SOA é muito comum ouvir falar de Oracle, WebSphere e - meio de longe - BizTalk. Mas, além de pagas, não são nem um pouco baratas.

Esse preço pode ser na maioria das vezes inviável para empresas de menor porte, sobrando apenas as soluções de menor porte (e preço) e as opções livres. E aí sobra pra quem "inventou" a moda, afinal, "quem inventa aguenta".

Dois anos atrás, quando começamos os estudos para implementação de SOA aqui no trabalho, apanhamos - e muito - com esse problema. Tínhamos que implantar toda a arquitetura escolhida de maneira barata (entenda: de graça).

Achamos muitas opções que prometiam resolver os problemas, mas que no fim trazia "N" dificuldades na implementação, desenvolvimento e/ou até instalação. Tudo parecia meio cru e o que diziam ser as melhores, não passavam de um serviço e um milhão de arquivos (em sua maioria XML) para serem editados quase que totalmente manual.

Alguns dos problemas que enfrentamos na maioria das soluções foram:

  • Documentação: se não fosse nula, era fraca e muito pouco clara;
  • Desenvolvimento: o lançamento de novas versões e correções de bugs eram lentos (sem contar as frases do tipo "na versão Enterprise está resolvido");
  • Comunidade: praticamente o mesmo problema da documentação, nula; e
  • Código aberto: algumas ferramentas dizem "código aberto", porém abrem uma parte do código (que normalmente doam para a Apache Foundation) e o crucial não, impossibilitando corrigirmos ou descobrimos o que acontece.

A lista acima não diz tudo pelo que passamos e enfrentamos, é apenas um resumo. Então, após testar algumas ferramentas e utilizar algumas outras, optamos pelo WSO2, que apesar de não resolver todos nossos problemas, pelo menos chegou mais perto.

Vamos fazer uma comparação com os problemas listados e o que nos levou a escolhê-lo:

  • Documentação: quando começamos era praticamente nula, mas como eles utilizam outros projetos livres (como: Apache Synapse, Apache Axis2, Apache Rampart e etc) sem maiores modificações, fica mais fácil achar documentação para o seu problema naquele projeto ou biblioteca e atualmente eles estão melhorando um pouco nisso escrevendo artigos e disponibilizando alguns webcasts grátis;
  • Desenvolvimento: os lançamentos de versões está numa velocidade boa e rápida, apenas os bugs ainda peca um pouco, mas olhando o JIRA é possível achar vários patches, nos deixando ainda a opção de alterar o código, caso queira;
  • Comunidade: é fraca como todos os outros, existe o fórum, mas é somente em inglês; e
  • Código aberto: como dito antes, o código é aberto e você pode alterar a vontade, que pode ajudar na necessidade de resolução de bugs mais críticos.

Pode não ser a solução perfeita, mas foi o que mais nos deixou tranquilos para trabalhar. Alguns produtos ainda tem muito o que evoluir e alguns estão bem evoluídos, mas com muito a melhorar. Posso dizer que estamos bem com a opção que fizemos, mesmo que não tenhamos chego aos 100% de implantação da arquitetura que pensamos.

26nov/090

SOA está para WSO2 ou WSO2 está para o SOA?

Um toque do Nivaldo e percebi a necessidade de explicar melhor o que são os softwares que comento por aqui. Para tentar suprir essa necessidade dos "perdidos" que por acaso venham parar por aqui, farei alguns posts mais explicativos e menos práticos (assim digamos).

E para começar vou tentar explicar o que o WSO2 representa para o SOA e o que o SOA representa para o WSO2, mas antes disso preciso explicar um pouco o que é cada um dos dois, então vamos lá:

WSO2: Segundo o site da plataforma (tradução livre): "Produtos de código-livre integrados e modulares que dão suporte para criação de uma plataforma SOA, suprindo a parte de criação, conexão, composição e governança de serviços".

SOA: É uma estratégia que propõem organizar os ativos de software de forma que eles possam representar processos, atividades ou tarefas de negócio de forma direta. Tais representações são chamadas de serviço, que devem ser baseadas em padrões e facilmente combinados e reutilizados visando a satisfação dos requerimentos de negócio (para uma explicação um pouco mais detalhada, ver aqui, valeu AC!).

E o que eu quero dizer com tudo isso? Digamos que para implementar e implantar SOA necessitamos escolher uma arquitetura e nesse ponto a participação do WSO2 é muito importante. Pois alguns outros produtos tentam impor a arquitetura, diferente do WSO2, que dá a opção de você montar todo esse "quebra-cabeça" da forma que bem entender.

Arquitetura SOA (pequeno quebra-cabeça)

Arquitetura SOA (pequeno quebra-cabeça)

E agora, nessa arquitetura de exemplo mostro onde encaixam alguns dos produtos do WSO2:

Arquitetura SOA com WSO2

Arquitetura SOA com WSO2

É claro que no decorrer do desenvolvimento do projeto, algumas coisas podem ir se acertando. Até porque essa arquitetura que utilizei como exemplo não é a ideal para todo e qualquer caso, tudo deve ser pensado com muita calma.

Existem outros produtos na plataforma que não estão mostrados na imagem acima e que em determinados casos podem (e devem) ser utilizados. Mas quis passar somente um pouco do que o WSO2 representa nesse mundo da sopa de letrinhas que é o mundo SOA.

Com o tempo vou tentar explicar cada uma das "caixinhas" e como cada um dos produtos se comporta para suprir essa necessidade.

14set/090

Olá, mundo!

Normalmente esse é o post padrão que vem com o WordPress, e como uma homenagem a esse ótimo CMS, deixaremos ele aí.

Mas complemento-o com nossos objetivos com esse retorno:

  • Resolver problemas de ordem fisiológica;
  • Resolver problemas de ordem emocional;
  • Resolver problemas de ordem financeira;
  • Resolver problemas de ordem psicológica;
  • Resolver problemas de ordem sentimental. Que, na verdade, é a mesma coisa que emocional. Mas temos que encher o espaço.

Brincadeiras a parte... nossos objetivos são (não necessariamente na ordem de importância):

  • Expor um pouco de nossa revolta com a forma de trabalho de algumas empresas "software livre", "código aberto";
  • Trocar ideias sobre as ferramentas que estamos utilizando, para que nós e outras pessoas possam consultar as resolucão ou problema por nós encontrados;
  • Documentar um ferramental que utilizamos e vemos nenhuma pouca documentacão;
  • Expor e discutir ideias sobre tecnologia em geral.

Então, declaro re-re-aberto o maneh corp. - projetos e sisteminhas inúteis de utilidade pública.