Schaltsekunde macht Probleme in Java Anwendungen

Wie am Wochenende auf Heise.de zu lesen war, wurde eine positive Schaltsekunde eingeschoben, um einer Verschiebung zwischen Uhrzeit und Tagesverlauf entgegenzuwirken. Genau diese Sekunde führt auf Linuxsystemen zu Problemen. Die Auswirkungen sind: extrem hohe CPU-Last Anwendungen können nich mehr erreicht werden Server können nicht mehr erreicht werden Um dieses Problem zu beheben, gibt es zwei Lösungen. Die erste Lösung ist…

Rückblick zum Git-Vortrag bei der JUG Saxony

Am vergangenen Donnerstag, dem 15.09.2011, habe ich im Rahmen der Java User Group Saxony den schon seit Längerem geplanten Vortrag zum verteilten Versionskontrollsystem Git gehalten. Die Veranstaltung war mit mehr als 100 Zuhörern sehr gut besucht. Laut Zählung der Organisatoren war es sogar die bisher bestbesuchte JUG Saxony-Veranstaltung überhaupt. Der Vortrag war sehr umfangreich, so dass ich die vollen drei…

Events mit CDI und EJB 3.1, Teil 2

In meinem letzten Artikel habe ich beschrieben wie Ereignisse mittels CDI und Java EE 6 erzeugt und verarbeitet werden können. Neben der Steuerung des Transaktionskontextes  oder asynchronen Verarbeitung der Ereignisse können die Ereignisse auch mit Qualifiern ausgestatet werden. Diese lassen sich recht einfach definieren wie z.B.: @Qualifier @Target({ ElementType.FIELD, ElementType.PARAMETER }) @Retention(RetentionPolicy.RUNTIME) public @interface IgnoreRollback { } Anschliessen können die…

JMeter: Optionen im ConstantThroughputTimer sind sprachabhängig

Apache JMeter ist ein Werkzeug, mit dem man Lasttests für Webanwendungen durchführen kann. Dabei werden konfigurierbar viele parallele Threads gestartet, die nach einem bestimmten Schema auf die Webanwendung zugreifen. Um konkrete Performance-Kennzahlen (KPIs) zu testen ist es sinnvoll, die tatsächliche Anzahl der Zugriffe zu beschränken. Zu diesem Zweck bietet JMeter den Baustein „ConstantThroughputTimer“. Mit dieser Komponente kann die Menge der…

Was tun bei OutOfMemory – Teil 2: Analyse

Nicht selten kommt es vor, dass Speicherprobleme erst im Wirkbetrieb auftreten. Die Gründe dafür sind oft, dass das System nicht ausreichend oder gar nicht unter realen Lastbedingungen getestet wurde. Bei Systemen mit redaktionellen Inhalten (z. B. Content Management Systeme) ergibt sich aus der steigenden Anzahl der Inhalte in Verbindung mit Abhängigkeiten und Caching  eine wachsende 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 einheitlichen 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öffentlicht. Das Repository besteht aus einem oder mehreren Workspaces. Jeder dieser Workspaces enthält eine hierarchische Baumstruktur, die aus Items besteht. Ein Item…

Annotaion in Spring 3.0

Annotations erfreuen sich immer größerer Beliebtheit. Egal wo man hinsieht, fast alles kann man mittlerweise damit machen (Caching, Persistenz, deklarative Services in OSGi, …). Seit Spring 3.0 gibt es nun auch im Springframework Annotations. Ohne Annotations Als Beispiel soll ein einfacher HalloWellt-Controller dienen. Klassen, die bei SpringMVC als Controller-Klassen fungieren, müssen das Interface Controller implementieren oder einfach von einer bestehenden…

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 asynchronen Prozessen relativ umständlich und der Einsatz von JMS meist unumgänglich. Ich möchte hier kurz zeigen, dass es mit EJB 3.1 eine weitere Möglichkeit gibt schnell und effizient ein klassisches Beobachterpattern umzusetzen ohne auf JMS zurückgreifen zu müssen. Dazu benötigen wir zunächst einen Service der Ereignisse (Events)…

EJB Annotationen in Jar Files

Möchte man in größeren Projekten gemeinsam genutzte EJB-Klassen wie z.B.  allgemeine Exceptions oder Basisklassen für Entities in separate Libraries auslagern muss man beachten, dass die EJB-Annotationen in den Jar Dateien vom verwendeten EJB-Container unter Umständen nicht beachtet werden. Abhilfe schafft hier das manuelle Registrieren der Exceptions oder Entitäten aus dem Jar-File in den XML-Konfigurationen (ejb-jar.xml, persistence.xml) der jeweiligen ejb-jar. Beispiel…

Confluence Profiler aktivieren

Was ist Profiling? Als Profiler werden Programmierwerkzeuge bezeichnet, die das Laufzeitverhalten von Software analysieren. Es gibt unterschiedliche Problembereiche in der Softwareentwicklung, die durch ineffiziente Programmierung ausgelöst werden. Ein Profiler hilft dem Entwickler durch Analyse und Vergleich von laufenden Programmen die Problembereiche aufzudecken. Daraus kann man Maßnahmen zur strukturellen und algorithmischen Verbesserung des Quellcodes ableiten. Die häufigste Anwendung eines Profilers ist…

HyperJAXB3

Im Rahmen eines Projektes sollten XML Mockup Dateien in einer Datenbank gehalten und über eine Webservice-Schnittstelle ausgelesen werden. Für gewöhnlich habe ich aus der XSD per JAXB Java Klassen generiert und in Entity Beans gemappt, die anschließend in die Datenbank geschrieben werden. Um dieses, aus meiner Sicht recht aufwendige und fehleranfällige Mapping in die Entity Beans zu umgehen, habe ich…

Standalone Java Applikationen mit Maven

Das Bauen und Ausliefern von normalen und eigenständigen Java Anwendungen die nicht in einem Webcontainer oder Applikationserver laufen sollen kann sich als schwierig erweisen. Die größten Probleme beim Erzeugen der Releases sind dabei die folgenden Punkte: es müssen die benötigten Bibliotheken aufgelöst und mit in des Release gepackt werden die Java Applikation muss in den meisten Fällen auf dem Zielsystem…

Grails Liferay Portlets und GORM

Wie in meinem letzten Beitrag angekündigt, wollte ich mich tiefergehend mit den Möglichkeiten des Grails Portlet Plugins beschäftigen. Da die Dokumentation nicht besonders aussagekräftig ist, galt es zunächst herauszufinden, ob man nicht nur Deskriptoren und Portlet Views generieren sondern auch Domain-Objekte im Portlet verwenden kann. Dafür habe ich zu Testzwecken ein Domainobjekt mit dem Namen Blogpost erstellt: grails create-domain-class de.communardo.liferay.grails.portlet.Blogpost…

Asynchrone Methoden mit EJB 3.1

Asynchrone Prozesse werden sehr häufig in Enterprise Applikationen eingesetzt um Abläufe zu beschleunigen. Um diese mit EJB 3.0 zu realisieren kam man um den Einsatz von Message Driven Beans und JMS nicht herum, da diese die einzige Möglichkeit darstellten asynchrone Aufrufe zu realisieren. Mit der Einführung von EJB 3.1 und der neuen Annotation @Asynchronous wird es nun möglich, Methoden direkt…

Ldap Schnittstelle mit Spring und iBatis

Die Realisierung einer Schnittstelle zu einem Ldap Respository ist nach wie vor mit einem erheblichen Implementierungsaufwand verbunden und gestaltet sich oft als sehr unflexibel z.B. gegenüber Änderungen am Ldap Schema. Beispiel für ein Ldap Schema und einen Ldap Eintrag: Im Folgenden wird eine Lösung vorgestellt, wie sich mit Hilfe eines Jdbc-Ldap Treibers und einem Persistenzframework relativ schnell eine flexible Ldap…

Parallelität mit gpars

Unser Teamoffsite in Eschdorf am 13.11.09 war unter Anderem dem Thema gpars (http://gpars.codehaus.org/) gewidmet, ein Groovy-Framework, welches es erlaubt, parallele Software zu entwickeln, ohne dabei die Komplexität der dafür vorgesehenen Java-Mechanismen kennen zu müssen. Folgende Konzepte werden von gpars unterstützt: – Aktoren (auch verteilte) – Datenflussoperatoren – Sicherungen für veränderliche Objekte (Safe) sowie – nebenläufige Operationen auf Collections und –…

Extraktion der Zertifikatskette mit OpenSSL

Es kommt gelegentlich vor, dass bei Serveranwendungen die SSL-Zertifikate ausgetauscht werden. Insbesondere bei einem gleichzeitigen Austausch von CA-Zertifikaten (weil z.B. eine neue Sub-CA für die Signierung neuer Zertifikate verwendet wird) kann es dabei dazu kommen, 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 aussteigt. Um hier Abhilfe zu schaffen, benötigt man die CA-Zertifikate, die bei SSL-Handshakes mitgeschickt werden. Um diese zu extrahieren bietet sich das Tool s_client der openssl-Bibliothek an.

Anbindung des OpenBenno Mailarchivs an ein Active Directory

OpenBenno ist eine unter GPL lizenzierte E-Mail Archivierungslösung. Damit ist es möglich, die gesetzlichen Anforderungen zur Archivierung elektronischer Kommunikation umzusetzen. Soll diese Software im Unternehmen eingesetzt werden, ist zumeist eine Anbindung an ein vorhandenes Nutzerrepository via LDAP notwendig. Dieser Artikel beschreibt die notwendige Konfiguration der Anbindung an CAS und das Active Directory. Die zusätzlich notwendige Library, deren Sourcen und eine…

1 2 3