O Howto de acesso do registro no WSO2 ESB
Pergunta
Como referência arquivos WSDL a partir do registro quando a definição de um novo serviço de proxy?Eu estou usando o WSO2 ESB.
Q1: Posso usar o localEntry elemento para definir o WSDL no meu serviço de proxy?Por exemplo:
localEntry key="my_wsdl" src="file:/wsdl/MyServiceSOAP.wsdl"
Desde que eu tenho usado anteriormente Console De Gerenciamento > Adicionar Coleção > criar "wsdl", e Adicionar O Recurso > MyServiceSOAP.wsdl.Eu tenho um problema com a "src" value, tanto
"/wsdl/MyServiceSOAP.wsdl"e
"wsdl/MyServiceSOAP.wsdl"não funcionam.Eu sigo a documentação mas eles não mostram como fazer upload de WSDLs para o registro.
Q2: O que se MyServiceSOAP.wsdl importa MyService.wsdl?Eu preciso usar o Adicionar O Recurso para MyService.wsdl bem, mas eu preciso fazer mais alguma coisa para fazer o Proxy compilar?
Solução
Eu acho que você está se referindo ao registro aqui.O espaço de Registo em cada produto contém três grandes partições.
- Local
- Configuração
- Governança
A configuração do registro contém produtos específicos de configuração que pode ser compartilhado entre várias instâncias do mesmo produto (de um cluster de ESB nós por exemplo).Assim você pode criar o WSDL coleção dentro da Configuração do registro e se referem a ele como..
"conf:/wsdl/MyServiceSOAP.wsdl"
Carregando os recursos para Registro, você pode pegá-los facilmente ao criar o serviço de proxy também.
Eu acho que você pode se referir a recursos como "file:/wsdl/MyServiceSOAP.wsdl" somente quando eles estão dentro de um diretório chamado "wsdl" no sistema de arquivos local.BTW, sobre as mensagens de erro..Se você olhar para a ESB logs de servidor, você verá o seguinte erro quando você tenta para atualizar o proxy referindo-se a um não arquivo existente.
Caused by: java.io.FileNotFoundException: ./wsdl/MyServiceSOAP.wsdl (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
at org.apache.synapse.config.SynapseConfigUtils.getObject(SynapseConfigUtils.java:197)
... 46 more
Outras dicas
Eu encontrei uma solução simples para ele a partir de um blog:No meu Cenário, eu tinha um wsdl, que importou outro wsdl importado um xsd.Estruturas reais foram na segunda wsdl.
Linha de importação no original wsdl:
<wsdl:import namespace="http://www.somedomain.com/interface/v1_0" location="service_interface_1_0.wsdl"/>
Linha de importação no segundo wsdl:
<xsd:import namespace="http://www.somedomain.com/data/v1_0" schemaLocation="data_types_1_0.xsd"/>
Necessário xml no proxy:
<publishWSDL key="file_required_service_1_0.wsdl">
<resource location="service_interface_1_0.wsdl"
key="file_service_interface_1_0.wsdl"/>
<resource location="data_types_1_0.xsd"
key="file_data_types_1_0.xsd"/>
Onde eu locais entradas para "file_required_service_1_0.wsdl", etc local nomeado de entradas que contêm o original wsdl e xsd arquivos.