SQL-Adapter可以处理事务(开始/插入/回滚)吗?

时间:2014-10-31 02:10:14

标签: ibm-mobilefirst worklight-adapters

Worklight Studio v6.2
MySQL社区服务器5.6.21

我为此做了简单的实验。 我在sql适配器中创建了4个过程。

“开始”程序,只调用“BEGIN”;声明。
“commit”过程,只调用“COMMIT”;声明。
“rollback”过程,只调用“ROLLBACK”声明。
“insert”过程,它调用“INSERT”语句,将一行插入表中。

另外,我创建了具有按钮的混合应用程序。每个按钮执行上述步骤。

我通过浏览器打开它进行测试。 我执行“begin - > insert - > commit”和“begin - > insert - > rollback”。两者都很好。

接下来,我从两个浏览器(A / B)打开应用程序。我在下面执行。

1.从浏览器A:开始
2.从浏览器A:插入
3.从浏览器 B :提交

已提交
数据库无法通过这种方式区分每个请求来自不同用户 任何解决方案?

提前致谢。

1 个答案:

答案 0 :(得分:2)

更新:您可以尝试的是:

  1. 使代码更具原子性,在某种意义上,不是4个程序,而是在1个程序中进行所有这些不同的调用,
  2. 独特 - 如果您的SQL查询,通过发送一个唯一的标识符...这样,浏览器的会话之间不应该有任何混合。您需要验证您是否使用此唯一标识符进行操作。

  3. 编辑:这不是正确的选择,因为SQL adapeders不支持connectAs =“endUser”

    认为 您需要做的是将connectAs="endUser"属性添加到适配器XML文件中的适配器过程:<procedure name="myProcedure" connectAs="endUser"/>

    从您应阅读的以下博文中,connectAs="endUser"表示:

      

    为了支持有状态的后端HTTP适配器程序可以   配置为在connectAs =“endUser”模式下工作。这种模式意味着   将为每个客户端创建一个单独的HTTP会话实例   会话

    博文:Configuring HTTP adapters for stateless/stateful backend connectivity and user identity propagation