Depois de publicar o post Criando um ambiente SOA com WSO2 estamos recebendo vários emails e comentários de usuários que estão com diversas dúvidas e como usar as ferramentas do WSO2 integrada, por esse motivo, hoje vamos começar uma série de posts explicativos de como criar um serviço completo (DS, WSAS, BUS) usando as ferramentas WSO2.
Antes de começar vamos entender a arquitetura que vamos estar utilizando, veja abaixo:
- DataService será responsável por recuperar as informações em uma origem de dedos, pode ser um banco de dados (MySQL, Postegres, SQLServer, Oracle, etc…) pode ser em um arquivo XML ou em um arquivo CSV.
- Application Server que será responsável por fazer a orquestração dos nossos serviços e pela regra de negócio
- BUS será responsável por expor nosso serviços para os clientes (Mobile, Portals, Desktop, etc…)
O nosso cenário para o serviço de teste será um cadastro de funcionário para o setor de RH de uma empresa, vamos estar utilizando o banco de dados MySQL 5. Então mãos no teclado!!
Criando a Base de Dados
[sourcecode language=”sql”]
create database rh;
use rh;
CREATE TABLE funcionario (
id_funcionario int(10) NOT NULL AUTO_INCREMENT,
nome_funcionario varchar(100) NOT NULL,
endereco_funcionario varchar(100) NOT NULL,
sexo_funcionario char(1) NOT NULL,
data_aniversario datetime NOT NULL,
PRIMARY KEY (id_funcionario),
UNIQUE KEY PK_Funcionario (id_funcionario)
);
INSERT INTO funcionario (nome_funcionario, endereco_funcionario, sexo_funcionario, data_aniversario) VALUES (‘Leandro Prado 1’, ‘Rua xyz 367’, ‘M’, ‘2000-10-10’);
INSERT INTO funcionario (nome_funcionario, endereco_funcionario, sexo_funcionario, data_aniversario) VALUES (‘Leandro Prado 2’, ‘Rua xyz 367’, ‘M’, ‘2000-10-10’);
[/sourcecode]
Criando um WSO2 DataService
1. Dentro do Management Console do DataService clique no menu DataServices -> Create
2. Coloque no nome e a descrição do Serviço e clique em Next
3. Agora vamos adionar a nossa fonte de dados, selecione Add New Data Source
4. Na tela de configuração do DataSource temos os seguintes campos:
- DataSource id:
- DataSource Type:
- Database Engine:
- Driver Class:
- JDBC URL:
- User Name:
- Password:
- Min. Pool Size:
- Max. Pool Size:
- AutoCommit:
Clique no botão Test Connection para verificar se a conexão com o banco está correta.
Se esse o erro acima ocorrer significa que está faltando o jar de conexão com o MySQL, então acesse esse link e baixe o conector e copie o jar para a pasta wso2/wso2dataservices-2.2.1/repository/components/lib e depois restart o serviço do WSO2 DataServices.
5. Na próxima tela vamos criar as querys que nosso serviço vai executar
6. Na tela para adicionar uma nova query temos os seguintes campos:
- Query ID:
- Data Source:
- SQL:
- Input Mappging
- Grouped by element:
- Row name:
- Row namespace:
- Output Mappging:
7. Se sua query possuir parâmetros de entrada deve ser adicionado clicando no botão Input Mappings, essa tela possui os seguintes campos:
- Mapping Name
- SQL Type
- IN/OUT Type
- Ordinal
8. Para recuperar os dados de retorno da sua query clique no botão Output Mappings e adicione os campos que deseja retornar, essa tela possui os seguintes campos:
- Mapping Type
- Output field name
- Data source column Name
- Schema Type
- Allowed User Roles
Veja como vai ficar com todos nossos campos de saída mapeados
9. Na próxima tela é para adicionar as operações (métodos) do serviço, cada query vai ter uma operação:
10. Na tela Add New Operation temos um campo para colocar o nome da operação (método) e uma combo para selecionar qual query essa operação vai chamar
Veja como fica a nossa operação PesquisarFuncionario.
11. Clique em Finish para criar o nosso DataService, não precisamos preencher os Resources. Veja que nosso serviço já é listado.
12. Vamos fazer o teste para verificar se tudo está correto e funcionando, clique em Try this service
Conclusão
Criar DataServices usando a ferramenta do WSO2 é muito fácil, intuitivo e produtivo, em apenas alguns minutos conectamos na base de dados, fazemos uma query e retornamos os dados via XML sem escrever nenhuma linha de código.
Os serviços de DataServices também pode ser criados através de um plugin para o eclipse, veja aqui.
No próximo post estaremos criando a camada de negócio usando o WSAS
Até a próxima!
Fala Leandro, mais um ótimo post.
Este eu executei e foi de prima em ! Claro que com alguns pequenos problemas, mas foi que foi.
Só uma coisa que fiz, foi na hora de colocar a sentênça SQL, eu fiz: “select * from tb_funcionario where nome_funcionario = ?”, pois como vai ter um parâmetro de IN, deduzi que a select fosse igual a usada em códigos Java, por exemplo. Sem isso ele não filtra.
E engraçado que eu tentei fazer igual vc, colocando %lean% e não trouxe nada. Tem que configurar mais alguma coisa?
Obrigado pelos posts (que inclusive tomei a liberdade de divulgar seus links via Twitter e demais XD)e já estou aguardando o próximo!!
Fala Tiago.. o próximo post já esta no forno… acho que amanhã já vou publicar…
Agora sobre o like não tem que configurar nada…. é uma sentença SQL mesmo…veja se a sua query esta correta..
Meu twitter é “chicodrummer”
Um Abraço!!
Leandro Prado
E ae Leandro Prado.. belo post!!
Seguinte to elaborando meu TCC com o tema referente a SOA.. mais estou indeciso sobre o que desenvolver na parte pratica.. Teria como vc dar uma dica sobre o que fazer? so pra dar uma clareada nas ideias!!! vlw.
Weibe,
Em SOA existem diversas áreas que podemos abordar em um TCC, mas ja que você quer algo prático, tente fazer algo voltado a integração de sistemas a partir da BUS, podendo criar um Portal com vários Portlets, onde cada Portlet consome um serviço diferente da BUS…
Depois mande o TCC para eu dar uma olhada.. gosto de ver esse tipo de trabalho…
att,
Leandro Prado
Leandro… se nao fosse pedir muito!! tem como tu me enviar pelo e-mail, a parte em que tu configura a “query”..
A configuracao que fiz aki nao ta funcionando!!!
Vlw.
Porque não está funcionando?? Qual erro que mostra no console??
Fico no aguardo
Leandro Prado
leandro si pudieras mandar a esta direccion toda la informacion de wso
Olá Leandro, estou iniciando agora com o wso2, porém já mexi com o Mule. Estou fazendo consultas a banco atraves das aplicações, seguindo seu tutorial (parte 1) eu consigo faze quase todas as consultas que necessito, porém estou parado em uma. Esta retorna cerca de 2500 linhas do banco (Oracle), porém na hora de testar ela via WSO2 o navegador (chrome) trava totalmente. Adicionei uma condição para esta mesma query para que retornasse cerca de 100 linhas e funcional corretamente. O que esta acontecendo que não consigo retornar todas as linhas que desejo? Obrigado.
Mateus
Isso já aconteceu comigo!
O que acontece é que o browser que trava porque não consegue renderizar todo XML.
Tente fazer um cliente consumindo seu serviço e veja se retorna todos os registros
att,
Leandro Prado
Estou trabalhando com o WSO Data Service e WSO2 Application Server, em determinada situação publico um jar (A.S) e nesse jar há a necessidade de consultar informações no Banco de Dados, tenho um serviço disponível no D.S., porém não estou conseguindo fazer essa comunicação/consumo do serviço(jar) pois nao funciona o consumo do D.S no A.S. Alguma sugestão?
Mais chega a dar algum erro?
Sim.
‘org.apache.axis2.AxisFault: The server did not recognise the action which it received: at org.apache.axis2.handlers.addressing.AddressingInFaultHandler.invoke(AddressingInFaultHandler.java:114)’
Olá Aline,
Para uma ajuda mais efetiva e também para documentar em um lugar mais acessível para todos, nos orientam a postar as dúvidas no StackOverflow http://www.stackoverflow.com usando a hashtag #wso2, assim, teremos muito mais pessoas podendo ajudar. (:
Mas, de qualquer forma, apenas com a exceção, fica complicado ajudarmos você, seria interessante postar com o trace do erro e maiores detalhes sobre os dois serviços (AS e DS).
Consegui contornar a situação criando o soap de forma nativa.
Olá boa tarde Leandro, primeiro gostaria de parabenizar pelo post e agradecer pelo tempo dedicado a elaborar e cuidar do mesmo, sou iniciante tanto em SOA quanto em WSO2, e estou muito algumas dificuldades.
Eu consigo terminar a primeira parte do tutorial contudo não consigo fazer os testes, estou usando a versão mais nova dos aplicativos, será que é isso?
Quando peço os testes, ele não apresenta nada como resultado, estou desconfiando que é o banco de dados, esse foi montado usando o wamp, alguém já fez? recomendam algo diferente? Como eu poderia testar?
Gostaria de saber o que seria exatamente o Query, acredito que é nesse passo que estou tendo problemas.
Você teria algum material de qualidade e livre sobre SOA e WSO2? A montagem do ambiente descrita no post anterior, foi realizada baseada em algum referencia especifica, poderia coloca-la por favor.
Obrigado!
Gustavo
Sinceramente não sei o que pode ser.. faz tempo que não trabalho com o WSO2, e não acompanho mais a ferramenta
att,
Leandro Prado
De qualquer forma, obrigado Leandro, você possui alguma referencia que eu possa utilizar para um exemplo experimental, semelhante a esse, no meu caso possuo aplicações rodando em C, um banco de dados sendo atualizado e uma resposta ao usuário, poderia me dar uma luz, qualquer que seja, obrigado!