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 中执行。
我有很多 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 中执行。