Expondo Serviço no Oracle Service Bus
Por Uanderson Carvalho ,
Postado em Março 2015
Oracle Service Bus ou simplesmente OSB, um erro muito comum com relação ao OSB é dizer que ele “implementa” SOA ou que o fato de utilizar um OSB em sua arquitetura já a transforma em uma arquitetura orientada a serviços. Na verdade, o OSB é responsável por boa parte das funcionalidades que SOA prega, mas não todas. Entretanto, não vou neste Post falar de todas as funcionalidades do OSB pois certamente seriam vários Posts para isso já que sua gama de funcionalidades e possibilidades seriam imensamente extensas, mas você pode ter uma idéia visitando este link da própria Oracle http://docs.oracle.com/cd/E11036_01/alsb30/userguide/intro.html
Neste artigo iremos abordar os principais componentes do OSB que são:
OSB STUDIO O ambiente para desenvolvimento de componentes OSB, é suportado através do Eclipse e de um plugin específico para o OSB. |
OSB PROXY SERVICE Proxy do serviço que está sendo desacoplado do cliente, podendo ser gerado em diferentes tipos de protocolo. |
OSB BUSINESS SERVICE serviço que está sendo acoplado ao barramento e/ou participando de uma integração. |
Neste exemplo vamos expor no OSB nosso serviço SelectDataBase, um serviço construído no BPEL (Database Adapter Bpel (DbAdapter) Oracle SOA Suite 11g) Estou utilizando a Versão: 3.6.2 conforme abaixo:
Partindo do principio de que você e eu não temos nenhum projeto e acabou de fazer a instalação do OSB vamos abrir o OSB STUDIO que nada mais é do que um Eclipse com muitos plugins da Oracle, e colocar o caminho de onde ficará nossa workspace que será onde ficará nosso projeto.
No meu caso que estou usando Linux: /home/uans/workspace_osb_blogUans
Após clicar em OK essa será a tela de apresentação:
Clique em Workbech
No menu, clique em File >> New >> Other..
Aparecerá a tela abaixo, então vá até a pasta Oracle Service Bus e escolha a opção Oracle Service Bus Configuration Project e clique em Next
Na próxima tela clique em Finish
Na tela abaixo clique em Yes:
Clique agora em File >> New >> Project..
Aparecerá a tela abaixo, então vá até a pasta Oracle Service Bus e escolha a opção Oracle Service Bus Project e clique em Next
Na tela abaixo estará como OSB Project 1, então renomeie para OSBProject pois nesta configuração do Projeto não podem haver espaço para não termos problemas futuros na hora de mapear os XSDs e WSDLs, então clique em Finish
Com o Botão direito clique em OSBProject e selecione New >> Folder Crie a seguinte estrutura de pastas:
- Business
- Proxy
- WSDL
- XSD
Pronto, temos agora nossa configuração e estrutura de nosso Projeto, vamos agora trazer para o OSB nosso Projeto do BPEL, para isso vamos ao EnterpriseManager (EM) do BPEL:
No seu Browser vá no endereço http://localhost:10000/em
Obs: A porta 10000 é o numero que escolhi ao criar o meu Domínio do BPEL
Faça o Login:
Clique no seu projeto: SelectDBAdapter[1.0]
Clique em Test
Este será o seu WSDL que deveremos exportar para o OSB:
Mas para isso, copie e cole no seu Browser a URL:
Desta tela vamos extrair o nosso WSDL e nosso XSD:
Nesta tela selecione, copie a parte do XSD conforme abaixo:
Que deverá ficar assim: Agora, na tela clique com o botão direito e escolha View Page Source (Ver codigo fonte)
Então devemos ver a tela assim:
Copie o conteúdo desta tela e volte ao OSB
Obs: Caso no seu WSDL tenha mais XSDs então também devemos copia-los para o OSB, e repare que este é o mesmo XSD que estará no seu projeto BPEL.
Clique sobre a pasta XSD:
Clique agora no Menu e selecione File >> New >> File
Em File Name: Coloque SelectDbAdapterBPEL.xsd e clique em Finish
Clique em Source e cole o conteúdo do xsd que você selecionou acima: E deveremos ter a seguinte tela:
Agora na tela onde você colou o WSDL:
Clique com o botão direito e escolha View Page Source (Ver codigo fonte)
Copie o conteúdo desta tela e volte ao OSB Clique sobre a pasta WSDL:
Clique agora no Menu e selecione File >> New >> File
Em File Name: Coloque SelectDbAdapterBPELContract.wsdl e clique em Finish
Teremos um WSDL vazio:
Agora cole o conteúdo da tela do WSDL que copiamos anteriormente e ficará assim:
Mas repare que nosso WSDL está com problemas pois esta com alguns "X" conforme abaixo:
O problema aqui é apenas porque ele não esta achando a referencia ao nosso XSD, ou seja, existe uma dependência do XSD que não está sendo achada conforme é mostrado na guia Problems do nosso OSB:
No nosso WSDL localize a parte abaixo:
Na linha schemaLocation, deixe apenas assim:
schemaLocation="../../OSBProject/XSD/SelectDbAdapterBPEL.xsd"/>
Pois essa é o local onde esta o XSD em nosso projeto
Salve o arquivo e veja que não há mais problemas em nosso projeto:
Vamos agora criar o nosso Business Service:
Clique sobre a pasta Business
Clique agora no Menu e selecione File >> New >> Business Service e em File Name: coloque SelectDbAdapterBPELBusiness e clique em Finish
Na tela abaixo selecione a opção WSDL Web Service e clique em Browse para localizar o nosso WSDL:
Na tela seguinte selecione a opção: selectDBAdapterBPELProcess_pt(port) e clique em OK
Nesta tela clique em Yes para confirmar as alterações
Salve agora as alterações:
Tudo OK, vamos agora criar o nosso Proxy Service Na sobre a pasta Proxy
Clique agora no Menu e selecione File >> New >> Proxy Service (cuidado, não é Proxy Server pois existe as duas opções) e em File Name: coloque SelectDbAdapterBPELProxy e clique em Finish
Na tela abaixo, novamente selecione a opção WSDL Web Service e clique em Browse para localizar o nosso WSDL:
Nesta tela clique em Yes para confirmar as alterações
Salve agora as alterações:
Agora clique abaixo na guia Message Flow
Ao seu lado direito na guia Oracle Service Bus Message Flow e arraste o componente Route para que fique abaixo do seu SelectDbAdapterBPELProxy, e solte conforme abaixo:
Agora ao seu lado direito na guia Route Actions, escolha o componente Routing e arraste para dentro do seu RouteNode1 que deverá ficar assim:
Clique agora no nome Routing e abaixo na guia Properties
Clique em Browse e selecione SelectDbAdapterBPELBusiness.biz conforme abaixo e clique em OK.
Agora na guia Properties escolha a opção process em invoking:
Clique em Salvar, e na guia Servers faça o Publish do seu projeto conforme imagem abaixo:
Obs: Caso você não tenha o seu Server configurado faça o seguinte: Clique com o botão direito do mouse na guia Server que deverá estar vazio conforma abaixo:
Selecione New >> Server Aparecerá a caixa abaixo, então na pasta Oracle, selecione a opção Oracle WebLogic Server 11gR1 PatchSet 4 e clique em Next:
Conforme abaixo, na guia Configuration, em Domain diretory coloque onde está o seu domínio e clique em Next:
Na imagem abaixo selecione OSB Configuration 1 e clique no botão Add > para que ele vá para o seu lado direito da tela na guia Configured e clique em Next
Na tela abaixo você já pode clicar em Finish
Feito isso, caso não tenha feito ainda, você já pode fazer o Publish:
Certifique-se de que seu Publish foi executado com sucesso, pois deverá ficar conforme abaixo (Started, Synchronized)
Vamos fazer o teste para ter certeza que tudo funcionou perfeitamente.
No seu Browser vá no endereço http://localhost:9000/sbconsole
Obs: A porta 9000 é o numero que escolhi ao criar o meu Domínio do OSB
Faça o Login:
Clique em Resource Browser e ao lado direito deverá aparecer o nosso Proxy SelectDbAdapterBPELProxy Ao lado direito na guia Actions clique no ícone que parece uma "baratinha verde":Será apresentada a tela abaixo, e em idCliente coloquei o valor 7839 que é um idCliente que existe em minha base e em seguida clique em Execute:
Veja em Response Document a resposta do nosso Serviço:Abraços e até a Próxima!
Uanderson Carvalho é um Especialista Oracle SOA com foco em integração entre sistemas legado utilizando as tecnologias Oracle Fusion Middleware e SOA, Pós-graduado em Administração de Banco de Dados Oracle. Certificado pela Oracle como: Oracle SOA Suite 11g Certified Implementation Specialist.
Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.