Pergunta

Eu estou usando o WSO2 ESB e DSS, eu tenho instalação de um DSS serviço e testei isso e funciona usando a seguinte URL

http://10.248.40.85:9764/services/params/op/{Value goes here}

O meu problema é quando chamar isso de ESB isso não funciona, e lança-o incompatível parâmetros de erro.A forma como ele está sendo chamado é o seguinte

<log level="custom">
    <property name="uri.var.ID" expression="$body/int:User/int:UserID/text()"/>
</log>
<send>
    <endpoint>
        <http method="get" uri-template="http://10.248.40.85:9764/services/params/op/{uri.var.ID}"/>
    </endpoint>
</send>

Quando o log de uri.var.ID devolve o número esperado, mas quando o serviço tenta chamar o ponto final, ele lança o erro e diz que os parâmetros atuais são vazias.

O DSS serviço de recursos é

<resource method="GET" path="op/{ID}">
    <call-query href="query2">
        <with-param name="ID" query-param="ID"/>
    </call-query>
</resource>
Foi útil?

Solução 2

Resolveu o problema usando a seguinte

<payloadFactory media-type="xml">
    <format>
        <p:operation2 xmlns:p="http://ws.wso2.org/dataservice">
            <xs:ID xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:ID>
        </p:operation2>
    </format>
    <args>
        <arg xmlns:xs="http://ws.wso2.org/dataservice" xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml" expression="get-property('uri.var.ID')"/>
    </args>
</payloadFactory>
<call>
    <endpoint>
        <address uri="http://10.248.40.85:9764/services/params/operation2"/>
    </endpoint>
</call>

Outras dicas

Este problema pode ocorrer devido a várias razões.assim, a lista de verificação abaixo.

  1. Carga da ESB para Dss (Cliente -> ESB-> DSS não é o esperado strcuture.
  2. chamada de porta errada.
  3. você não está chamando o correto DSS Serviço da ESB.

Versão mais recente do DSS Suporta valores de parâmetro padrão na consulta param lista.Por favor, você poderia dar uma chance adicionando defaultValue="#{NULL}" em consulta param lista o seu serviço de dados (bds) arquivo?

<query id="QUERY-ID" useConfig="DATA-SOURCE-ID">
    <sql>-------------SQL QUERY HERE -----</sql>
    <result ----------- >
        <element ------------ />  
    </result>
    <param defaultValue="#{NULL}" name="PARAM-NAME" ordinal="1" sqlType="INTEGER"/>
</query>

O problema deve ser que você tenha definido a propriedade uri.var.ID dentro do log de mediador.Defina-o para fora e de seleção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top