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

Java-Programm in Notes integrieren?!

<< < (2/3) > >>

klaussal:
... ich hab dein vorgehen (ehrlich gesagt) nicht ganz verstanden. wenn ich innerhalb einer maske den feldinhalt von feld a nach feld b verschieben möchte, dann brauche ich keinen agenten, etc.

Mario:
Es geht darum, dass ich eine Imformation, die ich mit einem Java-Agenten aus einem externen Verzeichnis (Intranetseite) abrufe in ein Feld in Notes bekommen will.
Ich kann diese Information nur mit dem Java Programm abrufen.
Und ich will sie eben ins Notes Dokument haben.

klaussal:
... also:
1) dokument lokalisieren (über eine ansicht, universalid ,etc) , den neuen wert einsetzen und doc wieder speichern.

wenn du allerdings keine ahnung oder keine literatur über java+notes hast, weiss ich nicht, ob es sinn macht, diese lösung zu nehmen.
du könntest ja auch den wert in die notes.ini schreiben und dann von da aus per formel oder script den wert auslesen und weiter verarbeiten.

Axel_Janssen:
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.   :o  ??? :o
}

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.8).

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>

klaussal:
@axel,

obwohl ich nur ein rudimentäres grundwissen von java besitze, wird da nicht mit kanonen auf spatzen geschossen ? oder hört sich die sache komplzierter an, als sie ist ? ich hätte jetzt bereits den löffel aus der hand gelegt  ;D

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln