Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: ToniTester am 18.08.05 - 00:15:53

Titel: Warum Lotus.Domino.* Java Klassen in Agenten nutzen?
Beitrag von: ToniTester am 18.08.05 - 00:15:53
Mal ne dumme Frage von einem Java Greenhorn...
Bin gerade stolzer Betrachter meines ersten Java "Hello World" Prompts geworden und hab dann gleich mal ein Java Agentchen gebaut, dass so ein paar Dokumente ausliest usw.
Aber ich frage mich...
a) Warum würde ich einen Agenten in Java schreiben, der mir was mit den Domino Klassen macht? Kann ich da etwas mich Java zaubern, was ich nicht mit Lotus Script kann?
b) Wie kann ich ggf. einen Java Code, der die Lotus.Domino.* Klassen nutzt in einer anderen IDE zum Laufen bringen (z.B. Netbeans oder so). Das geht doch wahrscheinlich gar nicht, weil ich keinen Notessession bzw. keinen Agentcontext habe oder? Ich frage wegen Debuggen. Das ist ja im Notes Designer mühsam, in einer anderen IDE aber wahrscheinlich komfortabler.
Grüße  ::)
Toni
Titel: Re: Warum Lotus.Domino.* Java Klassen in Agenten nutzen?
Beitrag von: Thomator am 18.08.05 - 08:18:38
Hallo,

es gibt unter R5 Anwendungsfälle für Agenten, die Du anders nicht vernünftig lösen kannst. Wenn Du zum Beispiel mit einem Agenten, der auf Server A läuft, auf Daten von Server B zugreifen willst, kannst Du das unter R5 nur mit JavaAgenten und Corba. (Abgesehen von der Replizierung der DB zum AppServer)

Auch so bietet Java durch seine Mächtigkeit Möglichkeiten, die Du in LotusScript einfach nicht hast.


Mit der Java-API kannst Du auch von extern auf Notes zugreifen. Um eine Session zu bekommen mußt Du auch nicht den AgentContext haben oder so. Da gibt es die Notesfactory.

Wichtig ist nur, das die Applikation zugriff auf das Notes.jar und die dll's aus dem Domino-Verzeichnis hat.

Das Debuggen von Java-Agenten aus Eclipse macht aber beispielsweise nur dann Sinn, wenn es KEIN WebQuery-Agent ist. Sonst fehlt Dir ja der AgentContext.

Wenn der Agent aber andere Aufgaben erledigen soll, kann man sich eine main-Methode einbauen, dann für das Debuggen die Session aus der Factory holen und in eclipse debuggen.

Thomas
Titel: Re: Warum Lotus.Domino.* Java Klassen in Agenten nutzen?
Beitrag von: flaite am 18.08.05 - 11:14:17
Manche Leute verwenden Java in Notes offenbar erfolgreich, um bestimmte Funktionalitäten zu nutzen, die Java (oder auf Java basierende openSource/kommerzielle Frameworks/Produkte) haben. Ich hab das beispielsweise mal erfolgreich benutzt, um einen auf socketConnections basierenden Webservice-Client auf Notes5 zu schreiben. Das ging eigentlich ganz gut.
Wer jetzt meint, dass man ja in Notes6.5 Webservice Unterstützung hat... Webservice und Webservice ist leider nicht das gleiche. Bin mir nicht sicher, ob ich das Notes-Zeugs nutzen würde, oder von Hand mit Java.
Manche setzen das auch für GUI Zeugs an. Nette Grafiken, Swing GUIs, etc.

Der Nachteil von Java in Notes ist, dass eine Menge Infrastruktur zu berücksichtigen gibt. Keine Zeit das jetzt zu erklären, aber wenn man das nicht richtig macht, gibts z.B. ein Memory-Leak Problem.
Diese Sachen haben natürlich nix mit Java selbst zu tun sondern der Java Implementierung in Notes.

Imho gibts ein Eclipse Plug-in von IBM, mit dem man Java Notes Agenten remote debuggen kann, oder?
Ausserdem ist es aus meiner Sicht theoretisch möglich auch einen WebQuerySave Agenten in Eclipse zwecks Testen nachzubauen. Das sind aber Ableitungen von meinen derzeitigen Überlegungen zu Junit MockObjekten Zeug und möglicherweise falsch und verwirrend.
Es gibt auch Ansätze Notes Agenten zwischen Eclipse und Notes zu replizieren, womit man wenigstens die Programmier-Fähigkeiten von Eclipse (refactoring, Klassenbrowser, 120.000 Möglichkeiten um durch Klassen, Methoden zu navigieren, Syntaxhighlighting und und und hat). Ich muß dazu aber anmerken, dass man so viele Analyse-Möglichkeiten von Eclipse nicht hat. Z.B. Junit-Test Unterstützung und Debugging.

Ich bin aber z.B. selbst begeisterter Java Programmierer und langjähriger Notes Entwickler. Ich kann dir sagen, dass ich in Notes LotusScript präferiere, weil:
- eine Menge gotchas in der Java Implementierung in Notes
- viel vorhandener Code auf LotusScript Basis

Java gehört für mich in sowas wie JBoss oder mit Springframework auf Tomcat. Derzeit nicht in Notes. Seh das als einen gewissen Ausleger der no-intrusion-by-platform-POJO Debatte rund um EJB. Notes verlangt ähnlich wie prä-EJB3.0 EJB-Container einfach zu viel von den Java Klassen, so dass das programmieren nicht mehr effizient ist. Es gibt da aber inzwischen bessere Lösungen, aber leider nicht in Notes.
 
Ausser du hast eine Spezialaufgabe, die sich einfach mit Java in Notes lösen lässt.

Axel
Titel: Re: Warum Lotus.Domino.* Java Klassen in Agenten nutzen?
Beitrag von: Thomator am 18.08.05 - 11:47:32
Hi Axel,

dass es für R6 Plugins für eclipse gibt, mit denen man Java-Agenten remote-Debuggen kann, hab ich bis jetzt nicht gewußt.

Dass es für R7 so was geben soll hab ich aber auch schon gehört. Aber R6????
Hast Du da irgendeine Referenz dazu (Download)?

Thomas

Titel: Re: Warum Lotus.Domino.* Java Klassen in Agenten nutzen?
Beitrag von: flaite am 18.08.05 - 12:21:13
Ich meine hier wurde da mal was zu gepostet. Ich habs allerdings nicht ausprobiert, weil ich persönlich seit einiger Zeit Notes und Java sehr getrennt betreibe. Hab momentan keine Zeit selbst zu suchen.
Titel: Re: Warum Lotus.Domino.* Java Klassen in Agenten nutzen?
Beitrag von: qojote am 18.08.05 - 13:15:38
Hi,

ich hatte das gepostet.
Handelt sich aber nicht um ein Plugin sondern du kannst einfach den Remote debugger von Eclipse benutzen.
Hatte ich aus einem Artikel von IBM

Ich muß mal schauen wo ich den Artikel habe wenn ich ihn finde kann ich den ja nochmal posten

Gruß
Qojote
Titel: Re: Warum Lotus.Domino.* Java Klassen in Agenten nutzen?
Beitrag von: Thomator am 18.08.05 - 15:06:05
Das würde mich wirklich mal interessieren.
Also wenn Du den Artikel mal finden solltest...

Wäre ne interessante Sache

Thomas
Titel: Re: Warum Lotus.Domino.* Java Klassen in Agenten nutzen?
Beitrag von: Mark³ am 25.09.05 - 18:23:26
ich google doch gern für euch  O0

http://www-128.ibm.com/developerworks/lotus/library/notes-eclipse/