我想在多線程應用程序中使用orientdb內存中的實例。我看了很多代碼示例,但似乎沒有涵蓋這種情況。這裏是我的測試代碼:在多線程應用程序中使用內存中的orientdb
DbTest.java
public class DbTest {
public static void main(String [] args) {
ODatabaseDocumentTx db = new ODatabaseDocumentTx("memory:MyDb").create();
Runnable myRunnable = new MyRunnable(db);
Thread thread = new Thread(myRunnable);
thread.start();
}
}
MyRunnable.java
public class MyRunnable implements Runnable {
private ODatabaseDocumentTx db;
MyRunnable(ODatabaseDocumentTx db) {
this.db = db;
}
public void run() {
ODocument animal = new ODocument("Animal");
animal.field("name", "Gaudi");
animal.field("location", "Madrid");
animal.save();
}
}
這給了錯誤
異常的線程 「主題-3」 com.orientechnologies .orient.core.exception.ODatabaseException:數據庫實例未在當前線程中設置。確保將其設置爲:ODatabaseRecordThreadLocal.INSTANCE.set(db);
我讀,我應該嘗試使用連接池,但連接池似乎並不在線程「主要」 com.orientechnologies.orient內存數據庫的工作
ODatabaseDocumentTx db = ODatabaseDocumentPool.global().acquire("memory:MyDb", "admin", "admin");
異常.core.exception.OStorageException:無法打開本地存儲'MyDb'與模式= rw
任何想法如何這實際上應該工作?
這也工作正常,回想起來我應該意識到這是這兩個如何相互作用,謝謝。 – LeventisV2 2014-10-28 23:45:15