в эклипсе запустил (но неполностью) примерчик, запускал с серверными бинарниками (10ФП2), на убунте 64бит. Не получилось итерировать энтрисы - их просто 0, учитывая что names.nsf не пустая
-Djava.library.path=/opt/ibm/domino/notes/latest/linux
-Duser.dir=/local/notesdata
Initializing Domino JNA with mode Direct
0E:AA (0 MB): 100%
18.09.2019 19:40:48 0E:A8
18.09.2019 19:40:48 03:3E
18.09.2019 19:40:48 03:3E
Db server:
Context User: CN=dom2/O=CRUINTERNET
Entries count:0
10020167
запускал при выключеном сервере, ибо при включенном были странности: то пропадал в сети, то падал, то завершал работу.
Пример с гитхаба не стал работать - не находил ID, разработчик подсказал
другой способ инициализации, указать notes.ini не получилось, но хватило каких-то умолчаний (как я понимаю) указание рабочего каталога не влияет (user.dir).
В коде ниже закоменчены варианты обращения к серверу, в т.ч. к удаленному, Context user "работает" только для "локального" сервера, соединения с удаленным устанавливает (смотрел в консоли).
Что из себя представляет Context user - я не разобрался, при обращении к удаленному серверу дает ошибку, к локальному - он даже не пытается его валидировать.
Строки ключей в выхлопе теста - задавал в параметрах запуска кода (jvm) и
Ссылка скрыта от гостей
Сама jvm - от домины, потому и нужно указывать пути к бинарникам (иначе ошибка будет)
Java:
import com.mindoo.domino.jna.*;
import com.mindoo.domino.jna.NotesCollection.EntriesAsListCallback;
import com.mindoo.domino.jna.constants.Navigate;
import com.mindoo.domino.jna.constants.OpenNote;
import com.mindoo.domino.jna.constants.ReadMask;
import com.mindoo.domino.jna.gc.NotesGC;
import lotus.domino.NotesException;
import lotus.domino.NotesFactory;
import lotus.domino.NotesThread;
import lotus.domino.Session;
import java.util.EnumSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.concurrent.Callable;
public class DominoApi{
public static void main(String[] args) throws NotesException {
System.out.println("-Djava.library.path="+System.getProperty("java.library.path"));
System.out.println("-Duser.dir=" +
System.getProperty("user.dir"));
try {
com.mindoo.domino.jna.utils.NotesInitUtils.notesInitExtended(new String[]{});
NotesGC.runWithAutoGC(new Callable<Object>() {
@Override
public Object call() throws Exception {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
NotesDatabase dbData = new NotesDatabase("", "names.nsf", "");
System.out.println("Db server: "+dbData.getServer());
System.out.println("Context User: "+dbData.getContextUser());
NotesCollection colFromDbData = dbData.openCollectionByName("People");
boolean includeCategoryIds = false;
LinkedHashSet<Integer> allIds = colFromDbData.getAllIds(Navigate.ALL_DESCENDANTS);
NotesIDTable selectedList = colFromDbData.getSelectedList();
selectedList.clear();
selectedList.addNotes(allIds);
String startPos = "0";
int entriesToSkip = 1;
int entriesToReturn = Integer.MAX_VALUE;
EnumSet returnNavigator = EnumSet.of(Navigate.NEXT_SELECTED);
int bufferSize = Integer.MAX_VALUE;
EnumSet returnData = EnumSet.of(ReadMask.NOTEID, ReadMask.SUMMARY);
List<NotesViewEntryData> selectedEntries = colFromDbData.getAllEntries(startPos, entriesToSkip,
returnNavigator, bufferSize, returnData, new EntriesAsListCallback(entriesToReturn));
System.out.println("Entries count:" + selectedEntries.size());
for (NotesViewEntryData currEntry : selectedEntries) {
NotesNote note = dbData.openNoteById(currEntry.getNoteId(), EnumSet.noneOf(OpenNote.class));
System.out.println(
note.getItemValueString("lastname") + ", " + note.getItemValueString("firstname"));
note.recycle();
}
stopWatch.stop();
System.out.println(stopWatch.getElapsedTimeSecs());
return null;
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
com.mindoo.domino.jna.utils.NotesInitUtils.notesTerm();
}
}
}