【问题标题】:Lotus Notes Java replication of remote database远程数据库的 Lotus Notes Java 复制
【发布时间】:2017-08-24 18:30:04
【问题描述】:

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

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

还有其他方法可以从远程数据库以编程方式创建本地副本吗?

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

【问题讨论】:

    标签: java replication lotus-notes lotus-domino


    【解决方案1】:

    我的猜测是它只是给你错误的错误信息。绝对错误的一件事是 createReplica 的第一个参数应该是空字符串,而不是空指针。即,试试这个:

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

    【讨论】:

    • 我编辑了我的帖子。我正在远程数据库上调用创建副本。我认为这是问题所在。我很困惑:使用 Java 从头开始​​创建远程数据库的本地副本的过程是什么?谢谢
    • 哦,等一下...您使用的是 NCSO.jar,而不是 notes.jar?如果是这种情况,您就没有“本地”。您的 API 调用都在服务器上执行。
    • 但同样,在您修改后的代码中,您不应该将 null 作为第一个参数传递给 createReplica()。它应该是一个空字符串“”,而不是指向字符串的空指针。
    • 不,我肯定在本地计算机上使用 Notes.jar 运行。 Notes.jar 取自 Lotus Notes 安装目录。但是调用 remoteDb.createReplica("", "local_name") 将在服务器或我的计算机上创建一个副本?
    • 如果您使用的是 notes.jar,则调用 remoteDb.createReplica("", "local_name") 将在您的计算机上创建一个本地副本。
    【解决方案2】:

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

    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 中执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多