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…

Rückblick zum Git-Vortrag bei der JUG Saxony

Am ver­gan­ge­nen Donnerstag, dem 15.09.2011, habe ich im Rahmen der Java User Group Saxony den schon seit Längerem geplan­ten Vortrag zum ver­teil­ten Versionskontrollsystem Git gehal­ten. Die Veranstaltung war mit mehr als 100 Zuhörern sehr gut besucht. Laut Zählung der Organisatoren war es sogar die bis­her best­be­suchte JUG Saxony-Veranstaltung über­haupt. Der Vortrag war sehr umfang­reich, so dass ich die vol­len drei…

Events mit CDI und EJB 3.1, Teil 2

In mei­nem letz­ten Artikel habe ich beschrie­ben wie Ereignisse mit­tels CDI und Java EE 6 erzeugt und ver­ar­bei­tet wer­den kön­nen. Neben der Steuerung des Transaktionskontextes  oder asyn­chro­nen Verarbeitung der Ereignisse kön­nen die Ereignisse auch mit Qualifiern aus­ge­sta­tet wer­den. Diese las­sen sich recht ein­fach defi­nie­ren wie z.B.: @Qualifier @Target({ ElementType.FIELD, ElementType.PARAMETER }) @Retention(RetentionPolicy.RUNTIME) public @interface IgnoreRollback { } Anschliessen kön­nen die…

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…

Annotaion in Spring 3.0

Annotations erfreuen sich immer grö­ße­rer Beliebtheit. Egal wo man hin­sieht, fast alles kann man mitt­ler­weise damit machen (Caching, Persistenz, dekla­ra­tive Services in OSGi, …). Seit Spring 3.0 gibt es nun auch im Springframework Annotations. Ohne Annotations Als Beispiel soll ein ein­fa­cher HalloWellt-Controller die­nen. Klassen, die bei SpringMVC als Controller-Klassen fun­gie­ren, müs­sen das Interface Controller imple­men­tie­ren oder ein­fach von einer bestehen­den…

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)…

EJB Annotationen in Jar Files

Möchte man in grö­ße­ren Projekten gemein­sam genutzte EJB-Klassen wie z.B.  all­ge­meine Exceptions oder Basisklassen für Entities in sepa­rate Libraries aus­la­gern muss man beach­ten, dass die EJB-Annotationen in den Jar Dateien vom ver­wen­de­ten EJB-Container unter Umständen nicht beach­tet wer­den. Abhilfe schafft hier das manu­elle Registrieren der Exceptions oder Entitäten aus dem Jar-File in den XML-Konfigurationen (ejb-jar.xml, persistence.xml) der jewei­li­gen ejb-jar. Beispiel…

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…

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…

1 2 3