Kategorien
Software-Entwicklung Java

Accessing JDBC Data Source metrics from an application on a Weblogic Server

I recently felt the need for accessing the metrics / statistics of a JDBC Data Source from within an application that is deployed on a Oracle Weblogic Server. I did not succeed right away, so I document it here. Basically we just need some calls to JMX. Using the Weblogic RuntimeServiceMBean we navigate from ServerRuntime…

Kategorien
Software-Entwicklung Java

JavaMail ignores timeout from POP3 server

At work our application reads email from a number of POP3 servers using JavaMail. If you trigger the POP3 server’s timeout the session is closed silently und JavaMail does not complain on session.close. In the result, the message is not deleted and will be processed again on the next turn of the background processing task.…

Kategorien
Java

Default timeouts for network connections in Java

You often find the answer to „How do I set default timeouts for (outgoing) network connectins in Java“ is [sourcecode language=“java“] System.setProperty(„sun.net.client.defaultReadTimeout“, „30000“); System.setProperty(„sun.net.client.defaultConnectTimeout“, „30000“); [/sourcecode] But this may or may not work. Because, as stated by Sun in 2005: Yes, it [the default timeout] is cached, or more precisely it is looked up only…

Kategorien
Software-Entwicklung Java

Berlin Expert Days 2012

Die „Berlin Expert Days 2012“ war eine zweitägige Softwareentwicklungs-Konferenz in Berlin. Ich war das erste Mal dabei und es hat mir gut gefallen. Die Konferenz findet im Fachbereich Informatik an der FU-Berlin statt. Sie ist nicht sehr groß (Räumlichkeiten: 1 Hörsaal, 2 Seminarräume), wobei dieses Jahr wohl nicht alle Anmeldungen auch ein Ticket bekommen haben.…

Kategorien
Java

Einfache Konstruktoren

Gespräch mit Kollege: Gegeben Klasse A und Klasse B extends A und ich rufe im Konstruktor von A eine Methode auf, die in B überschrieben wird und die dort auf eine in B definierte Variable zugreift, dann ist diese Variable zum Zeitpunkt des Aufrufs nicht initialisiert. Das stimmt. Wozu brauchst Du das? Klasse Gruppenbaum, im…

Kategorien
Software-Entwicklung Java

Oracle Fehlermeldung: „Too many open cursors“

Letztens haben wir nach Hardware- und JDBC-Treiber-Wechsel folgende Fehlermeldung bekommen: ORA-01000: too many open cursors (oder auf deutsch: maximale anzahl offener cursor überschritten) Tatsächlich gab es noch 2 Statements im Application-Server, bei das Statement nicht geschlossen wurde. Man findet die betreffenden Statements mit folgendem SQL: [sql] select c.sid, c.address, c.hash_value, COUNT(*) as „Cursor Copies“ from…

Kategorien
Java

Finalizer in Java: lieber Finger weg!

Laut Java-Spezifikation werden Finalizer in Java aufgerufen, bevor das entsprechende Objekt durch den Garbage Collector aus dem Speicher entfernt wird. Das klingt erst mal verlockend – hier könnte man ja automatische das Freigeben von Resourcen unterbringen. Aber! Es wird nicht garantiert, wann der Finalizer aufgerufen wird. Die freizugebenden Resourcen sind solange blockiert. Schlimmer kommt es…

Kategorien
Software-Entwicklung Java

JAMon 2.0 – Monitoring Java Applications

Kürzlich wurde Version 2.0 von JAMon veröffentlicht. JAMon ist eine kleine, für Java-Anwendungen nützliche Monitoring-Bibliothek. In Version 1 gab es die Möglichkeit, Ausführungszeiten von Code programmatisch zu messen: [java] Monitor m = MonitorFactory.start(„berechnung“); BerechnungsModul.berechne(); m.stop(); [/java] misst die Ausführungszeit der berechne-Methode. Das interessante hierbei ist Statistiken werden über die Ausführungszeiten (genauer: Ausführungsdauer) erstellt (Summe, Mittelwert,…