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:
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
Achso... klar! :-)
Ich habe das Logging jetzt mit
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! :)
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:
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.