JEE

Schaltsekunde macht Probleme in Java Anwendungen

Wie am Wochenende auf Heise.de zu lesen war, wurde eine posi­tive Schaltsekunde ein­ge­scho­ben, um einer Verschiebung zwi­schen Uhrzeit und Tagesverlauf ent­ge­gen­zu­wir­ken. Genau diese Sekunde führt auf Linuxsystemen zu Problemen. Die Auswirkungen sind: extrem hohe CPU-Last Anwendungen kön­nen nich mehr erreicht wer­den Server kön­nen nicht mehr erreicht wer­den Um die­ses Problem zu behe­ben, gibt es zwei Lösungen. Die erste Lösung ist…

JMeter: Optionen im ConstantThroughputTimer sind sprachabhängig

Apache JMeter ist ein Werkzeug, mit dem man Lasttests für Webanwendungen durch­füh­ren kann. Dabei wer­den kon­fi­gu­rier­bar viele par­al­lele Threads gestar­tet, die nach einem bestimm­ten Schema auf die Webanwendung zugrei­fen. Um kon­krete Performance-Kennzahlen (KPIs) zu tes­ten ist es sinn­voll, die tat­säch­li­che Anzahl der Zugriffe zu beschrän­ken. Zu die­sem Zweck bie­tet JMeter den Baustein "ConstantThroughputTimer". Mit die­ser Komponente kann die Menge der…

Was tun bei OutOfMemory – Teil 2: Analyse

Nicht sel­ten kommt es vor, dass Speicherprobleme erst im Wirkbetrieb auf­tre­ten. Die Gründe dafür sind oft, dass das System nicht aus­rei­chend oder gar nicht unter rea­len Lastbedingungen getes­tet wurde. Bei Systemen mit redak­tio­nel­len Inhalten (z. B. Content Management Systeme) ergibt sich aus der stei­gen­den Anzahl der Inhalte in Verbindung mit Abhängigkeiten und Caching  eine wach­sende Belastung. In der Testphase sind…

Open Source Content Management mit JackRabbit

Java Content Repository (JCR) Das Java Content Repository ist eine Spezifikation für den ein­heit­li­chen Zugriff auf Content , Struktur und Metadaten in einem Repository. Die JCR-Version 1.0 wurde unter JSR 170 und die Version 2.0 unter JSR 283 ver­öf­fent­licht. Das Repository besteht aus einem oder meh­re­ren Workspaces. Jeder die­ser Workspaces ent­hält eine hier­ar­chi­sche Baumstruktur, die aus Items besteht. Ein Item…

Events mit CDI und EJB 3.1

Vor der Einführung von CDI (JSR-299/JSR-330) und EJB 3.1 war die Umsetzung von asyn­chro­nen Prozessen rela­tiv umständ­lich und der Einsatz von JMS meist unum­gäng­lich. Ich möchte hier kurz zei­gen, dass es mit EJB 3.1 eine wei­tere Möglichkeit gibt schnell und effi­zi­ent ein klas­si­sches Beobachterpattern umzu­set­zen ohne auf JMS zurück­grei­fen zu müs­sen. Dazu benö­ti­gen wir zunächst einen Service der Ereignisse (Events)…

Confluence Profiler aktivieren

Was ist Profiling? Als Profiler wer­den Programmierwerkzeuge bezeich­net, die das Laufzeitverhalten von Software ana­ly­sie­ren. Es gibt unter­schied­li­che Problembereiche in der Softwareentwicklung, die durch inef­fi­zi­ente Programmierung aus­ge­löst wer­den. Ein Profiler hilft dem Entwickler durch Analyse und Vergleich von lau­fen­den Programmen die Problembereiche auf­zu­de­cken. Daraus kann man Maßnahmen zur struk­tu­rel­len und algo­rith­mi­schen Verbesserung des Quellcodes ablei­ten. Die häu­figste Anwendung eines Profilers ist…

HyperJAXB3

Im Rahmen eines Projektes soll­ten XML Mockup Dateien in einer Datenbank gehal­ten und über eine Webservice-Schnittstelle aus­ge­le­sen wer­den. Für gewöhn­lich habe ich aus der XSD per JAXB Java Klassen gene­riert und in Entity Beans gemappt, die anschlie­ßend in die Datenbank geschrie­ben wer­den. Um die­ses, aus mei­ner Sicht recht auf­wen­dige und feh­ler­an­fäl­lige Mapping in die Entity Beans zu umge­hen, habe ich…

Standalone Java Applikationen mit Maven

Das Bauen und Ausliefern von nor­ma­len und eigen­stän­di­gen Java Anwendungen die nicht in einem Webcontainer oder Applikationserver lau­fen sol­len kann sich als schwie­rig erwei­sen. Die größ­ten Probleme beim Erzeugen der Releases sind dabei die fol­gen­den Punkte: es müs­sen die benö­tig­ten Bibliotheken auf­ge­löst und mit in des Release gepackt wer­den die Java Applikation muss in den meis­ten Fällen auf dem Zielsystem…

Grails Liferay Portlets und GORM

Wie in mei­nem letz­ten Beitrag ange­kün­digt, wollte ich mich tie­fer­ge­hend mit den Möglichkeiten des Grails Portlet Plugins beschäf­ti­gen. Da die Dokumentation nicht beson­ders aus­sa­ge­kräf­tig ist, galt es zunächst her­aus­zu­fin­den, ob man nicht nur Deskriptoren und Portlet Views gene­rie­ren son­dern auch Domain-Objekte im Portlet ver­wen­den kann. Dafür habe ich zu Testzwecken ein Domainobjekt mit dem Namen Blogpost erstellt: grails create-domain-class de.communardo.liferay.grails.portlet.Blogpost Die…

Asynchrone Methoden mit EJB 3.1

Asynchrone Prozesse wer­den sehr häu­fig in Enterprise Applikationen ein­ge­setzt um Abläufe zu beschleu­ni­gen. Um diese mit EJB 3.0 zu rea­li­sie­ren kam man um den Einsatz von Message Driven Beans und JMS nicht herum, da diese die ein­zige Möglichkeit dar­stell­ten asyn­chrone Aufrufe zu rea­li­sie­ren. Mit der Einführung von EJB 3.1 und der neuen Annotation @Asynchronous wird es nun mög­lich, Methoden direkt…

Ldap Schnittstelle mit Spring und iBatis

Die Realisierung einer Schnittstelle zu einem Ldap Respository ist nach wie vor mit einem erheb­li­chen Implementierungsaufwand ver­bun­den und gestal­tet sich oft als sehr unfle­xi­bel z.B. gegen­über Änderungen am Ldap Schema. Beispiel für ein Ldap Schema und einen Ldap Eintrag: Im Folgenden wird eine Lösung vor­ge­stellt, wie sich mit Hilfe eines Jdbc-Ldap Treibers und einem Persistenzframework rela­tiv schnell eine fle­xi­ble Ldap…

Parallelität mit gpars

Unser Teamoffsite in Eschdorf am 13.11.09 war unter Anderem dem Thema gpars (http://gpars.codehaus.org/) gewid­met, ein Groovy-Framework, wel­ches es erlaubt, par­al­lele Software zu ent­wi­ckeln, ohne dabei die Komplexität der dafür vor­ge­se­he­nen Java-Mechanismen ken­nen zu müs­sen. Folgende Konzepte wer­den von gpars unter­stützt: – Aktoren (auch ver­teilte) – Datenflussoperatoren – Sicherungen für ver­än­der­li­che Objekte (Safe) sowie – neben­läu­fige Operationen auf Collections und –…

Extraktion der Zertifikatskette mit OpenSSL

Es kommt gele­gent­lich vor, dass bei Serveranwendungen die SSL-Zertifikate aus­ge­tauscht wer­den. Insbesondere bei einem gleich­zei­ti­gen Austausch von CA-Zertifikaten (weil z.B. eine neue Sub-CA für die Signierung neuer Zertifikate ver­wen­det wird) kann es dabei dazu kom­men, dass eine Applikation, die als Client auf die Serveranwendung zugreift die Vertrauenskette des Serverzertifikates nicht mehr prü­fen kann und dann z.B. in Java mit einer SSLHandShakeException aus­steigt. Um hier Abhilfe zu schaf­fen, benö­tigt man die CA-Zertifikate, die bei SSL-Handshakes mit­ge­schickt wer­den. Um diese zu extra­hie­ren bie­tet sich das Tool s_client der openssl-Bibliothek an.

Anbindung des OpenBenno Mailarchivs an ein Active Directory

OpenBenno ist eine unter GPL lizen­zierte E‑Mail Archivierungslösung. Damit ist es mög­lich, die gesetz­li­chen Anforderungen zur Archivierung elek­tro­ni­scher Kommunikation umzu­set­zen. Soll diese Software im Unternehmen ein­ge­setzt wer­den, ist zumeist eine Anbindung an ein vor­han­de­nes Nutzerrepository via LDAP not­wen­dig. Dieser Artikel beschreibt die not­wen­dige Konfiguration der Anbindung an CAS und das Active Directory. Die zusätz­lich not­wen­dige Library, deren Sourcen und eine…

Liferay Portlets mit Grails

Seit mei­nem letz­ten Grails Projekt ver­folge ich auf­merk­sam jede Neuigkeit zum Thema Groovy und Grails. Aber auch die Entwicklung von Portlets für den freien Portal Server Liferay liegt im Bereich mei­nes Interesses. Als ich dann auf  groovyblogs.org (emp­feh­lens­werte Quelle!) laß, dass ein Grails Plugin released wurde, mit dem man Portlets für Liferay erstel­len kann, war klar, dass ich das ausprobieren…

Detail Formater – bes­ser debug­gen in Eclipse

Wer kennt das nicht? Man debuggt  sich Zeile für Zeile durch den Code um Fehler in kom­ple­xen Algorithmen zu fin­den. Das Auslesen von pri­mi­ti­ven Datentypen oder Strings klappt ziem­lich gut. Wenig hilf­reich ist aller­dings die Darstellung von Kalenderobjekten. Mit Hilfe der in Eclipse ange­bo­te­nen DetailFormater las­sen sich Objekte im Debug-Modus belie­big for­ma­tie­ren. Für ein Objekt vom Typ "java.util.GregorianCalendar" könnte die…

Vorstellung des SpringSource dm Server

Vor einer Woche war es soweit. Die Tore der dies­mal von Frank Anke (Saxonia Systems) gespon­sor­ten 6. Java User Group in Sachsen öff­ne­ten sich und Eberhard Wolff von SpringSource konnte der bis­her größ­ten Teilnehmerschar der JUG Saxony (www.jugsaxony.org) das neue Produkt SpringSource dm Server vorstellen.

CoreMedia und Spring Security ver­hei­ra­tet – Teil 2: Autorisierung

Rechte und Rollen Mit dem CoreMedia JavaEditor kön­nen Berechtigungsgruppen oder Rollen erstellt und Nutzern zuge­ord­net wer­den. Über die Gruppen kön­nen Berechtigungen sehr fein­gra­nu­lar auf Dokumentebene ein­ge­stellt wer­den. Bei der Authentifizierung wird das Nutzerobjekt mit sei­nen Berechtigungen (GrantedAuthority) gela­den und im SecurityContext abge­legt. Für die Autorisierung kann in allen Schichten der Architektur dar­auf zuge­grif­fen wer­den. Autorisierung im Template Wenn es sich…

1 2