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

Neues Video zum digitalen Montagearbeitsbericht – immer alle Infos dabei, mobil und offline! - Weiterlesen
Unser zweiter Teamtag bei den OWL-Games - Weiterlesen
Gültige E-Rechnungen individuell und datensicher on-Premises erstellen - Weiterlesen
KI-Antworten und ihre Tücken – Von der Bedeutung des kritischen Hinterfragens souverän vorgetragener Antworten - Weiterlesen
Sicher und souverän unterwegs: BSI-Zertifizierung „IT-Grundschutz“ mit HCL Domino möglich! - Weiterlesen
Azubi-Insights bei ITWU: Robin im Gespräch - Weiterlesen
Die Montage im Blick: So einfach verplant ihr Ressourcen für eure Aufträge - Weiterlesen
 zum Archiv