wso2 ESB dblookup mediator

时间:2012-08-30 13:38:55

标签: wso2 wso2esb

我有一个带ID,NAME,DATE的MySql数据库我想通过使用dblookup中介获取这些行,似乎没有用,有人可以检查我的代理定义吗?

<proxy xmlns="http://ws.apache.org/ns/synapse" name="Database" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <dblookup>
            <connection>
               <pool>
                  <password>1234</password>
                  <user>root</user>
                  <url>jdbc:mysql://localhost:3306/new_db</url>
                  <driver>com.mysql.jdbc.Driver</driver>
               </pool>
            </connection>
            <statement>
               <sql>select * from users where name=?</sql>
               <result name="client_expiration" column="expiration" />
               <result name="client_id" column="id" />
               <result name="client_name" column="name" />
            </statement>
         </dblookup>
         <log />
      </inSequence>
   </target>
</proxy>

1 个答案:

答案 0 :(得分:3)

检索多个数据时出现问题。如果我们尝试检索多个数据,它将返回第一行数据。返回的值将存储在synapse Messagecontext中。所以,如果您只是使用日志调解器,您将无法查看结果。 像这样使用;

像这样更改你的sql查询(检索一行数据)

<sql>select * from users where name=ABC</sql>

然后像这样记录;

 <log level="custom">
    <property name="returned value for client_expiration is : "     expression="get-property('client_expiration')"/>
  <property name="returned value for client_id is : "     expression="get-property('client_id')"/>
  <property name="returned value for client_name is : "     expression="get-property('client_name')"/>
 </log>