ich hatte eigentlich vor den Agenten auf dem Server (meiner Anwendung) laufen zu lassen. Aber Deine Ausführungen bringen mich dazu, Ihn im Client auszuführen.
Wenn ich mir allerdings wie folgt eine neue Instanz des Agenten anlege:
LittleAgent la = new LittleAgent();
la.run() // oder auch alternativ: la.runNotes();
bekomme ich über beide run-Methoden nur einen NullPointer zurück:
ava.lang.NullPointerException
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
at de.xxx.xxx.views.SideBarView$1.widgetSelected(SideBarView.java:199)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
...
Was fehlt dem Agenten denn noch?
edit: auch der Aufruf der agent.NotesMain(); führt zu einem NullPointer. Wieder scheint der Event zu fehlen. Irgendwie blicke ich da noch nicht ganz durch!
edit2: das mit dem Event war irreführend!
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
getSession() liefert hier null zurück. Wie komme ich überhaupt von extern irgendwie an die Session? (womit ich eigentlich wieder beim Anfangsproblem wäre, der Kreis scheint sich zu schliessen!)
inzwischen ist es ein wenig her, dass ich eine Lösung gefunden hab, aber der Vollständigkeit halber hier mein Code, der mich zur gewünschten Lösung führte:
public static String getCurrentNotesUserName(){
NotesSessionJob job = new NotesSessionJob("getCurrentNotesUserJob"){
protected IStatus runInNotesThread(Session session,
IProgressMonitor monitor) throws NotesException {
setProperty(new QualifiedName(QUALIFIED_NAME_QUALIFIER, "NotesUser"), session.getUserName());
return Status.OK_STATUS;
}
};
job.schedule();
try {
job.join();
} catch (InterruptedException e) {
logger.debug("Fehler bei der Notes-Kommunikation");
}
Object ret = job.getProperty(new QualifiedName(QUALIFIED_NAME_QUALIFIER, "NotesUser"));
return (String)ret;
}