Uns stellte sich schon das ein oder andere Mal die Frage, ob es möglich sei, die Programmlogik für XPages und Legacy Anwendungen gemeinsam zu pflegen und zu nutzen. Hierzu drängte sich uns direkt LS2J von IBM auf, ein Framework, das es ermöglicht, aus LotusScript heraus direkt Java-Klassen zu benutzen.

Hier bekommt ihr einen kurzen Überblick zu LS2J: http://www-01.ibm.com/support/knowledgecenter/SSVRGU_9.0.1/com.ibm.designer.domino.main.doc/LSAZ_LS2J_CONNECTING_WITH_JAVA.html

 

Grundsätzlich ist es recht einfach zu benutzen: Als erstes legt man sich eine Java-Klasse an z.B.:

public class myTestClass {

  public void doSomething() {

   System.out.println("Hallo Welt");

  }

 }

 

Als nächstes legt man sich ein wenig LotusScript Code an

Option Declare

 UseLSX "*javacon"

 Use "TestJavaLib"

Sub useJavaClass

      Dim js As New JavaSession

      Dim myClass As JavaClass

      Dim myObject As JavaObject

      Set myClass = js.GetClass("myTestClass")

      Set myObject = myClass.CreateObject

      Call myObject.doSomething()

End Sub

 

Nun fügt man den LotusScript-Teil z.B. in einen Button auf einer Form ein:

  

 

Durch das Benutzen des Buttons erhält man nun in der Java-Konsole folgende Ausgabe:

 

Wer ein weiterführendes Beispiel benötigt, wird hier fündig: http://notes.helsinki.fi/help/help8_designer.nsf/f4b82fbb75e942a6852566ac0037f284/236f3b6a4a38a1028525731b0049a6f0?OpenDocument

 

Leider ist es nur möglich, primitive Datentypen wie int, double, String, usw. zu übergeben - keine Objekte. Und das bringt uns leider zu unserem ersten Problem:

„Wie bekommen wir es hin, ein Notesdokument an eine Java Klasse zu übergeben?“

Jetzt wird jeder sagen „Ganz einfach: Übergib doch die Note ID und hol dir das Dokument aus der Datenbank“. Den Gedankengang hatten wir auch, leider hat sich hieraus ein neues, viel schwerwiegenderes Problem ergeben:

Versucht man, über die bekannten Wege an eine Session zu kommen, wird man kläglich scheitern.

 

Hier mal die Wege, die wir getestet haben:

Versuch 1:

  public class GetSessionV1 {

      public GetSessionV1() {

            NotesThread.sinitThread();

            Session session = NotesFactory.createSession();

      }

}

Resultat: "NotesException: Cannot create a session from an agent"

 

Versuch 2:

  public class GetSessionV2 extends AgentBase{

      public GetSessionV2() {

            Session s= getSession();

     }

}

Resultat: "Session ist null"

 

Den Weg über die DominoUtils haben wir außen vor gelassen, da wir ja nicht auf einer XPage unterwegs sind. Da wir also bis jetzt leider keine Möglichkeit gefunden haben, aus Java heraus das Lotus Notes Backend anzusprechen, ist unsere Idee erstmal auf Eis gelegt. Schade eigentlich.

Vielleicht habt ihr ja eine Idee zu dem Thema?

 

 

Neues vom ITWU-Blog

ITWU-Projektvorstellung: Digitale Werkszeugnisse automatisch erzeugen, standardisiert und transparent - so geht smarte Qualitätssicherung! - Weiterlesen
DOMI im Verse-Kalender 3.2.1 und unsere Roadmap in Sachen Teams@Notes und MS O365-Integrationen - Weiterlesen
ITWU-Projektvorstellung: Ohne Papierkram auf Montage – ITWU zeigt euch das perfekte Tool für euren Montagearbeitsbericht, digital und doch offline-fähig!  - Weiterlesen
Der Grid-Konfigurator – Teil 2 – Wie ihr in ISIE eine Datenbank hinterlegt und eine neue Grid-Konfiguration erstellt - Weiterlesen
LotusScript-Fehler beim Hochladen aus HCL Notes ins Office 365 - Weiterlesen
Verbesserung der Benutzererfahrung auf dem Smartphone mit Nomad - Weiterlesen
ITWU verabschiedet sich am Freitag, den 22.12.2023 in die Winterpause - Weiterlesen
 zum Archiv