2017-08-24 78 views
0

的Lotus Notes中的Java複製我有很多的Lotus Notes/Domino的的(第7版)數據庫遷移到新的軟件。 在我的工作站(安裝Lotus Notes)中,我使用的是獨立的Java應用程序連接到本地副本的提取數據。 但是遠程數據庫的複製仍然是一個手動過程。我想自動化它。遠程數據庫

我的Java代碼基本上是這樣的:

Session localSession = NotesFactory.createSession(); // With Notes thread initialized 
Session remoteSession = NotesFactory.createSession(SERVER, USER, PASSWORD); 

Database localDb = localSession.getDbDirectory(null).openDatabase("local_name", true); 
Database remoteDb = remoteSession.getDbDirectory(null).openDatabaseByReplicaID(REPLICA); 

// ***EDITED CALLING INSTANCE BELOW*** 
remoteDb.createReplica(null, "local_name"); // Error thrown here 

但最後一行拋出異常(從memroy,但類似)

CN=****/***** does not have the right to create database on a server 

這怎麼可能,我不有沒有權利在我的本地計算機上創建數據庫?

是否有任何其他的方式來programmaticly創建一個遙遠的數據庫的本地副本?

編輯:改變調用創建副本的情況下,以匹配導致了問題

回答

0

好吧,它看起來像我找到了答案。

AFAIU我不得不從這裏打開數據庫在目標服務器上,使用我的本地會話,並運行createReplica()。這樣,createReplica就會在本地Lotus Notes服務器上執行,副本將在本地創建。

Session  localSession  = NotesFactory.createSession((String)null, (String)null, PASSWORD); 
DbDirectory remoteDbDirectory = localSession.getDbDirectory(remoteSession.getServerName());   
Database localSessionRemoteDatabase = remoteDbDirectory.openDatabaseByReplicaID(REMOTE_REPLICA_ID);   
localSessionRemoteDatabase.createReplica("", LOCAL_FILE_NAME); 

@Richard施瓦茨你能確定這是好嗎?

唯一奇怪的是,它會打開一個提示,但副本創建(當它預計密碼等)。該進程在Eclipse中執行。

0

我的猜測是,它只是給你正確的錯誤消息我的代碼。有一點肯定是錯誤的,那就是他對createReplica的第一個參數應該是一個空字符串,而不是空指針。即,試試這個:

localDb.createReplica("", "local_name"); 
+0

我編輯我的職務。我正在調用遠程數據庫上的創建副本。我認爲這是問題。我很困惑:使用Java從頭開始創建遠程數據庫本地副本的過程是什麼?謝謝 – Psyko

+0

哦,等一下...你用的是NCSO.jar而不是notes.jar嗎?如果是這樣的話,你就沒有「本地」。您的API調用都在服務器上執行。 –

+0

但同時,再次,在修改後的代碼,你不應該爲空傳遞作爲第一個參數createReplica()。它應該是一個空字符串,「」,不是指向字符串的空指針。 –