Durchsuche Beiträge in Java

Hin und wieder verwende ich das “antiquierte” Entwurfsmuster des Datentransferobjekts (kurz DTO), um Daten zwischen Benutzeroberfläche und Backend auszutauschen. Dieses Muster war vor einigen Jahren speziell im EJB-Umfeld verbreitet, da die dort eingesetzten Entity Beans nicht zur Oberfläche gereicht werden konnten. Also hat man die für die Anzeige notwendigen Daten in ein einfaches Java-Objekt kopiert [...]

Heute: Bedingte Ausführung von Geschäftslogik abhängig vom Loglevel: Csvheader item = csvheaderDAO.findByPeriod(period); if (item != null && item.getPeriod() == period) { if (log.isDebugEnabled()) { log.debug("Aktualisierung des CSV Headers"); } item.setHeader(header); item.setChangedBy(user); item.setChangedAt(new Timestamp(System.currentTimeMillis())); } else if (log.isDebugEnabled()) { log.debug("neues Objekt des CSV Headers erzeugen."); item = new Csvheader(); item.setPeriod(period); item.setHeader(header); item.setCreatedBy(user); item.setCreatedAt(new Timestamp(System.currentTimeMillis())); csvheaderDAO.persist(item); }

Die heutige Preisfrage: Wie geht man wohl mit XML-Daten um? Die Antwort zumindest im aktuellen Projekt führt einem die erschreckende Wahrheit vor Augen. Mich bestürzt vor allem die eklatante Mißachtung von Standards und das Ignorieren von vorhandenen Frameworks, welche die Arbeit mit XML-Daten optimieren würden. Stattdessen werden von allen möglichen Teams eigenen Lösungen gefrickelt und [...]

Diese Fehlermeldung ist einem Kollegen auf dem aktuellen Projekt vor einigen Tagen über den Weg gelaufen, als er eine Blick in die Logdateien warf: 2010-03-16 18:06:24,523 FATAL [TA_KP20 / 488917180557516] [MessageListenerThreadPool : 0] DefaultTLProcessor – An unchecked exception has been caught. java.lang.NullPointerException at PIObjectEnricherVeryDirtyWorkarroundForBugs1842and1924.enrich(PIObjectEnricherVeryDirtyWorkarroundForBugs1842and1924.java:62) Da sage mal noch einer, Fehler würden nicht korrigiert werden oder [...]

Folgende Methode haben zwei Kollegen in Java-Code gegossen aufgefunden: private Period eroeffnung; public Period getEroeffnung() { if (eroeffnung != null) return eroeffnung; else return null; }

Folgendes Stück Code habe ich die Tage fabriziert und mich gewundert, warum Findbugs gleich zweimal laut anschlägt: Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = DriverMananger.getConnection(…); … } catch (SQLException e) { … } finally { … if (conn == null) conn.close(); }

Ich bin mittlerweile zum millionsten Mal über db4o und dessen Problem mit dem Java-Datentypen BigDecimal gestolpert. Merke: In der Standardkonfiguration kann die objektorientierte Datenbank db4o Objekte vom Typ java.math.BigDecimal nicht korrekt speichern. Die Unterschiede hierfür scheinen – wenn man den Foren auf der Webseite folgt – über die Zeit unterschiedlich zu sein. Mal heißt es, [...]

Mit der Standard Edition 5.0 hat Sun die Sprache Java u.a. um Generics erweitert. Hierbei handelt es sich um die Möglichkeit, Typen und Methoden zu parametrisieren. Damit ist es einem Entwickler möglich, beispielsweise typisierte Listen zu erstellen. Diese sind zur Entwicklungszeit typsicher und lästige Typumwandlungen entfallen. Allerdings werden diese Informationen vom Compiler während der Übersetzung [...]

Dieser Eintrag soll als kleine Anleitung zur Erstellung einer von der eigentlichen Installation unabhängigen Konfiguration des Tomcat Web Application Server dienen. Die Idee dahinter ist die, Installation und Konfiguration zu trennen, um beispielsweise die Wartung zu vereinfachen. In vielen Fällen werden die Webanwendungen direkt im Installationsverzeichnis installiert, ebenso wird die Konfiguration dort direkt angepaßt. Das [...]

Vor einiger Zeit stieß ich auf Arbeit auf ein Problem des JDBC-Treibers für Oracle, der da meldete, daß nur maximal 1000 Parameter an eine Anfrage übergeben werden dürfen. Die Liste mit Parametern war natürlich länger und mußte daher geeignet zerlegt werden. Dafür habe ich den folgenden Algorithmus verwendet: public static List[] splitList(List largeList, int max) [...]