Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: stephan89 am 29.10.08 - 09:24:38

Titel: Java Library nutzen
Beitrag von: stephan89 am 29.10.08 - 09:24:38
Halllo,
Ich habe bisher nur (und das sehr wenig) Forms mit Lotusscript benutzt und muss nun in Notes 8 den Code einer Java Library verwenden. Welches ist die einfachste Möglichkeit, Daten aus einer Java Bibliothek im frontend darzustellen? Lotusscript Bibliotheken hatte ich bisher einfach Forms und da Buttons, Input- und Messageboxes verwendet, um Daten darzustellen. Gibt es eine vergleichbar einfache Methode für Java Bibliotheken? Kennt ihr dafür ein gutes, kompaktes Tutorial?
Titel: Re: Java Library nutzen
Beitrag von: jBubbleBoy am 29.10.08 - 10:17:33
Geh mal in die Noteshilfe (Designer) und schau Dir LS2J an.
Wenn es geht sollte man das aber vermeiden. Man kann auch einen Java-Agenten schreiben und diesen, z.B. via LS-Agenten aufrufen.
Titel: Re: Java Library nutzen
Beitrag von: stephan89 am 29.10.08 - 11:14:59
Danke schonmal für den Tipp!
Kann ich, wenn ich einen Java Agent aus einem LS Agent heraus aufrufe auf einzelne Variablen zugreifen? Zum beispiel wird im Java Agent eine Variable ermittelt, die ich dann gerne über den LS Agent ausgeben würde.

Um den Java Agent im LS Agent zu nutzen habe ich mir jetzt mal diesen Code rausgesucht:   
Dim agent As NotesAgent
   Set agent = dbCurrent.GetAgent("JavaAgent")
   If agent Is Nothing Then
' error message
   End If
   Call agent.Run(doc.NoteID)

Direkt Variablen auszulesen mit Set lsString = agent.stringName scheint leider schonmal nicht zu funktionieren.
Titel: Re: Java Library nutzen
Beitrag von: Hrtgpdh am 29.10.08 - 11:18:26
Ansonsten gibt es auch noch in den IBM- Redbooks das Domino Designer 6: A Developer’s Handbook, da steht die Verwendung von LS2J auch gut beschrieben drin.
Titel: Re: Java Library nutzen
Beitrag von: jBubbleBoy am 29.10.08 - 11:30:31
LS2J ist nicht stabil und hat eine schlechte Speicherverwaltung, deshalb nicht zu empfehlen.
Um Daten (Info's) "hin und her zu schieben" kann man die notes.ini nutzen oder auch ein Profildokument.
Was soll den der JavaCode tun?
Titel: Re: Java Library nutzen
Beitrag von: stephan89 am 29.10.08 - 11:46:35
Der Java Code ruft über eine Java Library einen Web Service auf. Dann habe ich die Rückgabeparameter des Web Services im Java Agent kann sie da bisher aber nicht verarbeiten.
Titel: Re: Java Library nutzen
Beitrag von: Ralf_M_Petter am 29.10.08 - 11:52:54
Wenn du einen Webservice hast und brauchst die Daten in Lotusscript, dann soltest du den Webservice über Lotusscript ansprechen. Das ist 100mal besser als irgendwelche Stunts um von Lotus script eine javalibrary zu benutzen. Vor allem wenn man nichts von Java versteht. Übrigens ist es Schade dass niemand die LS2J Bridge benutzt. Aufgrund der seltenen Verwendung und der wenigen Supportfälle wird sie nicht mehr weiterentwickelt, obwohl es ein sehr interessanter Ansatz war.

Grüße

Ralf
Titel: Re: Java Library nutzen
Beitrag von: stephan89 am 29.10.08 - 11:59:23
Der Webservice lässt sich leider nicht in eine Lotusscript Library importieren, da Operations- und Variablennamen 40 Zeichen überschreiten und dann automatisch beim WSDL import ageschnitten werden. Daraus resultieren dann Dublettenfehler. Auch bei händischer Änderung der Konfliktnamen in der LS Library lässt sich die Datei ohne Angabe von Gründen nicht speichern.
Titel: Re: Java Library nutzen
Beitrag von: jBubbleBoy am 29.10.08 - 12:04:38
über 40 Zeichen? WOW, Da war aber jemand sehr kreativ ;)
Titel: Re: Java Library nutzen
Beitrag von: jBubbleBoy am 29.10.08 - 12:06:32
Was ist denn der Rückgabewert? Was soll damit gemacht werden?
Titel: Re: Java Library nutzen
Beitrag von: stephan89 am 29.10.08 - 13:04:24
Ja dank der SAP Governance sind deren Webservicenamen nicht gerade kurz. ;)
Rückgabewerte können im Prinzip alles mögliche Sein, im Moment teste ich aber den einfachsten fall und bekomme nur ein Array mit ein paar Strings zurück die ich dann ausgeben möchte.

Im Realeinsatz später sollen dann verschiedene Daten aus verschiedenen Webservices abgerufen und in einer Composite App oder ähnlichem zusammengeführt werden.
Titel: Re: Java Library nutzen
Beitrag von: m3 am 29.10.08 - 13:25:49
Der Webservice lässt sich leider nicht in eine Lotusscript Library importieren, da Operations- und Variablennamen 40 Zeichen überschreiten und dann automatisch beim WSDL import ageschnitten werden. Daraus resultieren dann Dublettenfehler. Auch bei händischer Änderung der Konfliktnamen in der LS Library lässt sich die Datei ohne Angabe von Gründen nicht speichern.
Damit ich das richtig verstehe. Wenn Du versuchst im Domino Designer bei den Webservices das WSDL-File zu importieren, schneidet er die Variablennamen einfach ab????
Hast Du diesbezüglich schon einen PMR aufgemacht, wenn dem so ist?

Ev. kommst Du ja mit Stubby (http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/Stubby) weiter.
Titel: Re: Java Library nutzen
Beitrag von: stephan89 am 29.10.08 - 13:34:08
Ja die Variablennamen werden abgeschnitten.
Gibt auch schon zwei-drei Beiträge dazu in den developerworks Foren, z.B.:
http://www-10.lotus.com/ldd/nd8forum.nsf/5f27803bba85d8e285256bf10054620d/8bc85d2de7beb0c5852573fc004eb6b0?OpenDocument

http://www-10.lotus.com/ldd/nd8forum.nsf/5f27803bba85d8e285256bf10054620d/2c5da7053e8f7d3d852574d6003efe9a
Titel: Re: Java Library nutzen
Beitrag von: m3 am 29.10.08 - 13:39:25
Trotzdem PMR aufmachen, sonst wird das nie gefixed.
Titel: Re: Java Library nutzen
Beitrag von: flaite am 29.10.08 - 15:43:56
Kannst du nicht den ganzen Agenten in Java schreiben.
Wenn das nicht geht, weil du UI-Klassen verwendest, ist LS2J unproblematisch. Zum Problem wird LS2J wenns von einem scheduled Agenten oder getriggerten Agenten verwendet wird. Wenns aus dem Client (Button, etc) getriggerte iwrd, hat man damit keine Schwierigkeiten, nach meinen Erfahrungen. Du merkst den Memory Leak einfach nicht, weil der gesamte Kontext nach dem Lauf eh freigegeben wird. Nimm einfach LS2J.