Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有一种方法可以在几个客户端之后显式提交和回滚事务&;服务器提交_Java_Spring Mvc_Ibatis_Data Integrity - Fatal编程技术网

Java 有没有一种方法可以在几个客户端之后显式提交和回滚事务&;服务器提交

Java 有没有一种方法可以在几个客户端之后显式提交和回滚事务&;服务器提交,java,spring-mvc,ibatis,data-integrity,Java,Spring Mvc,Ibatis,Data Integrity,环境:应用程序使用Spring Framework 2.5.6.SEC01和iBatis 2.3.4.726。这是MVC设计 以下是场景: 从客户端输入/更新数据 按更新按钮提交 处理数据并执行DML(插入、更新、删除) 将结果返回给客户端并显示数据 但是,在加载页面时,我需要通过Javascript调用API(我对API没有控制权,只需要传递所需的参数并检查结果是否成功或错误) 若API返回成功,则无需执行任何操作。但它返回错误,我会发出警告消息通知用户 我有视图(客户端)、服务和数

环境:应用程序使用Spring Framework 2.5.6.SEC01和iBatis 2.3.4.726。这是MVC设计

以下是场景:

  • 从客户端输入/更新数据

  • 按更新按钮提交

  • 处理数据并执行DML(插入、更新、删除)

  • 将结果返回给客户端并显示数据

  • 但是,在加载页面时,我需要通过Javascript调用API(我对API没有控制权,只需要传递所需的参数并检查结果是否成功或错误)

  • 若API返回成功,则无需执行任何操作。但它返回错误,我会发出警告消息通知用户

    我有视图(客户端)、服务和数据访问层。当客户端进行提交(场景2)时,它进入服务以处理数据并自动启动事务(场景3)。退出服务并返回客户端时自动执行提交以显示数据(场景4)

  • 问题:如何挂起事务而不执行提交,然后返回到客户端,通过Javascript调用API
    当API返回成功时,通过Ajax(或其他方式)执行提交,或者在另一方面回滚它。


    如果我理解正确,您希望启动数据库事务,插入数据(无需输入),保持连接和事务打开,返回到客户端,并根据一些javascript结果执行提交

    这感觉像是一种奇怪的设计,客户端实际上可以保持连接打开,使您的应用程序极易受到(D)DOS攻击或客户端问题的攻击

    我会尽力将其改造如下:

  • 提交后,调用所需的javascript以确认提交/保存操作
  • 当javascript成功时,请将提交到您自己的服务器
  • 在DAO内执行正常的连接/事务处理,而不是向客户机公开事务

  • 这更快、更健壮,而且代码可能更少。

    我认为您不能依靠客户端代码来确保数据库执行提交。我可能完全误解了你的问题。使用SpringWebFlow可以做到,但它是每个流(或每个页面)。我希望每个活动都有。我也相信你的建议非常好,是最好/正确的方法。我的问题是限制,我无法控制API功能。我只是理解它的需求,传递所需的参数,调用它并接收结果。我会接受你的建议作为答案,因为这是处理这种情况的正确方法。谢谢,谢谢你接受。我希望您能找到一种方法,说服您的客户或现有系统所有者正确地执行此操作,以便您能够正确地执行此操作。干杯