2010-04-01 187 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