2

我有一个带有 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>
4

1 回答 1

3

检索多个数据时存在问题。如果我们尝试检索多个数据,它将返回第一行数据。返回的值将存储在突触消息上下文中。因此,如果您只使用日志调解器,您将能够查看结果。像这样使用;

像这样更改您的 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>
于 2012-08-30T18:11:20.207 回答