2010-04-01 142 views
0

ServletAGAE交易异常

  • 在查询检索一组对象(2000年左右),然后运行一个权重函数选择一个对象,并对其进行更新。
  • 全部是trasaction内,所以如果对象发生了变化
  • 它会得到一个异常

ServletB

  • 每个对象是由机器人客户每15秒更新

因此,已在ServletA中检索到的记录集每2000/15 = 133毫秒正在更新。
它会不会中断更新对象吗?

+0

我可能会将对象拆分为两个对象,一个通过servletA更改,另一个通过servletB更改,并且仅在servletA中拥有事务...我希望GAE可以定义只能在一个VM上运行的应用程序 - 并非全部应用是全球性的! – bach 2010-04-01 12:31:33

+0

您是否预料到这种情况会发生在您的真实应用程序中?也许你应该考虑DoS防护:http://code.google.com/appengine/docs/java/config/dos.html – 2010-04-01 12:50:06

+0

来吧,每15秒从机器人客户端获取更新对许多应用程序来说都是微不足道的(财务例如) – bach 2010-04-01 12:59:00

回答

1

如果在从数据存储中检索到所选“最佳”房间之前,ServletA将只会抛出一个异常,然后才会保留它。

如果其他1999个实体中的任何实体都被修改了,那么根本没有关系,因为你根本没有修改它们。

+0

这是个好消息。非常感谢杰森! – bach 2010-04-02 01:27:26