Archive for November, 2008

Objetivo deste simples tutorial

Fazer com que os leitores possam ter uma pequena introdução a respeito do uso de JAX-WS da forma mais simples possível.

Ingredientes

Não vou usar aqui nenhum IDE, quando estamos aprendendo o IDE pode atrapalhar por facilitar até demais, escondendo alguns detalhes importantes que podem passar desapercebidos de você, sendo assim, vamos usar a distribuição do JAX-WS 2.1.5, que pode se encontrada aqui.

Quando você baixa este jar, no mac ou windows você pode dar dois cliques nele e instalar normalmente, entretanto se estiveres usando o Linux, uma linha de comando pode ser requerida, mas aí será um simples:

java -jar <jaxws-arquivo.jar>

Além do JAX-WS que é a implementação da JSR 224, vamos usar um Container Web leve e super simples, no caso, o Apache TomCat 6.18 , que por padrão não traz nenhum stack WebService, como um servidor de Aplicações mais completo como JBoss App Server (JBossWS) ou Glassfish(Metro).

Passo 1 - Instalando as bibliotecas do JAX-WS no Apache TomCat

Você agora quer que seu tomcat tenha o suporte ao JAX-WS, ou seja, você não precisará mais se preocupar em embarcar os jars de WebServices no seu WAR já que seu “tomcatizinho” vai ter essas bibliotecas pra você.

Para realizar as tarefas sem depender de um IDE, você como desenvolvedore Java, seja “cabra-macho” ou “Maria Bonita” vai precisar de seu ANT instalado e configurado, achei este tutorial no Google que pode lhe ajudar a partir deste ponto neste tutorial.

Uma vez que o ANT está claro pra você, você poderá ver alguns arquivos importantes na pasta onde o jaxws-ri foi instalado, lá há um arquivo chamado tomcat.xml que é o arquivo de build para instalação/configuração do jax-ws no TomCat. Para que isto seja realizado, você deve informar neste arquivo onde está seu tomcat, alterando o valor desta propriedade do XML:

property name=”tomcat.home” value=”${env.CATALINA_HOME}”

Para:

property name=”tomcat.home” value=”O CAMINHO DO SEU TOMCAT: EX: C:/java/tomcat”

Você também vai precisar da variável de ambiente JAVA_HOME, que pode ser declarada no seu Painel de Controle do Windows, ou via profile no linux, ou ainda com o set JAVA_HOME=caminho do seu jdk se windows, ou export JAVA_HOME=caminho do seu jdk se linux. Para finalizar a Instalação então, basta você digitar o comando: ant -f tomcat.xml install e então você deverá ver um retorno deste comando mais ou menos assim:

mac-es:~/java/jaxws/jaxws-ri edgarsilva$ ant -f tomcat.xml install
Buildfile: tomcat.xml

update-catalina-props:
[echo] Backing up /Users/edgarsilva/java/tomcat/apache-tomcat-6.0.18/conf/catalina.properties…
[copy] Copying 1 file to /Users/edgarsilva/java/tomcat/apache-tomcat-6.0.18/conf
[echo] Adding JAX-WS RI jars to shared.loader property in /Users/edgarsilva/java/tomcat/apache-tomcat-6.0.18/conf/catalina.properties…

install:
[echo] Installing JAX-WS RI 2.1.5  for /Users/edgarsilva/java/tomcat/apache-tomcat-6.0.18 …
[mkdir] Created dir: /Users/edgarsilva/java/tomcat/apache-tomcat-6.0.18/shared/lib
[copy] Copying 19 files to /Users/edgarsilva/java/tomcat/apache-tomcat-6.0.18/shared/lib

jdk6-message:

BUILD SUCCESSFUL
Total time: 2 seconds

Se isto funcionar (mensagem build successful), pronto, seu TomCat agora suporta Aplicações WebServices.

Executando nosso primeiro Exemplo

Nos dias de hoje dificilmente você encontrará um framework sem exemplos interessantes, o jax-ws não foge a regra e na pasta samples há vários, para este nosso tutorial, vamos usar o exemplo “Annotations”. Entre neste diretório para vermos um pouco da estrutura dele, observe que temos a seguinte estrutura:

build.xml       etc             src

Onde o build.xml é o script ant do projeto, as pastas etc e src são respectivamente a de configuração e a de código fonte. Este build.xml chama/inclui também o deploy-targets.xml da parta etc no processo de build, alterei o esse arquivo para facilitar seu entendimento quando estamos utilizando apenas tomcat. A alteração realizada você pode ver na imagem a seguir:

Porção ANT Alterada para permitir deploy no tomcat

Porção ANT Alterada para permitir deploy no tomcat

Agora, para compilar e instalar o aplicativo web com suporte a WebService, digite ant server, automaticamente todo seu processo de build e deploy será realizado pelo ant.

Inicializando o Tomcat 6

Há várias maneiras de se inicializar o tomcat, a minha preferida é chamar do diretório bin o comando Java:

java -jar bootstrap.jar

Com este comando o Tomcat é inicializado, e ao abrir a url : http://localhost:8080/jaxws-annotations/addnumbers?wsdl no Browser, temos o seguinte resultado:

Visualização do WSDL de nosso serviço do JAX-RS hospedado no Tomcat

Visualização do WSDL de nosso serviço do JAX-RS hospedado no Tomcat

Na próxima oportunidade, vou tentar expor um exemplo com o uso de JAXB para auxiliar na definição dos tipos de dados no Schema do XML no WSDL.

Até a próxima.

Como parte de nosso trabalho é criar demos que possibilitem técnicos e até mesmo pessoas de áreas gerencias e de vendas entenderem o valor das soluções, estamos trabalhando numa demonstração do MetaMatrix, que é a solução de Data Services Federation da JBoss.

Com o MetaMatrix é possível criar um Virtual Database(VDB) que é uma camada de banco de dados apenas lógica, que permite “federar” os dados! Mas que coisa é essa de Federar? Significa de modo mais objetivo “reunir, aglomerar, juntar” os dados de alguma forma. Mas qual o resultado disso? Compartilhamento de informações via banco de dados é uma das 4 formas de integração de acordo com o EAI Patterns, sendo assim, é muito importante que tenhamos uma maneira simplificada de obter informação independente de onde ou qual banco de dados, seja Oracle, MysqL, DB2, TXT, WebServices etc.

O responsável por estes estudos é meu colega Leandro Abite, que está criando toda a camada de acesso a dados, para nossa “Prova de Conceito”, decidimos criar um serviço de busca de infrações(multas) em vários estados do Brasil, partindo do princípio que cada estado armazene as infrações da forma que é mais peculiar, por exemplo:

a) Para estado X , como prova, ele não normalizou o esquema de banco de dados, pondo as multas e infratores na mesma tabela, simulando como informações em legados de banco de dados

b) Para outro estado, todas as normas para um modelo relacional foi estabelecido.

c) No outro estado, ele fez com que os dados sejam obtidos de um TXT (CSV).

d) De um outro estado, os dados estão vindo via WebServices.

Com estes cenários, o MetaMatrix permite criar um “DataSet” que chamamos de Infracoes , no qual a chave de pesquisa (criteria ou where) seja a Placa do veículo. Assim, uma vez, que informemos a placa, o MetaMatrix realiza a busca em todos estes repositórios, retornando os dados e já atualizando o seu Cache de Informações.

Para exibir as informações, criamos um cliente usando o JBoss Seam com Richfaces e o GMaps4JSF hospedado no GoogleCode.

A Consulta hoje é feita via o Driver JDBC MetaMatrix, usando os simples java.sql.ResultSet e java.sql.Statement, mas estamos vendo uma forma de realizar operações deste tipo usando Hibernate e JPA.

Estas demos estaremos realizando em alguns eventos e reuniões de grupos de usuário, portanto, se você ver o título MetaMatrix por aí, você vai se impressionar do quanto esta ferramenta que está na reta final de ser 100% opensource pode fazer para sua empresa.

Abaixo um screenshot na demonstração:

Demonstração MetaMatrix

Demonstração MetaMatrix

Esta é uma apresentação de Erica, que é SA da MetaMatrix da Inglaterra, aqui ela apresenta o MetaMatrix, em breve, vocês poderão ver muito mais deste produto em português com o Leandro Abite, Consultor JBoss onde um dos seus focos é ser Evangelhista de MetaMatrix no Brasil, por hora, a voz da Érica, que é bem melhor que a do Leandro, sem dúvida:

Hoje tive um tempinho de dar uma olhada no JBoss 5.0 CR2, já que há um mecanismo do MicroContainer que esperamos utilizar em um projeto em cliente, resolvi postar aqui algumas visões.

Velocidade

Em alguns dos builds antes deste atual, confesso que a performance era algo que me preocupava, entretanto, diante de alguns testes comparativos entre JBoss 4.2.2 e o JBoss 5.0 CR2, já consegui observar alguns fatores bons em termos de performance. Claro, eu não estou falando em tempo de start-up, mas se o caso for esse, o meu 4.2.2 inicia em 18 segundos, enquando o 5.0 fica nos 28 s. Ambos sem tunning, numa máquina normal Intel Core-Dual 4GB de ram.

Classloading

Poder interceptar, manipular e alterar todo o comportamento do Classloder é algo muito interessante, porém “perigoso” se cair em mãos erradas.

JBoss Messaging, JBossWS, jUDDI

Tudo que é preciso para aplicações SOA que não necessariamente já estão orientadas a um Enterprise Service Bus, ou que ainda, vão utilizar outros ESBs de mercado, que é o nosos caso, para este cliente especifico.

Responsividade dos Consoles

Os novos Consoles respondem de forma bem mais rápida, bem como a experiência viausl foi melhorada. Veja alguns screenthos:

JMX-Console de Cara Nova

Nova cara do JMX-Console

Nova cara do JMX-Console

Falando em Consoles Novos

Como falei no post anterior, o JON agora é 100% opensource, com o nome de Jopr , existe uma versão embarcada dele pro JBoss, que faz com que você tenha uma visão melhor de Console Corporativos JBoss. Embora o JMX-Console seja bem útil para quem consegue usá-lo, quem conhece-o um pouquinho mais, sabe do que eu estou falando. Veja aqui a cara do Console Embaracod Jopr:

JBoss 5 - Console Novo

JBoss 5 - Console Novo

Fique atento aos eventos realizados por http://jbossbrasil.ning.com , pois estaremos fazendo um trabalho de divulgação mais forte do JBoss 5.0, assim que a versão GA chegar ao mercado, que a partir de agora, não deve demorar, visto que a CR2 é a última antes do GA, e pelo o andar do JIRA o GA está mais breve até do que eu imaginava.

[]s

E

O JBoss Operation Network - JON que muitos viram no JBoss Road Show em 6 capitais no Brasil, agora podem vibrar: Sim, ele agora é 100% opensource! E com esse nome meio estranho, mas o que interessa é o projeto, que faz com que o JBoss agora SIM TENHA UM CONSOLE ADMINISTRATIVO PROFISSIONAL como os outros Application Servers proprietários ou remendados de mercado.

Uma alternativa, de quem não quiser usar o modelo cliente-servidor do Jopr, pode usar o Embbeded Console, que é um WAR file que você instala no JBoss App Server, e pronto, você terá um console mais bonito que o JMX-Console e Web-Console, que possuem em funcionalidades poderosissimas, mesmo não sendo dos consoles mais bonitos de mercado.

E como escutamos esses dias num cliente: “Vai … fala agora que JBoss é pé-duro!”

[]s

Edgar