Richfaces Session Speicherverbrauch – Analyse eines Memory-Leaks

Für die Entwicklung von JSF basierten Webseiten ist das Richfaces Framework ein gern genommenes Werkzeug. Es ist ein solides Framework mit umfassender Funktionalität, guter Dokumentation und einer Vielzahl von Komponenten. Mitgeliefert wird auch ein Ajax Framework namens Ajax4JSF (auch a4j genannt). Deployt man nun eine solche Anwendung in das weite Internet in Produktion, so stellen viele Leute fest, daß der Speicherverbrauch stark ansteigt und in nicht mehr reagierenden Systemen oder OutOfMemoryError Abstürzen resultiert. Die Ursache hierfür ist ein Designproblem in JSF / A4J und kann leider nicht einfach behoben, jedoch aber umgangen werden. Beginnen wir aber zuerst mit einer Analyse des Problems in einer ansonsten gut funktionierenden Anwendung.
(weiterlesen…)

Fabian Lange

 

codecentric startet ihren ersten Podcast

Ein Fünftel der Arbeitszeit aller Mitarbeiter bei codecentric sind der Weiterbildung und der Erforschung und Entwicklung eigener Ideen gewidmet. Ein für die strategische Ausrichtung der Firma wichtiger Aktivposten. Insbesondere bei den Themen, bei denen wir Vordenker sein wollen, sind wir da natürlich besonders aktiv. In den Themengebieten Agilität, Architektur, Enterprise Content Management, Java und Performance entspinnen sich deshalb – geplant und ungeplant – immer wieder sehr interessante Diskussionen.

Ab heute gibt es für alle die Möglichkeit diesen Diskussionen teilweise beizuwohnen. Ab heute gibt es den codecentric competence center podcast.

Die Leiter der competence center, und ggf. auch geladene Gäste, setzen sich regelmäßig zusammen und diskutieren aktuelle Themen aus den jeweiligen Bereichen. Initial haben wir uns einen 2-wöchigen Rhythmus vorgenommen. Der erste Podcast behandelt die Themen “Story Points” und “Benennung von Java Klassen”. Langweilig? Ganz im Gegenteil! Wir hatten sehr viel Spaß bei der Diskussion der Themen.

Ich würde mich über Feedback über Inhalt, Gestaltung, Qualität, Länge, etc. im Kommentarbereich des Podcasts freuen. Wer möchte, kann den Podcast auch auf  iTunes abonnieren und bewerten.

Andreas Ebbert-Karroum

 

PDF Generierung mit iText

Rückblick: In unserem letztem Sprint Planning Meeting stand die Aufgabe einer PDF-Generierung an. Wir hatten eine grobe Layout-Vorlage vom Kunden bekommen und die Service-Klassen zur Bereitstellung der benötigten Klassen waren ebenfalls schon vorhanden. Dennoch schätzten wir das zugehörige Ticket erstaunlich hoch. Kein Entwickler im Team hatte Erfahrung mit iText, gleichzeitig hatte jedoch jeder gruselige iText-Geschichten von anderen Entwickler gehört. Ein Zitat schwebte uns im Ohr: “Wenn du mit iText arbeitest, liest du früher oder später die Spezifikation des PDF-Formats.”
(weiterlesen…)

Daniel Reuter

 

Agile Enterprise – Auswirkungen auf die IT

Gerade eben habe ich in der Computer Woche einen Artikel mit dem Thema “Sind ERP-Systeme für das Business zu langsam?” gelesen und dort einen interessanten Begriff entdeckt: Agile Enterprise. Immerhin formuliert von einem Partner und Leiter der Management Beratung bei Ernst & Young.

Da wir uns starkt mit agiler Software Entwicklung beschäftigen, habe ich mich gefragt, was ein “Agiles Unternehmen” ausmacht. Also habe ich mal Google befragt und ein wenig nachgelesen. Eine gute Zusammenfassung findet man bei Business Dictionary:

(weiterlesen…)

Mirko Novakovic

 

Sprint Reflection mal anders

Es gibt viele Wege eine Reflection über einen vergangenen Sprint zu machen, und ab und zu probieren wir auch neue Ideen aus.
So wurden wir in unserer letzten Reflection in die Rolle eines Künstlers versetzt und haben unsere Eindrücke des vergangenen Sprints in ein Bild gefasst.
Was auf den ersten Blick merkwürdig erschien funktionierte aber überraschend gut. Das Bild stellt kompakt die wichtigsten Eindrücke zusammen und provoziert andere Emotionen also eine reine Liste über die zu verbessernden Dinge. Mal sehen ob wir dieses Mittel irgendwann wieder einsetzen.
Als Beispiel möchte ich mein Bild zeigen und beschreiben. Die Bilder der Kollegen waren zwar auch interessant, jedoch möchte ich sie nicht ungefragt veröffentlichen. :-)
(weiterlesen…)

Fabian Lange

 

System.gc() Aufrufe können schwere Folgen haben

Es passiert jedem Entwickler schon mal, daß man Hinweise aus der JavaDoc nicht besonders Ernst nimmt, oder gar überliest. Insbesondere wenn die angesprochenen Probleme lokal nicht (oder scheinbar nicht) auftreten.

Zum Beispiel aus dem java.text.SimpleDateFormat:

 * Date formats are not synchronized.
 * It is recommended to create separate format instances for each thread.
 * If multiple threads access a format concurrently, it must be synchronized
 * externally.

Vielleicht ist die Warnung auch nicht deutlich genug, dadurch daß dort steht: “It is recommended”.
Deshalb sieht man leider häufig folgende Zuweisung welche zu Nebenläufigkeitsproblemen führen kann

private static final SimpleDataFormat DATE_FORMAT = new SimpleDateFormat("yyyy.MM.dd");

Schlimmer ist es hingegen bei System.gc().
(weiterlesen…)

Fabian Lange

 

© 2010 codecentric