Hi,
meiner Ansicht nach ist das eine berechtigte Frage. Aber ein bischen spezifischer hätte es schon sein können. Jetzt wo ich das alles runtergeschrieben habe, ähem, ich hätte besser vorher ein paar Fragen gestellt. Aber ich lösch das jetzt nicht. Versuche einfach weiter zu fragen. Das unten erschlägt, gibt aber Sinn.
{
Diskutiere seit 2 Tagen mit meiner Sun Certified Business Component Beta Certification Lerngruppe aus England, Schottland, Irland, USA, Spanien, Indien, Sri Lanka, Schweiz, Pakistan, Bangladesh, Hong Kong und Rumänien) Feinheiten der EJB2.0 Spezifikation und das erschlägt mich.
}
Ich fasse zusammen:
Du hast irgendwo auf der Intranetseite ein "Java-Programm", in dem du aus einer bestimmten Klasse eine Methode aufruft.
Dieser Methode möchtest du einen Parameter aus dem derzeit mit der Maske geöffneten Notes-Dokument als Parameter übergeben.
Die aufgerufene Methode aus dem Java-Programm soll einen Rückgabewert liefern, den du in ein Feld der Notes-Dokuments schreiben willst. right?
So hier wäre das erste Problem. Du kannst aus Notes-Agenten nicht auf Frontend-Dinge zugreifen (nur Backend). Deshalb musst du vielleicht ein Applet nehmen.
Option a) Mit einem Lotus Corba Applet kannst du offensichtlich Server-Objekte auf dem Domino Server ansprechen (z.B. einen Agenten). Um den Wert aus dem Feld zu bekommen, musst du mit LiveConnect arbeiten (s. Option b).
Option b) Das Applet kannst du dann über LiveConnect mit JavaScript verdrahten. Und mit JavaScript kannst du... das Feld füllen.
Hier bekommst du vermutlich Applet-Sandbox Sicherheitsprobleme, va. wenn das JavaProgramm auf einem anderen Server als der Domino Server liegt. Wenn ich mich nicht täusche, gab es die Möglichkeiten die Sicherheitsrichtlinien der Applet-Sandbox für Intranets liberaler zu gestalten, gab es erst unter Java1.2 (bin mir hier nicht sicher).
Die Probleme hast du nicht, wenn du Option a) wählst und aus dem Applet mit dem Agenten im NotesServer kommuniziert, der seinerseits remote mit der Java-Klasse kommuniziert.
In beiden Fällen hätte das Applet keine funktionale GUI. Nur 1 Pixel gross, oder besser 0 Pixel wenn das geht. Das Applet fungiert als reine Kommunikationskomponente mit den Java-Klassen oder dem Notes-Agenten.
Die Java-Klasse mit der kommuniziert werden soll, liegt in einer Java Virtual Maschine ausserhalb von Lotus-Notes und vermutlich auf einem anderen Rechner. (nicht sicher, s. Fragen unten).
Nun erst einmal eine Frage:
1. Frage:Unter welcher Java-Version läuft dieses "Java-Programm"?
Wenn > 1.18 dann Lösung B, 2. Frage hat sich erübrigt.
2. Frage: Sind die entsprechenden Klassen "standortunabhängig", d.h. können sie einfach z.B. auf den Notesserver kopiert werden (und gleichzeitig da bleiben wo sie sind, kopiert.)?
Wenn ja dann Lösung B.
Ich halte Lösung B für wahrscheinlicher.
Lösung A:
Du öffnest einen Java-Agenten oder Java-Applet(vermutlich besser, da Frontend), klickst auf Edit Project" und bindest die Klassen so ein. Die entsprechende Methode kannst du einfach aus dem Notes-Agenten aufrufen.
Lösung B:
Gut das ist ein Fall von verteiltem Rechnen.
Ich würde erst einmal Java-RMI empfehlen. Weitere theoretische Möglichkeiten sind Webservices (kann man mit LoNo5 Webservices Clients schreiben
) und Corba (zu kompliziert).
Ich habe so etwas schon einmal mit LoNo5 und einer Java-Anwendung die in einer java1.3 VM laufen musste durchgeführt. Allerdings solltest du dich mit jemand zusammentun, der sich ein bischen mit Java auskennt.
Im Prinzip geht es so:
- Du richtest auf dem Rechner mit dem "Java-Programm" eine Java-RMI Umgebung ein.
- Du erzeugst einen stub dieser Methode im Notes-Agenten und im Rechner wo das aufgerufene Java-Programm liegt ein Skeleton.
Der Notes-Agent wird dann zum Client für das Java Programm (entsprechend Server).
All das geht einfach mit einem im Java Standard Development Kit (JSDK) enthaltenen Tool.
WICHTIG: Das aufgerufene Programm kann ruhig in einer Java Virtual Maschine mit wesentlich kultivierteren Versionsnummern läuft als die Notes-VM (1.1.
.
Ich bin damals mit den Informationen aus dem Java-Tutorial von Sun und v.a. dem Handbuch der Java-Programmierung (umsonst runterladbar auf
http://www.javabuch.de , Kapitel 46) ausgekommen. So kanns trivial ist das aber im Zweifel nicht.
Gruss Axel
<out_of_topic>
@Moderatoren: Normal gehört das meiner Ansicht nach in "Java für Anfänger". Ich kann aber hier keine Pull-Umverlagerung machen. Nur Push aus "Java für Anfänger" raus.
</out_of_topic>