Lotus Notes Java 复制远程数据库

Lotus Notes Java replication of remote database

我有很多 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

但是最后一行抛出异常(来自内存,但类似)

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

我怎么可能没有权限在我的本地计算机上创建数据库?

是否有任何其他方法可以通过编程方式从远程数据库创建本地副本?

编辑:更改了创建副本的调用实例以匹配我导致问题的代码

我猜它只是给你错误的错误信息。有一点肯定是错误的,那就是 createReplica 的第一个参数应该是空字符串,而不是空指针。即,试试这个:

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

好的,看来我找到了答案。

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 Schwartz 你能确认这没问题吗?

唯一奇怪的是,它会打开一个提示(比如当它需要密码时),但副本已创建。 该过程在 Eclipse 中执行。