Hôm nay, đây là lần đầu tiên tôi sử dụng GWT và JDO. Tôi đang chạy nó với Eclipse trong chế độ gỡ lỗi cục bộ.App-Engine JDO nhất quán đọc không hoạt động, có thể bộ nhớ đệm?
tôi làm những điều sau đây:
public Collection<MyObject> add(MyObject o) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(o);
Query query = pm.newQuery(MyObject.class);// fetch all objects incl. o. But o only sometimes comes...
List<MyObject> rs = (List<MyObject>) query.execute();
ArrayList<MyObject> list= new ArrayList<MyObject>();
for (MyObject r : rs) {
list.add(r);
}
return list;
} finally {
pm.close();
}
}
tôi đã thiết lập <property name="datanucleus.appengine.datastoreReadConsistency" value="STRONG" />
trong jdoconfig.xml
tôi. Tôi có phải đặt một số giao dịch khác trong cấu hình không? Có ai đó đã làm việc jdoconfig.xml
? Hay là vấn đề ở đâu đó khác? Một số bộ nhớ đệm inbetween?
EDIT: Những điều tôi đã cố gắng:
- Thiết NontransactionalRead/Viết false
- Sử dụng cùng/A khác nhau
PersistenceManager
dù gọiPMF.get().getPersistenceManager()
nhiều lần - Sử dụng giao dịch
- ignoreCache = đúng trên
PersistenceManager
- gọi
flush
vàcheckConsistency
Các jdoconfig:
<persistence-manager-factory name="transactions-optional">
<property name="datanucleus.appengine.datastoreReadConsistency" value="STRONG" />
<property name="javax.jdo.PersistenceManagerFactoryClass"
value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
<property name="javax.jdo.option.ConnectionURL" value="appengine"/>
<property name="javax.jdo.option.NontransactionalRead" value="true"/>
<property name="javax.jdo.option.NontransactionalWrite" value="true"/>
<property name="javax.jdo.option.RetainValues" value="true"/>
<property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
</persistence-manager-factory>
tôi phải mất một cái gì đó trung tâm ở đây bởi vì tất cả các cách tiếp cận thất bại ...
EDIT2: Khi tôi chia công việc thành hai giao dịch các bản ghi nói rằng giao dịch ghi được đánh bắt và sau đó giao dịch đọc bắt đầu. Nhưng nó không tìm thấy đối tượng vừa bị thuyết phục. Nó luôn luôn nói Level 1 Cache of type "weak" initialised
là tốt. Tuần xấu hay tốt?
Có khoảng 30% yêu cầu bị lỗi ... Tôi có thể gặp vấn đề tải truy vấn lười biếng không?
Tôi cũng phải đối mặt với cùng một vấn đề. Tôi thêm một số đối tượng thông qua ứng dụng của tôi, nhưng họ không phản ánh trong kết quả, đôi khi, và đôi khi họ làm! –
và đối tượng nằm trong kho dữ liệu tại thời điểm thực hiện truy vấn? Rõ ràng là nhật ký sẽ cho bạn biết điều đó. Điều này liên quan đến GWT là không rõ ràng ... – DataNucleus
Tôi tìm nhật ký ở đâu?Những gì nó đã làm với GWT? Rất nhiều, bởi vì nó là một dự án GWT. Tôi không thể thực sự kéo một ranh giới rõ ràng giữa GWT và công cụ ứng dụng vì vậy tôi gọi mọi thứ GWT đến từ google. Và tại sao bộ nhớ đệm lại bị rối tung lên đến mức cùng một ví dụ không thể đọc được dữ liệu vừa được viết? Bạn có thể đăng tệp jdoconfig.xml sẽ luôn nhất quán cho cùng một ứng dụng không? –