Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: schneie am 24.05.11 - 10:27:20

Titel: Periodischer Agent
Beitrag von: schneie am 24.05.11 - 10:27:20
Hallo,
was muss ich tun bzw. welche Vorgaben müssen für einen periodischen Java-Agenten erfüllt sein?

Ich habe einen Java-Agenten der das macht was er soll. Das ist zwar schön, aber es funktioniert eben nur wenn ich ihn "von Hand" starte. D.h. wenn ich im Designer in meiner Java-Datei drin bin und über den grünen Ausführen-Button sage "leg los als Anwendung"...

Ich hätte dass ganze Programm natürlich gerne so, dass es jeden morgen um 8 Uhr von alleine startet.
Ich kann das ganze auch entsprechend konfigurieren. Erhalte keine Fehlermeldung, aber es passiert auch leider nichts.

Kann ja eigentlich net so viel sein, was ich da net raffe...
Danke für jegliche Hilfe!!!

VG Markus


Titel: Re: Periodischer Agent
Beitrag von: m3 am 24.05.11 - 10:43:14
Mehr Input = mehr Output

a) Was macht der Agent
b) Hast Du die notwendigen Rechte, Agents am Server laufen zu lassen
c) ...
Titel: Re: Periodischer Agent
Beitrag von: schneie am 24.05.11 - 10:57:10
Alles klar - versorge euch doch gerne mit mehr Input ;-)

Der Agent holt sich eine Ansicht aus ner lokalen DB und übergibt die darin enthaltenen Dokumente nacheinander an einen Webservice (entfernter Rechner), bekommt eine passende Antwort und macht was mit dem Ergebnis\Dokumenten.
Das funktioniert auch wie gesagt so wie es soll.
Noch mehr Infos oder Quelltext dazu???

Zu den Rechten:

Ausführen hab ich auf Lokal eingestellt. Macht keinen Unterschied zu Ausführen auf Server...

Was wäre noch von Interesse?
Titel: Re: Periodischer Agent
Beitrag von: smokyly am 24.05.11 - 11:10:45

Ausführen hab ich auf Lokal eingestellt. Macht keinen Unterschied zu Ausführen auf Server...



U.U. doch - ist das überprüft:

Zitat
Lokal
Der Agent wird nur auf dem Client ausgeführt. Verwenden Sie die Option, um die Ausführung von Agenten im Hintergrund auf dem lokalen Notes-Client zu planen. Bei der Anwendung mit dem Agenten muss es sich um eine lokale Anwendung handeln. Der Agent wird mit den Rechten der aktuellen Notes-ID ausgeführt. Beachten Sie Folgendes: Damit periodische Agenten auf dem lokalen Notes-Client ausgeführt werden können, muss der Benutzer zuerst die Option Lokale periodische Agenten aktivieren im Register "Allgemein" des Dialogfelds "Benutzervorgaben" (wählen Sie Datei > Vorgaben > Benutzervorgaben) aktivieren.

Gruß
Titel: Re: Periodischer Agent
Beitrag von: schneie am 24.05.11 - 11:17:34
Jupp ist aktiviert.
Auf der Kiste laufen auch noch andere "normale" Notes-Agenten periodisch ohne Probleme.
Titel: Re: Periodischer Agent
Beitrag von: m3 am 24.05.11 - 11:19:49
Was sagt denn das Server-Log? Normalerweise steht da was drinnen, wenn ein periodischer Agent Probleme hat.
Titel: Re: Periodischer Agent
Beitrag von: schneie am 24.05.11 - 11:25:48
Nix. Das ist es ja.
Ich glaub der Läuft noch net mal an...
Titel: Re: Periodischer Agent
Beitrag von: atbits am 24.05.11 - 11:29:35
Hau doch einfach mit System.out.println() bewußt ein paar Meldungen in die log.nsf.

Nicht schön - geht aber in jedem Fall.

z.B.:

StarteAgent

<<your Code>>

Beende Agent

Wenn Du sagst, dass der java-agent webservices antriggert, dann machst du vermutlich einen http-request auf?
Dann solltest du den Agent auf Ausführungsrechte "allow restricted operations ..." setzen, evtl. mußt du zusätzlich noch die java.policy oder java.security oder jvm.security (oder so ähnlich) auf dem Server setzen.

Grüße David
Titel: Re: Periodischer Agent
Beitrag von: schneie am 24.05.11 - 11:30:39
das steht im Statusfesnter wenn ich ihn über Rechtsklick starte (nicht über den grünen Startpfeil wenn ich in der Klasse JavaAgent drin bin):

Agent 'P8 Archivsuche LPA|nag_lpa' wurde am 24.05.2011 11:28:23 gestartet
Bearbeitet alle Dokumente in der Datenbank: insgesamt 16310
16310 Dokumente gefunden, die die Suchkriterien erfüllen
Java-Agent-Klasse ausgeführt
Agent 'P8 Archivsuche LPA|nag_lpa' wurde am 24.05.2011 11:28:26 beendet


Aber passieren tut nix...

Titel: Re: Periodischer Agent
Beitrag von: atbits am 24.05.11 - 11:36:45
Starte ihn mal über einen 2. Agent (LotusScript)..


Code

Option Public
Option Declare
Sub Initialize
	
	Dim s As New notessession
	Dim db As notesdatabase
	Dim agent As notesagent
	
	Set db = s.CurrentDatabase
	Set agent = db.GetAgent("your Agent")
	
	Call agent.RunOnServer
	
End Sub

Titel: Re: Periodischer Agent
Beitrag von: schneie am 24.05.11 - 12:19:52
ah jetzt so langsam....
Da scheint es Probleme mit dem WSDL und dem WebService zu geben.
Aber was ich nicht verstehe, dass er kein Systemoutprintln mach....


Er schreibt mir jetzt folgendes ins Log:
24.05.2011 12:09:21   Agent  error: 24.05.2011 12:09:21 com.sun.xml.internal.bind.v2.runtime.reflect.Accessor$FieldReflection <init>
WARNING: Unable to make javax.xml.ws.wsaddressing.W3CEndpointReference.address accessible.
Throwable occurred: java.security.AccessControlException: Access denied (java.lang.reflect.ReflectPermission suppressAccessChecks)
   at java.security.AccessController.checkPermission(AccessController.java:108)
   at java.lang.SecurityManager.checkPermission(SecurityManager.java:533)
24.05.2011 12:09:23   Agent  error: Exception in thread "Launcher: JavaAgent"
24.05.2011 12:09:23   Agent  error: javax.xml.ws.WebServiceException: Failed to access the WSDL at: http://p8-import01-sb:8080/LimitPA?wsdl. It failed with:
   Connection refused: connect.
24.05.2011 12:09:23   Agent  error:    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:148)
24.05.2011 12:09:23   Agent  error:    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:134)
24.05.2011 12:09:23   Agent  error:    at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:227)
24.05.2011 12:09:23   Agent  error:    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:190)
24.05.2011 12:09:23   Agent  error:    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:160)
24.05.2011 12:09:23   Agent  error:    at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:92)
24.05.2011 12:09:23   Agent  error:    at javax.xml.ws.Service.<init>(Service.java:67)
24.05.2011 12:09:23   Agent  error:    at de.pc.service.LimitPAService.<init>(LimitPAService.java:46)
24.05.2011 12:09:23   Agent  error:    at JavaAgent.<init>(Unknown Source)
24.05.2011 12:09:23   Agent  error:    at java.lang.J9VMInternals.newInstanceImpl(Native Method)
24.05.2011 12:09:23   Agent  error:    at java.lang.Class.newInstance(Class.java:1325)
24.05.2011 12:09:23   Agent  error:    at lotus.domino.AgentInfo.newInstance(Unknown Source)
24.05.2011 12:09:23   Agent  error:    at lotus.domino.AgentLauncher.run(Unknown Source)
24.05.2011 12:09:23   Agent  error:    at lotus.domino.NotesThread.run(Unknown Source)
24.05.2011 12:09:23   Agent  error: Caused by:
24.05.2011 12:09:23   Agent  error: java.net.ConnectException: Connection refused: connect
24.05.2011 12:09:23   Agent  error:    at java.net.PlainSocketImpl.socketConnect(Native Method)
24.05.2011 12:09:23   Agent  error:    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:352)
24.05.2011 12:09:23   Agent  error:    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:214)
24.05.2011 12:09:23   Agent  error:    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:201)
24.05.2011 12:09:23   Agent  error:    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:378)
24.05.2011 12:09:23   Agent  error:    at java.net.Socket.connect(Socket.java:537)
24.05.2011 12:09:23   Agent  error:    at java.net.Socket.connect(Socket.java:487)
24.05.2011 12:09:23   Agent  error:    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
24.05.2011 12:09:23   Agent  error:    at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
24.05.2011 12:09:23   Agent  error:    at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
24.05.2011 12:09:23   Agent  error:    at sun.net.www.http.HttpClient.<init>(HttpClient.java:234)
24.05.2011 12:09:23   Agent  error:    at sun.net.www.http.HttpClient.New(HttpClient.java:307)
24.05.2011 12:09:23   Agent  error:    at sun.net.www.http.HttpClient.New(HttpClient.java:324)
24.05.2011 12:09:23   Agent  error:    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:855)
24.05.2011 12:09:23   Agent  error:    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:796)
24.05.2011 12:09:23   Agent  error:    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:721)
24.05.2011 12:09:23   Agent  error:    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1044)
24.05.2011 12:09:23   Agent  error:    at java.net.URL.openStream(URL.java:1011)
24.05.2011 12:09:23   Agent  error:    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.createReader(RuntimeWSDLParser.java:797)
24.05.2011 12:09:23   Agent  error:    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.resolveWSDL(RuntimeWSDLParser.java:248)
24.05.2011 12:09:23   Agent  error:    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:119)
24.05.2011 12:09:23   Agent  error:    ... 12 more

Titel: Re: Periodischer Agent
Beitrag von: atbits am 24.05.11 - 12:28:36
Systemoutprintln bei Server-Agents geht ins log bzw. die Serverkonsole ...
Titel: Re: Periodischer Agent
Beitrag von: atbits am 24.05.11 - 12:29:25
Kann der Server denn das auflösen?
http://p8-import01-sb:8080/LimitPA?wsdl

ist kein fully qualified hostname ???
Titel: Re: Periodischer Agent
Beitrag von: m3 am 24.05.11 - 12:56:42
24.05.2011 12:09:21   Agent  error: 24.05.2011 12:09:21 com.sun.xml.internal.bind.v2.runtime.reflect.Accessor$FieldReflection <init>
WARNING: Unable to make javax.xml.ws.wsaddressing.W3CEndpointReference.address accessible.
Throwable occurred: java.security.AccessControlException: Access denied (java.lang.reflect.ReflectPermission suppressAccessChecks)
   at java.security.AccessController.checkPermission(AccessController.java:108)
   at java.lang.SecurityManager.checkPermission(SecurityManager.java:533)


Das klingt für mich sehr nach einem Rechte-Problem. Siehe http://stackoverflow.com/questions/5936457/flying-saucer-in-lotus-notes/5946263#5946263 Punkt 2.
Titel: Re: Periodischer Agent
Beitrag von: atbits am 24.05.11 - 13:06:23
Siehe auch mein Post #7
Ich gehe davon aus, dass das gechecked wurde ?
Titel: Re: Periodischer Agent
Beitrag von: schneie am 24.05.11 - 13:20:30
@atbits: ist gecheckt => WSDL hatte kurzfristig nicht zur Verfügung gestanden. Jetzt klapperts auch wieder und zwar ohne jegliche Meldung im Log.
Nur machen tut er nix - zumindest nichts dass ich irgendetwas sehen könnte.

Berechtigungsproblem? Hmm ja aber an welcher Stelle genau?
Titel: Re: Periodischer Agent
Beitrag von: schneie am 24.05.11 - 13:22:15
@m3: hab deinen post nochmal gelesen - bin schon am probieren...
Titel: Re: Periodischer Agent
Beitrag von: atbits am 24.05.11 - 13:22:48
Der Agent läuft unrestricted und Du machst System.out.println() gleich in der 1. Zeile?

Kannst Du den Code posten?
Titel: Re: Periodischer Agent
Beitrag von: schneie am 24.05.11 - 13:39:30
vielleicht mal ganz von vorne...

Also ich mach ja in dem Agenten nix ausser den Konstruktor und einer Zeilenausgabe. Die Zeilenausgabe kommt auch in der Konsole wenn ich ihn manuell starte.

Hier das ganze in seiner einfachsten Form:

public class JavaAgent extends AgentBase
{
   
   private LimitPA port = null;
   
   public static void main(String argv[]) throws ParseException
   {   
      System.out.println("Start Anwendung Limitprüfung1");
   }
   public JavaAgent()
   {
      System.out.println("Start Anwendung Limitprüfung2");
      port = new LimitPAService().getLimitPAPort();
      System.out.println("Start Anwendung Limitprüfung3");
   }

}

Titel: Re: Periodischer Agent
Beitrag von: atbits am 24.05.11 - 13:54:00
Das ist kein ordentlicher NotesAgent.
Deine Main-Methode muss

Code
public void NotesMain() { ...


heißen.

Was passiert, wenn Du diesen Agent runOnServer startest?
Titel: Re: Periodischer Agent
Beitrag von: atbits am 24.05.11 - 15:01:51
Ich finde schon dass wir das hier diskutieren können, dann haben alle was davon:

Ich bekam folgende PM:

Zitat
Bekomme die Meldung "Die Auswahl enthält keinen Haupttyp"
<= Hä?????
Verstehe nur noch Bahnhof...

Und schon mal danke für die Hilfe die ganze Zeit!

Das hier funzt schon nicht bei mir:
Code
import lotus.domino.*;

public class JavaAgent extends AgentBase {

    public void NotesMain() {

      try {
          Session session = getSession();
          AgentContext ac = session.getAgentContext();
          Agent ag = ac.getCurrentAgent();
          ag.runOnServer();
          System.out.println("Testausgabe");
      } catch(Exception e) {
          e.printStackTrace();
       }
   }
}

Wie ist der Agent-Trigger?
Wie die Document-Selection in den Agent-Properties

Ich denke dort liegt der Fehler,. Der Java-Code ist OK.

David
Titel: Re: Periodischer Agent
Beitrag von: schneie am 24.05.11 - 15:51:25
So ich bin mal komplett auf Neustart...

Also das läuft jetzt und sogar periodisch.
Hab den Eintrag zumindest mal im Server-Log und ohne Fehlermeldung.
Morgen gehts weiter - die Fahrgemeinschaft will "leider" schon nach Hause  :P

Schon mal vielen Dank bis hierher und ebenfalls schönen Feierabend!

import lotus.domino.*;

public class JavaAgent extends AgentBase {
   
    public static void main(String argv[]) {

      try {
         NotesThread.sinitThread();
         Session se = NotesFactory.createSession();
         System.out.println("Testausgabe Start");
         // Code
         System.out.println("Testausgabe Ende");
      } catch(Exception e) {
          e.printStackTrace();
       }finally{
          NotesThread.stermThread();
       }
   }
}

Titel: Re: Periodischer Agent
Beitrag von: atbits am 24.05.11 - 15:54:30
Was heißt denn Feierabend?
Bei mir gehts in ner Stunde in die 2. Schicht ...

Jung sollte man nochmal sein ....

 ;)
Grüße David
Titel: Re: Periodischer Agent
Beitrag von: atbits am 24.05.11 - 15:55:59
Aber das hier

Code
import lotus.domino.*;

public class JavaAgent extends AgentBase {
   
    public static void main(String argv[]) {

      try {
         NotesThread.sinitThread();
         Session se = NotesFactory.createSession();
         System.out.println("Testausgabe Start");
         // Code
         System.out.println("Testausgabe Ende");
      } catch(Exception e) {
          e.printStackTrace();
       }finally{
          NotesThread.stermThread();
       }
   }
}

Ist schon wieder nicht die Basis für einen Agenten, sondern für ein ext. Java-Programm.
Schau doch bitte mal in die Designer-Hilfe zu Java-Agenten.
Wir drehen uns im Kreis ...
Titel: Re: Periodischer Agent
Beitrag von: schneie am 25.05.11 - 09:47:57
So neuer Tag neues Glück - manchmal hilft es eine Nacht über einem Problem zu schlafen. Zumindest wenn das Problem keine zwei Beine und zwei... Lassen wir dass!  >:D

So also ich hab den Agent neu aufgesetzt. Und zwar komplett neu und nach deiner Anmerkung bzgl. NotesMain usw...
Was soll ich sagen es funktioniert  O0

Habe jetzt einzig nach das "Permisson"-Problem was hier ja auch schon genannt wurde. Werde das jetzt auch noch anpassen. Muss nur leider den Server-Neustart abwarten oder hat noch jemand anderes eine Idee?


Mgr: Agent ('TestZYX' in 'TestOA\Archivsuche.nsf') printing: Starte Webservice
25.05.2011 09:40:30   AMgr: Agent ('TestZYX' in 'TestOA\Archivsuche.nsf') printing: Abbruch Webservice
25.05.2011 09:40:30   AMgr: Agent ('TestZYX' in 'TestOA\Archivsuche.nsf') error message: java.security.AccessControlException: Access denied (java.lang.RuntimePermission setContextClassLoader)
25.05.2011 09:40:30   AMgr: Agent ('TestZYX' in 'TestOA\Archivsuche.nsf') error message:    at java.security.AccessControlException.<init>(AccessControlException.java:62.....