Autor Thema: Probleme mit einem Java-Agenten auf dem Server  (Gelesen 3510 mal)

Offline oson00

  • Aktives Mitglied
  • ***
  • Beiträge: 240
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Probleme mit einem Java-Agenten auf dem Server
« am: 25.06.09 - 10:20:28 »
Hallo,

ich habe einen Java-Agenten geschrieben, um einen Web-Service anzusprechen. Ich baue per Hand das übertragene XML zusammen und nutze dann das Apache HttpClient Paket.

Der Agent ist ein Agent, der durch einen LotusScript-Agenten gestartet wird. Der LotusScript-Agent führt nach Eingang einer Mail, diverse Aufgaben durch und ruft den Java Agenten dann auf.

Das Ganze läuft auf einem Domino 7-Server unter Solaris. (Genaue Version ist mir zur Zeit nicht bekannt)

Das funktionierte auch bisher ganz gut. Allerdings kommen neuerding Exceptions hoch. Grundsätzlich werden die Exceptions abgefangen und in ein Fehler-Dokument geschrieben. Dies passiert bei dieser Exception nicht mehr. Ich habe den Eindruck, dass hier etwas total schief läuft und der Agent die JVM völlig durcheinander bringt.

Die Exception wird für eine Standard-Methode geworfen. Diese existiert auf einmal nicht mehr, in diversen Läufen davor allerdings schon. Hier ein Auszug der Exception:

Code
16.06.2009 09:54:21   Agent Manager: Agent  error: java.lang.NoSuchMethodError: java.util.Currency.getMainTableEntry(CC)I
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.util.Currency.getInstance(Currency.java:189)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.util.Currency.getInstance(Currency.java:167)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.text.DecimalFormatSymbols.initialize(DecimalFormatSymbols.java:452)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.text.DecimalFormatSymbols.<init>(DecimalFormatSymbols.java:62)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.text.NumberFormat.getInstance(NumberFormat.java:668)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.text.NumberFormat.getIntegerInstance(NumberFormat.java:406)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:505)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:488)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.text.DateFormat.get(DateFormat.java:678)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.text.DateFormat.getDateInstance(DateFormat.java:480)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.text.MessageFormat.makeFormat(MessageFormat.java:1374)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.text.MessageFormat.applyPattern(MessageFormat.java:447)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.text.MessageFormat.<init>(MessageFormat.java:347)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.util.logging.SimpleFormatter.format(SimpleFormatter.java:48)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.util.logging.StreamHandler.publish(StreamHandler.java:178)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.util.logging.ConsoleHandler.publish(ConsoleHandler.java:87)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.util.logging.Logger.log(Logger.java:424)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.util.logging.Logger.doLog(Logger.java:446)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at java.util.logging.Logger.logp(Logger.java:562)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at org.apache.commons.logging.impl.Jdk14Logger.log(Jdk14Logger.java:99)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at org.apache.commons.logging.impl.Jdk14Logger.warn(Jdk14Logger.java:288)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at org.apache.commons.httpclient.HttpMethodBase.getResponseBody(HttpMethodBase.java:682)
16.06.2009 09:54:21   Agent Manager: Agent  error: 	at org.apache.commons.httpclient.HttpMethodBase.getResponseBodyAsString(HttpMethodBase.java:803)

Habt ihr ähnliches schon gesehen?

Ich habe eine Aussage in diesem Forum gefunden, die mich verwundert hat. Grundsätzlich sollen ja alle Notes-Domino-Objekte Recycled werden. Das habe ich auch penibelst getan und kann darin noch keinen Fehler finden. Allerdings stand hier in einem Thread, dass in Agenten die Objekte session und agentContext nicht recycled werden dürfen!? Ist das tatsächlich so? In der API-Beschreibung konnte ich dazu nichts finden. Kann das die Ursache für mein Problem sein?

Viele Grüße

OSon00

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Probleme mit einem Java-Agenten auf dem Server
« Antwort #1 am: 25.06.09 - 10:59:56 »
Ich hatte auch schon seltsame Begegnungen mit commons Logging und jdk 4.
Kannst du nicht vielleicht einfach das LogLevel hochsetzen.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline oson00

  • Aktives Mitglied
  • ***
  • Beiträge: 240
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Probleme mit einem Java-Agenten auf dem Server
« Antwort #2 am: 25.06.09 - 11:28:09 »
OK, Logging werde ich mal aktivieren. Erwartest Du, dass dadurch das Problem gelöst ist oder dass durch das Log das Problem eingegrenzt und erkannt werden kann?

Das "Schlimme" an diesem Problem ist ja, dass es Wochenlang funktioniert und auf einmal knallt's. Und das so nachzustellen ist natürlich mal wieder nicht möglich.

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Probleme mit einem Java-Agenten auf dem Server
« Antwort #3 am: 25.06.09 - 12:16:58 »
Sorry. Ich meinter Logging heruntersetzen.
Versuch mal eine log4j.properties in deinen Agenten zu tun und dort die Zeile:
log4j.logger.org.apache.commons.httpclient=ERROR

Damit werden nur noch error geloggt. (warning ist in der Hierarchie dadrüber) 
Es ist ziemlich seltsam, weil irgendwo im HttpClient.jar versucht wird eine warning zu werfen und in dieser warning Methode tritt der Fehler auf. Hatte schon ähnliche Begegnungen mit commons-logging und jdk14, bin mir aber nicht mehr so sicher wie ich die gelöst hab. Ich glaub wie oben beschrieben. Du weisst wie du solche Properties Dateien an den Agenten hinzufügst?
Einfach nur eine Datei mit Namen log4j.properties und die Zeile oben.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline oson00

  • Aktives Mitglied
  • ***
  • Beiträge: 240
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Probleme mit einem Java-Agenten auf dem Server
« Antwort #4 am: 25.06.09 - 12:31:36 »
Achso... klar! :-)

Ich habe das Logging jetzt mit

Code
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire.header", "error");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "error");

herunter gesetzt. Schauen wir mal, ob es noch Probleme geben wird.

Vielen Dank! :)

Offline oson00

  • Aktives Mitglied
  • ***
  • Beiträge: 240
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Probleme mit einem Java-Agenten auf dem Server
« Antwort #5 am: 25.06.09 - 17:15:34 »
...und wenn ich die Properties so setze, fliegt mir natürlich eine java.security.AccessControlException um die Ohren!

Ich weiß, dass es die java.policy gibt. Kann mir jemand eine gute Quelle nennen, wie man diese anpaßt? Die JARs sind in der Script-Lib eingebettet und liegen nicht im Dateisystem vor.
« Letzte Änderung: 25.06.09 - 17:18:00 von oson00 »

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Probleme mit einem Java-Agenten auf dem Server
« Antwort #6 am: 25.06.09 - 21:18:57 »
Du kannst auch im Agenten Security Einstellungen ändern. 2. Seite im Designer afaik. Hab kein Notes offen.
Bin Websphere Portlet Factory Entwickler. Lol.
Oder du versuchst log4j.jar in den classpath zu tun und die property-Datei wie oben beschrieben.
Du kannst btw. auch commons-logging.jar patchen.
- Source code runterladen
- Den entsprechenden code in commons.logging.impl.Jdk14Logger.warn ändern (Methode leeren)
- neu kompilieren
- umbenennen in clogging-patched.jar
- neu einbinden
- fertig.
« Letzte Änderung: 25.06.09 - 21:22:32 von Pitiyankee »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Probleme mit einem Java-Agenten auf dem Server
« Antwort #7 am: 26.06.09 - 10:21:46 »
Am einfachsten ist es wohl logging zu Beginn des loggers auszuschalten.
1. Füge log4j.jar dem Agenten zu (sonst nimmt commons-Logging jdk-Logging und ich kenn mich damit nicht aus).
2. Ganz am Anfang des Agenten:
Code
Logger rootLogger = LogManager.getRootLogger(); //To get the Root Logger
Level lev = Level.toLevel("ERROR");
logger.setLevel(lev);

Das ist die einfachste Option und sollte klappen.

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz