Criando e Configurando MetaData Store (MDS) no Oracle SOA Suite

Por Uanderson Carvalho
Postado em Março 2015

No SOA Suite 11g existe uma opção muito usada para compartilhar artefatos (WSDL, XML, XSD, DVM, Rules, Scripts, Fault Policies, entre outros... ) através do MDS - Meta Data Store facilitando a reutilização destes artefatos dentro dos projetos SOA

Quando, por exemplo, um projeto BPEL ou BPM é implementado (deploy) os seus arquivos são armazenados no MDS e qualquer alteração em algum artefato será refletida apenas no MDS sendo necessário apenas realizar o deploy apenas deste arquivo e não de um projeto inteiro.

Uma vez que o MDS esteja configurado e com o conteúdo armazenado, a referenciação dentro do projeto é bastante simples, bastando informar, na localização, o caminho completo dentro do MDS e incluindo o prefixo oramds. Veja no exemplo:

Para referenciar o XSD que está no caminho apps/MyCannonical:
oramds:/apps/MyCannonical.xsd

Vou lhe ajudar neste Post a criar e configurar o MDS no Jdeveloper, mas basicamente no MDS estarão armazenados os artefatos em uma pasta chamada "apps", uma vez que esta pasta já deverá existir no servidor.

Vamos começar :-)

Clique em File >> New

Será aberto uma tela como abaixo:

Em seguida selecione Generic Project

Em Project Name coloque Artefatos e clique em Finish

Agora com o botão direito do mouse em cima do projeto Artefatos e clique em New

Clique em Folder e em seguida OK

Criarei a primeira pasta "apps"

Veja abaixo a primeira pasta "apps" criada:

Obs: A pasta Resources e o arquivo readme.txt são criados automaticamente.

Repita este mesmo procedimento criando as pastas "wsdl" e "xsd" dentro da pasta "apps", para que fiquem conforme abaixo:

Agora será necessário configurarmos o arquivo adf-config.xml para que os objetos (wsdl, xsd e etc..) criados no projeto Artefatos possam ser compartilhados com os demais projetos.

Para editar o arquivo adf-config.xml clique em Application Resources no seu Jdeveloper, vá em Descriptors >> ADF META-INF >> adf-config.xml e abra o arquivo.

Obs: O arquivo adf-config.xml é único por aplication

Localize a seguinte parte do seu arquivo:

<metadata-namespaces>
<namespace  path="/soa/shared"  metadata-store-usage="mstore-usage_1"/>
</metadata-namespaces>


Vamos agora acrescentar mais uma linha nessa parte do arquivo que deverá ficar assim:

<metadata-namespaces>
<namespace path="/soa/shared" metadata-store-usage="mstore-usage_1"/>  
<namespace path="/soa/apps" metadata-store-usage="mstore-usage_2"/>
</metadata-namespaces>

Obs: Veja abaixo que acrescentamos mais uma linha do prefixo <namespace ...> que deverá usar o codnome mstore-usage_2

Agora bem abaixo dessa parte do XML localize a tag <metadata-store-usages>

<metadata-store-usages>
<metadata-store-usage id="mstore-usage_1">
<metadata-store class-name="oracle.mds.persistence.stores.file.FileMetadataStore">
<property name="metadata-path" value="${oracle.home}/integration"/>
<property name="partition-name" value="seed"/>
</metadata-store>
</metadata-store-usage>

Vamos agora acrescentar a outra parte do XML que também irá referenciar nosso artefatos que deverá ficar assim:

Obs: Veja abaixo que criamos mais uma estrutura da parte do XML <metadata-store-usage> com alguns elementos a mais, observe também que essa tag deverá ficar entre <metadata-store-usages>  --veja o S no final do usage.

<metadata-store-usage  id="mstore-usage_2" default-cust-store="true"  deploy-target="true">
<metadata-store class-name="oracle.mds.persistence.stores.file.FileMetadataStore">
<property value="${user.home}/jdeveloper/mywork/BKP/UansBlogApplication" name="metadata-path"/>
<property value="Artefatos" name="partition-name"/>
<property name="repository-name" value="mds-soa"/>
</metadata-store>
</metadata-store-usage>

Obs: Caso você esteja fazendo também este procedimento, sugiro copiar o conteúdo acima e mudar apenas o caminho que está entre a tag <property... que é o caminho onde deverá estar sua aplicação, no meu caso está em /jdeveloper/mywork/BKP/UansBlogApplication,

${user.home} é uma váriavel que irá identificar qual é o seu home. no meu caso (/home/uans)

Muita atenção neste caminho para que ele esteja correto ou não irá funcionar

Para que você tenha uma refencia correta do caminho, vá no seu no seu application e procure o arquivo com extenção .jws conforme abaixo, pois este será o caminho correto:

Veja abaixo que não preciso colocar a parte /home/uans que já esta sendo refenciada pela variável ${user.home} conforme expliquei acima, então o caminho ficará assim:

  • <property  value="${user.home}/jdeveloper/mywork/BKP/UansBlogApplication"

Obs: veja que está sem / no final

Feche o seu Jdeveloper e abra novamente para que suas alterações façam efeito.

Até aqui tudo OK, você já poderá usar a referencia oramds: para referenciar seus WSDL e XSD...

Por exemplo: oramds:/apps/wsdl/SeuContrato.wsdl

Agora, com o botão direito do mouse clique em Artefatos e clique em Project Properties...

Clique em Deployment e depois em New

Na tela abaixo coloque o nome commons e clique em OK

Obs: Pode ser qualquer outro nome

Na tela abaixo clique em Contributors e posteriormente em Add... para indicarmos onde esta a pasta app que criamos em nosso projeto

No meu caso está em: /home/uans/jdeveloper/mywork/BKP/UansBlogApplication/Artefatos/apps

Agora clique em Filters e ao lado direito, marque as pastas que deverão ser compartilhadas, no meu caso WSDL e XSD, em seguida clique em OK

Na tela abaixo clique em OK novamente.

Agora clique com o botão direito diretamente no seu application, no meu caso em UansBlogApplication e clique em Application Properties...

Clique em Deployment e ao lado direito em New...

Obs: Aqui vamos criar um deployment do tipo Soa Bundle, por isso daremos o nome soabundle

Então em Archive Type coloque a opção SOA Bundle

Em Name: coloque soabundle e clique em OK

Agora clique em Dependencies e ao lado direito marque a opção commons em Artefatos.jpr e clique em OK

Na tela abaixo clique em OK novamente

Pronto, agora você já pode realizar o deploy localmente do seus artefatos MDS.

Lembre-se apenas que ao alterar algum arquivo XSD ou WSDL que esteja dentro do projeto Artefatos, pasta apps.. que você deve fazer o deploy localmente normalmente como se fosse qualquer outro projeto, devendo também baixar e subir o seu AdminServer para que suas alterações surtam efeito.

Mas para distribuir os artefatos MDS para um ambiente diferente do ambiente local, em um servidor por exemplo, devemos criar um projeto simples chamado Common (ou algum outro nome que você desejar).

Para isso:

Clique em File >> New

Será aberto uma tela como abaixo:

Em seguida selecione Generic Project

Em Project Name coloque Common e clique em Finish

Agora com o botão direito do mouse em cima do projeto Common e clique em Project Properties...

Clique em Deployment e ao lado direito clique em New

Agora em Archive Type: deixe selecionado a opção JAR File e em Name: coloque Common e clique em OK

Muita atenção agora não tela abaixo:

Clique em Contributors e ao lado direito clique em Add e adicione a pasta Artefatos do seu Projeto e posteriormente clique em OK

Obs: Veja abaixo que não é a pasta "apps" conforme adicionamos anteriormente, pois será apenas até a pasta Artefatos que no meu caso estará em: /home/uans/jdeveloper/mywork/BKP/UansBlogApplication/Artefatos

Agora clique em Filters e selecione "APENAS" a pasta apps que selecionará automaticamente as pastas wsdl e xsd conforme abaixo e clique em OK

Na tela abaixo clique em OK novamente

Para certificar-se que tudo ocorreu com sucesso vamos fazer dois testes muito simples.

Primeiro Teste:

Copie um WSDL e um XSD qualquer para as pastas wsdl e xsd que criamos em artefatos

Abaixo veja que copiei o WSDL e XSD do meu projeto HelloWorldBPEL

Apenas uma observação aqui, pois dentro do WSDL HelloWorld.wsdl da minha pasta artefatos/wsdl editei meu schemaLocation para que identificasse onde esta meu xsd, no caso em: ../xsd/SelecDBAdapterBPELProcess.xsd

Agora crie um Projeto chamado Teste e em Template selecione a opção Base on a WSDL

Agora em WSDL URL coloque o caminho e nome onde está o seu WSDL que criamos em Artefatos, lembrando que deve começar usando o prefixo oramds:

No caso assim:

oramds:/apps/wsdl/HelloWorld.wsdl     (Não esqueça de colocar o nome do arquivo exatamente igual junto com a extenção wsdl)

Feito isso, aperte a tecla TAB do seu teclado e caso apareça a opção Transaction e o Port Type conforme abaixo quer dizer que o BPEL conseguiu achar o seu WSDL na pasta Artefatos, basta clicar agora em OK e começar a usar tudo do seu projeto Artefatos

Segundo Teste:

Faça um deploy localmente do seu projeto Common e verifique no arquivo Common.Jar foi gerado se lá contem os arquivos WSDL e XSD que colocamos no projeto Artefatos.

Clique com o botão direito em cima do projeto Commons escolha a opção Deploy >> Common to JAR file

Verifique conforme abaixo se o arquivo Common.jar foi gerado e se dentro deste arquivo existem os arquivos WSDL e XSD que colocamos na pasta Artefatos

Pronto, agora este arquivo Common.jar já pode ser enviado a qualquer servidor para fazer deploy.


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.