Tags
binding, Commons, ConfigPlan, endPoint, JDeveloper, MDS, MetaData Store, WSDL
Vamos neste Post aprender a compartilhar seu MDS entre outros Servidores, mas para isso você já deverá ter criado nosso arquivo Commons.jar conforme a Parte 1: Criando e Configurando MDS
Neste exemplo, criaremos no WSDL exposto, o <wsdl:binding>, <wsdl:port> e criaremos um arquivo XML chamado ConfigPlan.xml, porem existe na documentação da Oracle mais uma outra forma de realizar este procedimento, porem falarei disso em outro Post.
Primeiro Passo: Criação das tags “binding” e “operation” no WSDL
- “binding” ou melhor, <wsdl:binding> onde dentro teremos uma tag chamada <wsdl:operation> e esta tag será responsável por chamar a operação dentro da tag <wsdl:portType> do seu WSDL
- “service” ou melhor, <wsdl:service>, aqui teremos uma tag chamada <wsdl:port> que será responsável por fazer a referencia ao <wsdl:binding> e ainda dentro desta tag <wsdl:port> teremos a tag <soap:address> que terá o endPoint do servidor ao qual queremos referenciar.
Segundo Passo: Deveremos criar um arquivo chamado ConfigPlan que é um arquivo XML a ser enviado junto do nosso projeto, e dentro deste arquivo terá a referencia ao <wsdl:port> que inserimos no WSDL
Difícil ? Nada, veja como será simples 🙂
Consulte os Links abaixo para ver as demais partes:
- Parte 1: Criando e Configurando MDS
- Parte 2: Referenciando Projetos já existentes para o MDS
- Parte 3: Compartilhando o MDS entre outros Servidores
Vamos usar nosso projeto SelectDBAdapter como exemplo, mas apenas para lhe mostrar onde devemos inserir nossas referencias no WSDL e posteriormente como podemos criar o arquivo ConfigPlan.xml.
Uma observação aqui muito importante é que usaremos nosso projeto SelectDBAdapter como exemplo, porem ele não faz referencia a um serviço externo, no caso, não esta chamando algum outro WSDL de um outro BPEL ou algum outro serviço exposto no Service BUS, mas caso tivesse você deveria inserir no nome do outro servidor que no caso é a referencia que criamos <wsdl:port> do seu WSDL, conforme abaixo:
Primeiro vamos criar uma pasta chamada binds do termo “vincular“ do nosso português dentro de nossa pasta apps
Em cima da pasta apps clique com o botão direito e clique em New
Clique sobre Folder e clique em OK
Na tela abaixo em Folder Name coloque binds e clique em OK
Teremos então a seguinte estrutura
Obs: O arquivo readme.txt é criado automaticamente, pode deletá-lo sem nenhum problema.
Veja como é simples inserirmos os binds e os ports no WSDL, vamos pegar nosso projeto SelectDBAdapter para realizar nossos testes.
Realize o deploy normalmente do projeto e faça o seguinte:
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.
Faça o Login:
Clique no seu projeto: SelectDBAdapter[1.0]
Clique em Test
Copie a URL que esta em WSDL conforme abaixo:
No caso: http://localhost:10000/soa-infra/services/default/SelecDBAdapter/selecdbadapterbpelprocess_client_ep?WSDL
Agora cole a URL no seu Browser:
Agora com o botão direito na tela clique em: Visualizar Código Fonte
Selecione todo o conteúdo desta tela e copie
Agora no seu Jdeveloper, vá na pasta que criamos chamada binds e com o botão direito clique em New…
Selecione File e clique em OK
Na tela abaixo em File Name: Coloque um nome para seu do seu wsdl:
No meu caso coloquei: SelecDBAdapterBPELBinding.wsdl (Fica a seu critério colocar o nome que quiser)
Na tela abaixo clique em Source do seu WSDL
Cole agora o conteúdo do arquivo que colocamos no seu Browser e salve o arquivo
Veja na linha import que ele não esta localizando o xsd SelecDBAdapterBPELProcess.xsd, então altere o schemaLocation conforme caminho abaixo:
schemaLocation=”../xsd/SelecDBAdapterBPELProcess.xsd”
Veja no seu WSDL acima que já foi criado automaticamente nosso <wsdl:biding> e nosso <wsdl:service>
Obs: Na verdade as tags <wsdl:biding> e <wsdl:service> foram criadas automaticamente no momento que copiamos a URL no browser
Veja que na tag <soap:address> que o endPoint está referenciando para http://localhost:8080/..
Porem, para podermos jogar este projeto em outros servidores basta você DUPLICAR a tag <wsdl:port> colocando o endereço de endPoint do outro servidor e alterando o nome de nosso Port.
Veja abaixo:
Veja o que alterei:
De: <wsdl:port name=”SelecDBAdapterBPELProcess_pt”
Para: <wsdl:port name=”SelecDBAdapterBPELProcess_pt_OutroServidor”
De: <soap:address location=”http://localhost:10000/
Para: <soap:address location=”http://200.1.1.0:5200/
Para que você entenda, este nome que alterei no <wsdl:port name será usado pelo nosso arquivo ConfigPlan para referenciar o binding do nosso WSDL 😉
Obs: Para cada servidor que queremos executar nosso deploy devemos criar mais um <wsdl:port
Até aqui nosso WSDL já foi configurado com sucesso.
Vamos agora criar nosso arquivo ConfigPlan que deverá se referenciar ao nosso WSDL.
Vá no seu Jdeveloper, e dentro do projeto SelectDBAdapter, com o botão direito em cima do seu composite.xml clique em Generate Config Plan
Na tela abaixo ele já irá colocar automaticamente o nome SelecDBAdapter_cfgplan.xml, então renomeio apenas o final deste nome com o nome do servidor que você colocou no seu Port lá no seu WSDL, não precisa ser o mesmo nome mas algo que você saiba que é aquele servidor, então clique em OK
Veja abaixo que o arquivo foi gerado com sucesso
Conforme já expliquei aqui, nosso projeto SelectDBAdapter não faz referencia a um serviço externo, no caso, não esta chamando (Invoke) algum outro WSDL de um outro BPEL ou algum outro serviço exposto no Service BUS, mas caso tivesse você deveria inserir no nome do outro servidor que no caso é a referencia criado no <wsdl:port> do seu WSDL, conforme abaixo:
Arquivo ConfigPlan:
Seu WSDL onde criamos o <wsdl:port>:
Veja que será seu <wsdl:port> que fará referencia ao nosso ConfigPlan, por isso entenda que caso tenhamos um outro servidor que terá um endPoint (wsdl:address) diferente, então também devemos ter um outro aquivo ConfigPlan deste outro servidor e não esquecer de colocar essa referencia no arquivo ConfigPlan e WSDL conforme figuras acima:
Mas mais uma vez entenda, que no caso do nosso projeto SelectDBAdapter não seria necessário colocar este nome do <wsdl:port> no nosso ConfigPlan pois nosso projeto SelectDBAdapter não faz nenhuma referencia a algum outro BPEL ou BUS conforme já expliquei acima
Vamos agora fazer o deploy do nosso arquivo Commons.jar e posteriormente do nosso projeto SelectDBAdapter junto do nosso arquivo ConfigPlan.xml
Obs: Caso não tenha criado ainda o arquivo Commons.jar, faça o procedimento conforme post anterior Parte 1: Criando e Configurando MDS
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.
Faça o Login:
Ao lado esquerdo clique no sinal + ao lado de SOA em seguida, clique com o botão direito em soa-infra (AdminServer), vá até Adminstration e clique em MDS Configuration
Na opção Import metadata documents from an archive on the machine where this web browser is running clique em Browse e escolha o local onde está o seu arquivo Commons.jar e em seguida clique em Import
Clique em Close após ver a mensagem “Import Operation – Completed Sucessfully”
Obs: Neste caso no meu Commons.jar só haviam 8 documentos a serem importados.
Agora vamos fazer o deploy do nosso projeto SelectDBAdapter junto com nosso ConfigPlan.xml
Ainda no seu Enterprise Manager ( http://localhost:10000/em )
Ao lado esquerdo clique no sinal + ao lado de SOA em seguida, clique com o botão direito em soa-infra (AdminServer), vá até SOA Deployment e clique em Deploy
Em Archive or Exploded Directory deixe selecionado a opção Archive is on the machine where this web browser is running e em Browse selecione o local onde está seu arquivo .jar (sca_SelectDBAdapter_rev1.0.jar)
Em Configuration Plan deixe selecionado a opção
Na tela abaixo, caso não esteja selecionado em SOA Partition selecione default e clique em Next
Deixe selecionado a opção Deploy as default revision e clique em Deploy
Veja abaixo que seu deploy foi feito com sucesso e já está apontando para o endPoint do servidor correspondente .
Duvidas ? Deixe seu comentário
Abraços e até a Próxima
/:-D