Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: buzi am 25.11.15 - 12:27:59



Titel: Java Agent starten
Beitrag von: buzi am 25.11.15 - 12:27:59
Hallo zusammen,

ich versuche einen bestehenden Java Agenten im Domino Designer für eine neue Datenbank anzupassen. Habe schon viel mit Agenten in Lotus Script gearbeitet und bin ziemlich fit in Java - aber die Verknüpfung von Lotus und Java ist für mich was neues.

Probleme, die ich habe:
- Wie kann man einen Java Agent debuggen (meine Recherchen ergaben nichts nützliches)?
- Wo landen die System.out.println-Anweisungen (würde fürs Erste auch helfen beim debuggen)?
- Ich habe eine Zeile JoptionPane.showMessageDialog()... eingebaut, aber die kommt auch nicht an...

Um erst mal zu verstehen, wie das bei Java Agenten abläuft, habe ich ein HelloWorld-Beispiel versucht. Wenn ich diesen kompilieren will bekomme ich folgenden Fehler:

error: package lotus.notes does not exist

Habe der PATH-Variablen bereits folgendes hinzugefügt:
C:\Program Files (x86)\IBM\Lotus\Notes\jvm\lib\ext\Notes.jar;

Code:
import lotus.notes.*;

public class JavaAgent extends lotus.notes.AgentBase
{
public void NotesMain()
{
try
{
Session s = this.getSession();
AgentContext ctx = s.getAgentContext();
Name n = s.createName(ctx.getEffectiveUserName());
String st = n.getCommon();
System.out.println("Hello " + st + "!");
}
catch (Exception e)
{ e.printStackTrace(); }
}
}

Aufruf:

javac JavaAgent. java


Titel: Re: Java Agent starten
Beitrag von: umi am 25.11.15 - 13:15:05
Moin

- System.out's landen in der Java Debug Console . Tools -> Show Java Debug Console falls der Agent im Client gestartet wird.

von Wo ist denn das Sample und Wo versucht du das zu starten?
Notes Java Agenten sollten eigentlich innerhalb der NSF sein und vom Notes Client aus gestartet werden. Bzw. wenn Du da einen neuen Java Agent machst
erhälst Du schon das Grundgerüst. (import lotus.domino.*) Dann brauchts auch keine PATH geschichten.


Titel: Re: Java Agent starten
Beitrag von: buzi am 02.12.15 - 10:36:39
Danke Umi,

späte Reaktion weil Kinder krank = Arbeitspause...

So back to work!

Also, die Fehlermeldung kam weil ich in meiner Verzweiflung versucht habe, den Code in Eclipse zum Laufen zu bringen. Jetzt wo ich weiß wo die Consolen-Ausgaben zu finden sind, werde ich natürlich brav im Notes-Designer bleiben.

Also, Agent ist jetzt im Designer, Aufruf über eine Aktion. Der Hello-Agent läuft! Danke.

Trotzdem bleibt die Frage, wie kann ich odentlich debuggen? Also ohne Messageboxen oder System-out's? Wie kann ich den Eclipse-Debugger denn verknüpfen? Geht das gut? Bei IBM steht "Vorsicht Java debugging is insecure and degrades performance. Disable Java debugging when it is not needed." ... klingt nicht gerade nach Freude!?!


Titel: Re: Java Agent starten
Beitrag von: buzi am 02.12.15 - 12:03:51
Noch eine Frage zur korrekten Initialisierung einer Datenbank.
Der Aufruf

Code:
        Session session = getSession();
         String server = session.getCurrentDatabase().getServer();
         Database sourceDatabaseAD = session.getDatabase(server, "\\Version4\\datenbankname.nsf");
         DocumentCollection selectedDocuments = sourceDatabaseAD.getAllDocuments();

Führt in Zeile 4 zu Fehler:
NotesException: Database CN=xxx/O=ee/C=de!!\Version4\datenbankname.nsf has not been opened yet

Wo kommen die !! im Namen her?


Titel: Re: Java Agent starten
Beitrag von: Tode am 02.12.15 - 13:39:20
Erstmal: Server!!Datenbank ist die normale Schreibweise, wenn man beide zusammen speichert / verwendet. Das ist Standard Notes.

Aber wie kommst Du auf die Idee, den Pfad als "\\Version4\\datenbankname.nsf" anzugeben? Das ist NICHT Formelsprache, und das erste Zeichen muss eigentlich NIE ein Backslash sein:

Code:
Database sourceDatabaseAD = session.getDatabase(server, "Version4\datenbankname.nsf");
sollte wunderbar funktionieren.


Titel: Re: Java Agent starten
Beitrag von: Sven Hasselbach am 02.12.15 - 13:56:08
Aber wie kommst Du auf die Idee, den Pfad als "\\Version4\\datenbankname.nsf" anzugeben? Das ist NICHT Formelsprache,
Code:
Database sourceDatabaseAD = session.getDatabase(server, "Version4\datenbankname.nsf");
sollte wunderbar funktionieren.
In Java muss ein Backslash escaped werden.

EDIT:
@buzi:
Mach doch mal ein
Code:
sourceDatabaseAD.open()

Zum Thema debuggen / entwickeln in Notes:
Du kannst im Designer entwickeln, was extrem grausam ist. Oder du nutzt Eclipse mit EclipseAgentBase (http://lekkimworld.com/mView.action?entry=1150372943179).


Titel: Re: Java Agent starten
Beitrag von: buzi am 02.12.15 - 20:07:24
Danke für die Hinweise! Mit open habe ich es auch schon versucht, da lief ich dann in den Fehler "Database open failed".... Kann es an Sicherheits-Einstellungen der gewählten Datenbank liegen?


Titel: Re: Java Agent starten
Beitrag von: umi am 03.12.15 - 10:22:08
Moin

hat den dein User die rechte die DB zu öffnen?


Titel: Re: Java Agent starten
Beitrag von: Ralf_M_Petter am 14.12.15 - 13:26:35
Leider den Thread erst jetzt gesehen. Das debuggen von Java Agenten ist eigentlich ziemlich easy. Man kann es im Designer unter Werkzeuge Vorgaben für Java Debugger für den jeweiligen Kontext aktiveren und dann kann man sich nachdem der Agent gestartet wird. mit dem Eclipse Remote Debugger verbinden. ist natürlich auch aus dem Designer möglich aber bei manchen Sachen etwas unpraktisch.

Für Details siehe http://www.bizzybee.be/2013/01/11/debugging-java-code-in-domino-designer-8-5-or-9/


Titel: Re: Java Agent starten
Beitrag von: buzi am 13.01.16 - 12:03:30
Hey Ralf_M_Petter,

melde mich spät zurück aus der Weihnachtsferienpause und arbeite die liegen gebliebenen Dinge ab. Danke für den Link "Debugging Java code in Domino Designer 8.5 or 9". Es funktioniert einwandfrei wie beschrieben und hilft mir sehr weiter!

An die Admins hier: Wäre das nicht eine Beschreibung für die Rubrik "Java und .NET mit Notes/Domino" oder so?


Titel: Re: Java Agent starten
Beitrag von: Fabi94 am 26.02.16 - 08:05:12
Ist dein problem jetzt gelöst? :D