Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

aktuellen Benutzernamen auslesen

<< < (2/2)

Sebastianh:
Habe es jetzt so gelöst, dass im Notesclient ein Agent läuft, der über den AgentContext den Benutzer ausliest, diesen dann via RMI an meine Java Anwendung gibt, die dann wiederrum vom PlugIn via RMI aufgerufen wird, und so den Benutzernamen an dieses durchreicht. Ist zwar von hinten durch die Brust mit der Faust ins Auge, aber es funktioniert. Jetzt wäre es noch ganz praktisch, wenn ich den Agenten aus meinem externen Javaprogramm aufrufen könnte. Ich meine das schonmal irgendwo gesehen zu haben, finde es allerdings nicht mehr wieder. Weiss hier jemand Rat?

flaite:
Ist deine externe Java-Anwendung auf jedem Client deployed?
Sofern die User-Id im PATH des OS des Client steht, der Notes Client geöffnet ist und eine Sicherheitseinstellung entsprechend gesetzt ist, käme keine weitere Passwort-Abfrage, wenn dieser Agent aufgerufen wird.
Ist deine Java Anwendung nicht auf dem Client hast du Probleme, den Agenten mit dem NotesBenutzer starten zu lassen.
Hoffe das ist einigermassen nachvollziehbar. Hab wenig Zeit.

Sebastianh:
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:

--- Code: ---LittleAgent la = new LittleAgent();
la.run() // oder auch alternativ: la.runNotes();

--- Ende Code ---
bekomme ich über beide run-Methoden nur einen NullPointer zurück:

--- Code: ---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)
        ...

--- Ende Code ---
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!

--- Code: ---Session session = getSession();
AgentContext agentContext = session.getAgentContext();

--- Ende Code ---
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!)

Sebastianh:
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:

--- Code: --- 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;
}

--- Ende Code ---

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln