Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: magic_halli am 16.12.08 - 08:22:24

Titel: Java mit Corba-Zugriff
Beitrag von: magic_halli am 16.12.08 - 08:22:24
Hi,

ich habe ein "ganz normales" Javaprogramm (keinen Agent). Hieraus möchte ich ein Item an ein Notes-Maildokumente anhängen und füllen.
Dazu müsste ich dann wohl mittels CORBA eine Session zu Notes aufbauen und das Dokument manipulieren?!
Außerdem muß der DIIOP-Task auf dem Server laufen und ich benötige das NSCO.jar?!

1. Ich finde das NSCO.jar File nicht - wo liegt das für gewöhnlich? --> EDIT: 1. ist geklärt.
2. Muß das NSCO.jar in den Path oder Classpath rein?
3. Wie starte ich den DIIOP-Task - habe in der Hilfe nichts passendes gefunden!?

Danke und Gruß

PS: Dieser Weg, aus Java per CORBA auf Notes zugreifen, gefällt mir jedoch nicht sonderlich, da ich gelesen habe, das dies relativ inperformant sein soll?!
Titel: Re: Java mit Corba-Zugriff
Beitrag von: Ralf_M_Petter am 16.12.08 - 08:43:27
zu 2. in den Classpath.
zu 3. Load DIIOP

DIIOP ist laut meinen Tests ca. 2-3 mal langsamer als Zugriff über NRPC und deshalb verwende ich es nicht. Für kleine Sachen würde ich aber sowieso den Umweg über Webservices gehen. Also auf dem Dominoserver ein eigenes kleines API mit der Webserviceproviderfunktion coden und auf dem Clientprogramm dann den Webserviceconsumer programmieren. Das sollte am stabilsten und robustesten funktionieren.

Grüße

Ralf
Titel: Re: Java mit Corba-Zugriff
Beitrag von: magic_halli am 16.12.08 - 08:49:58
Danke... ich überdenke mir, glaub ich, nochmal den Ansatz über Corba.  ;)

Gruß
Titel: Re: Java mit Corba-Zugriff
Beitrag von: magic_halli am 16.12.08 - 09:24:01
Mh, ich glaube leider, irgendwie scheine ich um CORBA nicht herum zu kommen?!

Szenario:
Per Button wird in Notes ein LS-Agent gestartet. Dieser ermittelt bestimmte Dokumente-Values und ruft eine Java-Bibliothek auf (kein Java-Agent!; eigenständiges Java-Programm). An das Java-Programm werden außerdem noch beim Aufruf, mittels LS2J, die vorher ermittelten Dokument-Values übergeben.
Nun führt mein Java-Programm seine Operationen aus und ich erhalte u.a. eine "PostNr" während der Abarbeitung.
Diese "PostNr" will ich nun wieder an das Notes-Dokument als neues Item anhängen, von welchem ich ursprünglich per Buttonklick die Abarbeitungskette (Button-->LS-Agent-->LS2J-->Aufruf Java-Programm) gestartet habe!

Ich sehe irgendwie keine andere Möglichkeit, als über Corba meine "PostNr" (im Java-Programm berechnet) an das Dokument zurückzuspeichern!?!?   :-:

Oder würdet ihr für mein Szenario einen anderen/performanteren Weg einschlagen?

Danke.


PS: Ich habe schon überlegt/versucht, im LS-Agent der mein JavaProgramm startet, nach dem Aufruf des Java-Programms eine Getter-Methode (getPostNr()) aus dem Java-Programm separat nochmal aufzurufen. Dort müsste mir eigentlich die PostNr ausgelesen werden. Doch der LS-Agent arbeitet ja seinen Code nach dem Aufruf des Java-Programms stur weiter ab (verständlicherweise). Somit läuft mein Java-Programm noch und berechnet mir ja erst die PostNr, währen der LS-Agent bereits die getPostNr()-Methode abruft und dort natürlich null erhält. Also fällt dieser Weg schonmal aus?!  :(
Titel: Re: Java mit Corba-Zugriff
Beitrag von: Ralf_M_Petter am 16.12.08 - 10:11:14
Irgendetwas stimmt hier nicht Wie kannst du an ein externes Programm mit LS2j Daten übergeben. Das ist meiner Meinung nach nicht möglich. LS2j kann nur von ihm selbst instantierte Objekte verwenden die dann nicht in einer externen JVM sondern in der Notes JVM laufen. Aber soweit ich weiß verwendest du doch Notes 8. Also warum das ganze nicht mit Notes 8 Technologien lösen. Da geht das alles doch wesentlich eleganter.

Grüße

Ralf
Titel: Re: Java mit Corba-Zugriff
Beitrag von: magic_halli am 16.12.08 - 10:18:41
Zitat
Irgendetwas stimmt hier nicht Wie kannst du an ein externes Programm mit LS2j Daten übergeben. Das ist meiner Meinung nach nicht möglich. LS2j kann nur von ihm selbst instantierte Objekte verwenden die dann nicht in einer externen JVM sondern in der Notes JVM laufen.
Äh, ich habe mich vielleicht undeutlich ausgedrückt?!
Das Java-Programm ist zwar in Eclipse entwickelt... wird dann aber als JAR gepackt und in eine Java-Bibliothek (unter Gemeinsamer Code/Scriptbibliotheken) verpackt. Diese kann ich dann auf dem Notes-Weg mittels eines LS-Agents und Datenübergabe per LS2J ausführen. Somit läuft das alles auch in der Notes JVM.
So hatte ich das gemeint - das klappt auch wunderbar. 
Titel: Re: Java mit Corba-Zugriff
Beitrag von: Ralf_M_Petter am 16.12.08 - 10:26:22
Wenn du dann aber mit ls2j eine Methode aufrufst, die nicht einen eigenen Thread gerneriert, dann wartet der LS agent bis die Methode fertig ist. Folglich kannst du die Werte dann auch mit Get auslesen. Dafür brauchst du kein Corba. Laut Auskunft von Lotus Support vor ein paar jahren soll und darf man keine Notes klassen in Java Klassen die über LS2j aufgerufen werden verwenden.

Grüße

Ralf
Titel: Re: Java mit Corba-Zugriff
Beitrag von: magic_halli am 16.12.08 - 10:36:38
Wenn du dann aber mit ls2j eine Methode aufrufst, die nicht einen eigenen Thread gerneriert, dann wartet der LS agent bis die Methode fertig ist. Folglich kannst du die Werte dann auch mit Get auslesen. Dafür brauchst du kein Corba. Laut Auskunft von Lotus Support vor ein paar jahren soll und darf man keine Notes klassen in Java Klassen die über LS2j aufgerufen werden verwenden.
Ok...
1. Ich rufe einen Konstruktor mit LS2J auf - dieser generiert keinen eigenen Thread! Überhaupt wird keine eigener Thread generiert! Also das ist dann somit schonmal korrekt und erledigt.
2. Von der Verwendung von Corba bzw. Notes-Klassen in meinem Java bin ich (zum Glück) wieder abgekommen.
3. Irgendwie lieferte mir die Get-Methode im anschließenden Aufruf aus dem LS-Agent nichts zurück.
Ich baue noch fix ne Kleinigkeit um und versuche es nachher nochmal. Hab vielleicht was falsch gemacht?!
Ich geb nochmal ein Feedback...

Danke für die Auskünfte... haben meinen Weg eigentlich bestätigt.  :D

Gruß Rico.