0

我用servlet編寫了一個Web應用程序,並使用數據存儲區和命名空間apis。GAE應用程序在本地工作,而不是在appengine上(遠程複製)

這對我的本地主機很好用,但從不將數據存儲在已部署的副本上。

我遵循多租戶Java文檔,以及另一個參考,以便我可以讀取XML並將其存儲在BigTable中。

使類持久化:

`@PersistenceCapable(identityType = IdentityType.APPLICATION) 
public class Layout { 

    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 

    private String id;' 

Store中的數據:

`customerKey = KeyFactory.createKey(Layout.class.getSimpleName(), layout.getId()); 
      layout.setKey(customerKey);` 

現在讓它持續...

`pm = XMLImportPersistenceManagerFactory.get().getPersistenceManager(); 
      SAXParser saxParser = factory.newSAXParser(); 
      saxParser.parse(new InputSource(_URL_STRINGS), this);` 

然後關閉它...

pm.close() 

該代碼在我的本地主機中運行得非常漂亮。它不起作用,我可以在appengine上看到。該servlet運行,但沒有數據存儲。

如果你點擊了網址,它會顯示佈局創建,我會在日誌中看到200,但沒有數據。這告訴我這個servlet正在運行。 這是我的應用程序:http://layoutimporter.appspot.com/CreateLayout?namespace=boston

一些關閉細節。我編寫了一個名稱空間過濾器,以根據查詢字符串中的參數設置名稱空間。

我正在熱身的servlet並初始化一個PersistenceManagerFactory,以避免加載請求= 1

在這一個任何想法。我已經耗盡了我的資源,並在與「哎呀,我找不到你的種類......」等相關的所有相同線程中進行假脫機。

我嘗試刪除已部署的副本並啓動新的已部署副本。我試着重新部署已部署的副本。沒有快樂。當我在本地副本上進行保存時,我可以out.print命名空間和數據,但在遠程副本上永遠不會。這是一個真正的擊球手!

謝謝!

.. \溫迪

+0

這也是我如何做makePersistentAll(在saxParser.parse行之後... pm.makePersistentAll(layouts); – user1076384 2013-04-23 21:15:28

回答

0

我通過

1)去除JDO這是在我的應用程序庫被緩存1.5庫(我已經切換到V2解決了這個問題,但他們仍然在那裏。 我刪除他們的方式是啓動一個新項目,並在複製我的代碼。

這表明當地的一些問題,比如現在的例外是在我的本地主機,其指示我,使XG交易拋出...

2)添加以下的jdoconfig.xml ...

3)我使用的交易。

我並沒有完全理解這個解決方案,因爲事務只是簡單地保存了Layout類型的對象集合。我很高興它的工作原理。

現在,根據名稱空間,數據正在生產(遠程)副本以及我的本地主機上持久保存。

+0

這就是jdoconfig.xml中的內容 user1076384 2013-04-24 21:17:17

相關問題