Domino 9 und frühere Versionen > ND7: Entwicklung
Probleme mit einem Java-Agenten auf dem Server
oson00:
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)
--- Ende Code ---
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
flaite:
Ich hatte auch schon seltsame Begegnungen mit commons Logging und jdk 4.
Kannst du nicht vielleicht einfach das LogLevel hochsetzen.
oson00:
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.
flaite:
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.
oson00:
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");
--- Ende Code ---
herunter gesetzt. Schauen wir mal, ob es noch Probleme geben wird.
Vielen Dank! :)
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln