AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
07.06.20 - 03:35:33
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino Sonstiges
| |-+  Java und .NET mit Notes/Domino (Moderatoren: Axel, m3)
| | |-+  Java-Programm in Notes integrieren?!
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Java-Programm in Notes integrieren?!  (Gelesen 5300 mal)
Mario
Junior Mitglied
**
Offline Offline

Beiträge: 59


Ich liebe dieses Forum!


« am: 25.06.03 - 14:57:31 »

Hallo,

habe ein Java Programm, dass mit Parameter gestartet, eine Telefonnummer auf der Konsole zurückgibt.
Dieses Programm möchte ich aus Notes (Maske) heraus mit Parameterübergabe starten
und die Ausgabe auf der Konsole umleiten in ein Feld einer Maske.

Da Notes nicht Java kann (?) soll ein Java-Agent gestartet werden.
Der soll mit dem Parameter eines Feldinhaltes gestartet werden und dann wie gesagt das Feld füllen.
Gibt es eine bessere Vorgehensweise?
Gespeichert
klaussal
Gast
« Antworten #1 am: 25.06.03 - 15:13:43 »

Da Notes nicht Java kann (?) soll ein Java-Agent gestartet werden.

dann nimm doch kein lotus-script, weil notes script kann. Grin
Gespeichert
Mario
Junior Mitglied
**
Offline Offline

Beiträge: 59


Ich liebe dieses Forum!


« Antworten #2 am: 25.06.03 - 15:41:29 »

Ich weiss es nicht besser, darum habe ich ja bei euch Profis im Board gefragt!

Im Designer kann man zumindest nur JavaScript ausführen.
Doch bei den Agenten scheint es möglich zu sein Java zu nutzen.
Möchte doch nur eine qualifizierte Antwort auf meine Frage haben...
Gespeichert
klaussal
Gast
« Antworten #3 am: 25.06.03 - 15:43:44 »

ok ok,
also, was soll genau passieren ? ein paar mehr details wären hilfreich.
Gespeichert
Mario
Junior Mitglied
**
Offline Offline

Beiträge: 59


Ich liebe dieses Forum!


« Antworten #4 am: 25.06.03 - 15:48:31 »

Ich möchte nochmal eine Bestätigung bzw. Verschläge ob mein beschriebenes Vorgehen überhaupt möglich ist.

Dann möchte ich wissen wie ich aus dem Java Agenten auf ein Feld einer Maske in Notes lesend und schreibend zugreifennn kann.
Gespeichert
klaussal
Gast
« Antworten #5 am: 25.06.03 - 15:52:51 »

... 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.
Gespeichert
Mario
Junior Mitglied
**
Offline Offline

Beiträge: 59


Ich liebe dieses Forum!


« Antworten #6 am: 25.06.03 - 16:05:05 »

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.
Gespeichert
klaussal
Gast
« Antworten #7 am: 25.06.03 - 16:10:06 »

... 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.
Gespeichert
Axel_Janssen
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 769



« Antworten #8 am: 25.06.03 - 16:44:04 »

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.   Shocked  Huh Shocked
}

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  Huh ) 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.Cool.

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>
« Letzte Änderung: 25.06.03 - 18:19:38 von Axel_Janssen » Gespeichert

... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown
klaussal
Gast
« Antworten #9 am: 25.06.03 - 22:16:00 »

@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  Grin
Gespeichert
Axel_Janssen
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 769



« Antworten #10 am: 25.06.03 - 22:39:54 »

@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  Grin

Hallo Klaussal,

wenn du einen besseren Vorschlag hast, poste ihn bitte.  Smiley

Wie ich gesagt habe: Man braucht RMI nur dann, wenn das Programm, mit dem kommuniziert wird, nicht direkt in ein Notes-Java-Applet integriert werden kann (Agents scheiden aus , da sie nicht ins Frontend eingreifen können).
Ich musste einmal eine fancy Knowledge-Management Anwendung über RMI integrieren, aus dem einfachen Grund, da das nur in Java1.2 lief. Das lief aber dann gut.

Letztlich ist es nicht so kompliziert wie es sich anhört. Man muss einfach anfangen. Der Trick ist, das man da viele Dinge nutzt, die schon da ist (RMI-stubs und skelletons werden automatisch generiert, die Corba-calls sind für den Entwickler transparent, dh er merkt gar nicht das das über Corba läuft und nicht über normale Notes-Objekte).
Es besteht aus vielen kleinen modularen Teilen.
In Java neigt man stärkstens zum Layering von Anwendungsschichten. Die in den Schichten verwendeten Komponenten/Technologien bekommen dann immer Akronyme aus 3-4 Buchstaben. Deshalb hört sich das manchmal ein bischen chinesisch an. Das ist aber ein grundsätztliches Konzept und meiner Meinung nach gut so. Z.b. gilt es als völlig unhip einfach mit JDBC zu arbeiten, sondern man macht das über einen Persistence-Layer (EJB, Hibernate, JDO oder zumindest ein JDBC-framework). Der Vorteil ist, dass man dann etwas benutzt, was schon da ist und gut getestet ist. Dann muss man selbst weniger code schreiben. Der muss nämlich getestet werden, vom Nachfolger verstanden werden, etc.

Ich kenne Notes-Masken mit Tonnen-PassThru HTML, seitenlangen Formelsprachengeraffel, die ich für wesentlich komplizierter halte.
Aber das ist vielleicht Geschmacksache. Vielleicht code ich das mal durch. Schätze das ich so etwa 5 Stunden mit testen und viel Kaffee-Pausen brauchen würde.   Wink

Ein Problem bei der Sache hier ist, dass wenn man über 2 Remote-Aufrufe geht (Corba-Applet ruft Agent auf. Agent ruft Java-Klasse auf), dann könnte es Probleme mit der Performance geben. Bei meiner RMI-Lösung lief der call im backend ab und ich brauchte das Corba-Applet nicht. Da waren meine Sorgen wegen Performance von RMI völlig unbegründet. Das lief schnell.



Gruss Axel
« Letzte Änderung: 25.06.03 - 23:05:04 von Axel_Janssen » Gespeichert

... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown
Ralf_M_Petter
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1879


Jeder ist seines eigenen Glückes Schmied


WWW
« Antworten #11 am: 26.06.03 - 10:53:12 »

Ich glaube das hier etwas über das Ziel hinausgeschossen wird und die Frage hat auch gar nichts mit Java zu tun. Die Frage war eher kann ich aus Notes ein Comandline Tool aufrufen und kann ich die Ausgabe in ein Feld speichern.  Mario schreibt ja er will ein bestehendes Java Programm aufrufen, dass offensichtlich auf die Standardausgabe System.out (vermute ich mal) ein Ergebnis schreibt.  Eventuell ist nicht mal der Sourcecode für das Javaprogramm vorhanden kann also unter Umständen auch nicht so umgeschrieben werden, dass das Ergebnis über eine Methode abgefragt wird. Wenn das nämlich nicht geht, wird es mit RMI nicht funktionieren.

Also Mario gib uns mehr Informationen, dann können wir dir sicher auf die eine oder andere Art helfen.
Gespeichert

Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.
Axel_Janssen
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 769



« Antworten #12 am: 26.06.03 - 13:50:17 »

O.k. das war wohl mehr Kinderschreck denn Moderator. Werde mich da in Zukunft zurückhalten.

Wobei @Ralf:
<highly_theoretical_stuff_nobody_really_needs_that>
Ich kann doch einen Wrapper bauen, der über reflection die entsprechende main-Methode aufruft. Wenn mich nicht alles täuscht.  
</highly_theoretical_stuff_nobody_really_needs_that>

Um meine oben genannten Ideen zu testen mache ich jetzt einen neuen Thread auf "Extreme Remoting mit Domino 5.08 und Java".

Gruss Axel
Gespeichert

... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown
Ralf_M_Petter
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1879


Jeder ist seines eigenen Glückes Schmied


WWW
« Antworten #13 am: 26.06.03 - 15:33:35 »

Hallo Axel!

Ich wollte dich damit nicht kritisieren und der Thread über RMI gefällt mir sehr gut.

Mach weiter so.
Gespeichert

Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.
Axel_Janssen
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 769



« Antworten #14 am: 26.06.03 - 16:23:19 »

Hallo Axel!

Ich wollte dich damit nicht kritisieren und der Thread über RMI gefällt mir sehr gut.


mir auch.
ich hab mich auch nicht kritisiert gefühlt.
Nur will ich schon ein bischen mehr auf den Wissensstand des Fragers achten.
RMI-Umgebungen aufbauen, kann dann in eigene Threads ausgelagert werden.
Wie z.B. dein Speichermanagement.

Da bekomme ich nämlich Bedenken, dass wenn jemand wirklich Java lernen will, dass er dann abgeschreckt wird, weil er Antworten bekommt, die in völlig überfordern.

Es ist manchmal schwierig die Mitte zu finden.


gruss Axel
Gespeichert

... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: