gpt4 book ai didi

java - 访问 Lotus Domino 服务器时不同的 View 内容

转载 作者:行者123 更新时间:2023-12-01 12:08:23 25 4
gpt4 key购买 nike

当我在 Lotus Domino 服务器上运行以下 Java 代码时,根据代码运行的位置,我会得到不同的结果。

private void doViewStuff(Session session, PrintStream out) throws NotesException {
Database db = session.getDatabase(null, "myDatabase.nsf");
View view = db.getView("myViewName");

Document doc = view.getFirstDocument();
while (doc != null) {
out.println("doc: " + doc.getUniversalID());
doc = view.getNextDocument(doc);
}

ViewEntryCollection entries = view.getAllEntries();
ViewEntry entry = entries.getFirstEntry();
while (entry != null) {
System.out.println("entry: " + entry.getColumnValues());
entry = entries.getNextEntry(entry);
}
}
  • 当我在服务器上作为 Java 代理运行代码时, View 中有 37235 个文档。
  • 当我在独立客户端中运行代码时, View 中只有 37217 个文档,并且代码速度慢得多。

详细信息和执行环境:

  • 服务器版本是 8.5.3,我用于客户端的 NCSO.jar 具有 SHA-1 d879f8992aae49a06769a564217633a9e0fbd1b6
  • 数据库 myDatabase.nsf 包含大约 150000 个文档,每个文档都有一个文件附件。
  • 缺失的文档不会出现在 block 中,而是出现在索引 10000 和 20000 之间。
  • 在这两种情况下,代码都会以同一用户帐户运行。

其中 18 个文档找不到可能是什么原因?

<小时/>

更新和说明

经过进一步检查,发现我确实使用不同的用户帐户运行了代码,并且无法访问的文档具有一些“读者姓名”字段。

在服务器上,我有此配置,尽管我将代理配置为“代表运行”CN=用户名/O=域。我是从 Domino 控制台还是通过 HTTP 运行代理并不重要:

effectiveUserName=CN=User Name/O=domain
commonUserName=domino01
userName=CN=domino01/O=domain

在客户端我有这样的配置:

effectiveUserName=[NotesException: Not implemented]
commonUserName=User Name
userName=User Name/O=domain

即使我在客户端中使用了这段代码:

Session session = NotesFactory.createSession("127.0.0.1", "User Name", "password");

最佳答案

您说在这两种情况下代码都以同一用户帐户运行,所以我想相信这是真的。因此,我认为您已排除读者姓名字段是造成差异的原因。

在这种情况下,当您在服务器上运行的代理中处理 ViewEntry 对象时,您是否检查过 ViewEntry 对象的 IsValid() 属性?也许您用于客户端代码的 NCSO.jar 实现会过滤掉 IsValid() 将返回 false 的对象。

关于java - 访问 Lotus Domino 服务器时不同的 View 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27409434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com