2014-12-10 2 views
0

Lotus Domino 서버에서 다음 Java 코드를 실행할 때 코드가 실행되는 위치에 따라 다른 결과가 나타납니다. 나는 자바 에이전트로 서버에서 코드를 실행하면Lotus Domino 서버에 액세스 할 때 다른보기 내용

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); 
    } 
} 
  • 은보기에 37,235 문서가 있습니다.
  • 독립 실행 형 클라이언트에서 코드를 실행하면보기에 37217 개의 문서 만 있고 코드는 훨씬 느려집니다.

세부 사항 및 실행 환경 : 나는 클라이언트에 사용되는 NCSO.jar는 SHA-1 d879f8992aae49a06769a564217633a9e0fbd1b6을 가지고

  • 서버 버전은 8.5.3이다.
  • 데이터베이스 myDatabase.nsf에는 약 150000 개의 문서가 있으며 각 문서에는 파일이 첨부되어 있습니다.
  • 누락 된 문서는 블록에 나타나지 않으며 색인 10000과 20000 사이에 나타납니다.
  • 두 경우 모두 코드가 동일한 사용자 계정으로 실행됩니다.

18 개 문서를 찾을 수없는 이유는 무엇입니까?


업데이트 및 추가 검사시 명확한 설명

, 내가 참으로 다른 사용자 계정으로 코드를 실행했다고 밝혀, 및 액세스 할 수없는 문서는 어떤 리더 이름 필드를하였습니다.

서버에서 "대신 실행"CN=User Name/O=domain 에이전트를 구성했지만이 구성을 사용했습니다. 나는이 구성했다

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 

을 그리고 나는이 코드를 사용하지만 그조차이었다 I가 Domino 콘솔에서 또는 HTTP를 통해 에이전트를 실행 여부는 중요하지 않았다 클라이언트 :

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

답변

1

두 경우 모두 코드가 동일한 사용자 계정으로 실행되므로이 ​​사실이 맞다고 말하고 싶습니다. 그러므로 불일치의 원인으로 Reader Names 필드를 배제했다고 가정합니다.

그런 경우 서버에서 실행중인 에이전트에서 ViewEntry 개체의 IsValid() 속성을 처리했는지 확인 했습니까? 아마도 클라이언트 측 코드에 사용하는 NCSO.jar 구현은 IsValid()가 false를 반환하는 객체를 필터링하는 것입니다.

+0

감사합니다. 나는 여전히 Domino 사용자 처리 및 액세스 권한에 대해 많이 배워야합니다. –