如何在WSO2 ESB中外部化查询

时间:2014-08-19 15:12:42

标签: wso2esb

我使用WSO2 ESB 4.8.1

创建了ESB代理

目前,DBLookup介体包含以下sql

<sql>select A, B, C from cis-dev.table1 where ... </sql>

由于cis-dev模式特定于开发环境,因此我需要将此查询存储在代理之外,以便将代理服务迁移到QA和PROD环境。

有没有办法在WSO2 ESB中实现这一目标?

谢谢,

1 个答案:

答案 0 :(得分:0)

外部没有直接的存储查询方式,并根据环境调用它。但您可以参数化查询并使用请求传递参数以更改查询中的值。请参阅下面的示例

<dblookup>
   <connection>
       <pool>
           <driver>org.apache.derby.jdbc.ClientDriver</driver>
           <url>jdbc:derby://localhost:1527/esbdb;user=esb;password=esb</url>
           <user>esb</user>
           <password>esb</password>
       </pool>
   </connection>
   <statement>
       <sql>select * from company where name =?</sql>
       <parameter expression="//m0:getQuote/m0:request/m0:symbol"
                  xmlns:m0="http://services.samples" type="VARCHAR"/>
       <result name="company_id" column="id"/>
       <result name="company_price_0" column="price" rowIndex="2"/>
       <result name="company_price_1" column="price" rowIndex="4"/>
   </statement>
</dblookup>