Das Notes Forum

Domino 9 und frühere Versionen => ND6: Administration & Userprobleme => Thema gestartet von: Thomator am 14.07.05 - 09:51:20

Titel: JavaAgent und Imports
Beitrag von: Thomator am 14.07.05 - 09:51:20
Moin, Moin,

ich versuche gerade wieder, in einem JavaAgent mit lotus.domino.cso-Klassen zu arbeiten.

Ich habe also das NSCO.jar in das in den Projekteigenschaften zugefügt, die Imports gemacht usw. Der Agent lässt sich auch fehlerfrei compilieren.
Bei der Ausführung wird allerdings der Fehler:

java.lang.NoClassDefFoundError: lotus/domino/cso/Session

geworfen.

Hat irgend jemand eine Idee, woran das liegen könnte??

Thomas
Titel: Re: JavaAgent und Imports
Beitrag von: Ralf_M_Petter am 14.07.05 - 14:53:26
Hallo Thomas!

In einem JavaAgent brauchst du die NCSO.jar nicht, da du in einem Agent nur mit dem lokalen Interface arbeitest. Meinst du eventuell ein Standalone Programm?


Grüße

Ralf
Titel: Re: JavaAgent und Imports
Beitrag von: Thomator am 14.07.05 - 15:18:04
Hi Ralf,

nee, ich meine schon einen JavaAgenten. Der soll allerdings von einem anderen Server Dokumente auslesen (evtl. auch R5). Und da kommt man mit lokalen Sessions nicht so viel weiter.

In der Designer-Hilfe sind übrigens auch Beispiele für solche Agenten mit diiop-Sessions (in der Klasse NotesFactory), allerdings funktionieren die nicht mal, wenn ich die 1:1 übernehme!

Thomas
Titel: Re: JavaAgent und Imports
Beitrag von: Ralf_M_Petter am 14.07.05 - 15:23:23
Kannst du Code posten, so kurz wie möglich um Problem zu reproduzieren.

Grüße

Ralf
Titel: Re: JavaAgent und Imports
Beitrag von: Thomator am 14.07.05 - 15:29:54
Bitteschön:

import lotus.domino.AgentBase;
import lotus.domino.NotesFactory;
import lotus.domino.AgentContext;
import lotus.domino.cso.*;

public class JavaAgent extends AgentBase {

   public void NotesMain(){
      try {      
         String s = null;
         String ior = NotesFactory.getIOR("IP", "user", "pwd");
         System.out.println(ior);
         Session corbaSess = (lotus.domino.cso.Session)NotesFactory.createSessionWithIOR(ior, "tester", "pwd");
         System.out.println(corbaSess.getNotesVersion());
         corbaSess.recycle();
      } catch(Exception e) {
         e.printStackTrace();
      }
   }
}

Nachtrag: Damit das mit den Tokens funktioniert muss aber der Server auch dementsprechend eingerichtet sein. Du kannst das auch mal mit der Methode "NotesFactory.createSession("host/IP", "user", "pwd")" testen, da hab ich das gleiche Resultat.

Thomas
Titel: Re: JavaAgent und Imports
Beitrag von: Ralf_M_Petter am 14.07.05 - 15:52:08
Hm ich bekomme bei mir eine Security Exception wenn ich das probiere. Dachte ich habe das schon mal gekonnt. Muss aber zugeben, dass ich schon lange die ganzen Java sachen ausserhalb des Agent Contexts mache, da man dann besser debuggen kann.

Grüße

Ralf
Titel: Re: JavaAgent und Imports
Beitrag von: Thomator am 14.07.05 - 15:56:25
Ja, da muss im Serverdokument den LotusScript/Java-Agenten auch noch das Recht eingeräumt werden, 'run unrestricted Methods'.

Sonst darfst Du glaub ich nicht mal auf das Notes.jar zugreifen.

Thomas
Titel: Re: JavaAgent und Imports
Beitrag von: flaite am 14.07.05 - 16:03:51
Sonst darfst Du glaub ich nicht mal auf das Notes.jar zugreifen.
Das hat damit nichts zu tun. Das wird über die Classpath-Settings geregelt und die sind völlig abgelöst von Security Mechanismen.
Über die Security Einstellungen kannst du einfach nur erlauben, dass code von diesem User bestimmte durch den Java Security Manager geschützte Methoden aufrufen kann.
Das ist sogenannte J2SE-2 Security und funktioniert ähnlich wie ECL in Notes.

Gruß Axel
Titel: Re: JavaAgent und Imports
Beitrag von: Ralf_M_Petter am 14.07.05 - 16:08:36
Darf natürlich unrestricted Agents laufen lassen, stimme Axel zu das das etwas mit den Java Security Manger zu tun hat.

Grüße

Ralf