Mar 192011
 

Gerade konfiguriere ich die Ausführung des Android Emulator mit Jenkins Continuous Integration. Mir hat gerade sehr geholfen, eine Fehlermeldung des Plugin über grepcode.com zu finden. Diese Site erlaubt die konfortable Navigation im Quellcode vieler Open-Source-Projekte. Sehr hilfreich.

Mar 042011
 

Es soll IT-Architekten geben, die in der Kernarbeitszeit tatsächlich länger am Stück arbeiten.  Kommt bei mir auch vor. Großprojekte mit vielen Kollegen sind sehr anregend für den eigenen Wissenshorizont, jedoch nur bedingt gut für die Konzentration.
Ich empfehle daher zur Begünstigung unterbrechungsfreien Arbeitens den 24h-Drum’n’Bass Radio-Stream Bassdrive.  Bei durchschnittlichen 175 bpm arbeite ich einfach schneller und konzentrierter. Bei mir läuft gerade Bassdrive auf Media-Monkey.
Und ja, in der restlichen Zeit gebrauchen IT-Architekten Ihr loses Mundwerk und zeichnen Pfeile, Kreise und Rechtecke auf Flipcharts in großen Meetingräumen.

Jan 242009
 

Um die Java-Klassen für WebService-Clients zu generieren empfiehlt sich das JAX-WS-Plugin für Maven. Dieses klinkt sich bei Verwendung von “wsimport” in die Build-Phase “generate-sources” ein.

Für mich ist es sinnvoll, die WSDL-Dateien des anzusprechenden Services direkt in “src/wsdl” meines Projekts abzulegen statt diese über eine URL einzubinden. Dies hat den Vorteil, dass ich Änderungen an der Schnittstelle des Service in der Subversion-Historie nachvollziehen kann. Muss mein Projekt mehrere Service ansprechen, so lege ich die WSDL- plus die Schema-Datei (XSD) jedes Service im genannten Verzeichnis ab.
Continue reading »

Nov 152008
 

Zuletzt habe ich über das Beschleunigen von lokalen JEE-Deployments geschrieben. Für das Beschleunigen von JEE-Deployments ist meiner Einschätzung nach zwingend das exploded Deployment notwendig. Dabei wird ein EAR oder WAR nicht als Archiv-Datei sondern als entpackte Verzeichnisstruktur deployt. Leider ist das Deployment von exploded EARs und WARs noch nicht durch die JEE-Spezifikation abgedeckt. Daher hat jeder JEE Container dabei so seine Eigenheiten. Die folgenden Zeilen liefern ein paar wichtige Informationen zum lokalen Deployment von explodierten EARs unter Glassfish V2.
Continue reading »

Oct 032007
 

Nahezu jede JEE Web-Applikation muss beim Start diverse Initialisierungen ausführen. Denkbar ist das Registrieren von MBeans in einem JMX-Server, das Starten einer Job-Scheduling-Engine oder auch anderes. Dabei fällt immer mal wieder der Begriff “InitServlet” – also ein Servlet, welches keine HTTP-Requests entgegen nimmt sondern nur der Initialisierung einer JEE WebApp dient.

Continue reading »

Sep 252007
 

Regulär geht man davon aus, dass die servergespeicherten Daten einer User Session immer nur von einem Thread zur selben Zeit gelesen bzw. geschrieben werden. Es ist zu aufwendig, jede Stelle im Code welche mit der User Session arbeitet vor Race Conditions durch Mutext-Objekte / Monitore zu schützen. Daher muss dafür gesorgt werden, dann ein Request aus einer User Session immer nacheinander aber nicht parallel verarbeitet werden. Im Folgenden wird ein Code-Beispiel für J2EE Web Applikationen gegeben.

Continue reading »

Sep 242007
 
OpenWishes Logo

Endlich ist es soweit. Der Web-Dienst OpenWishes.de, welcher dabei hilft den Geschenkestress zu überstehen und keine Geburtstage mehr zu vergessen, ist online und damit in der Public Alpha. Diese Plattform entstand in den letzten Monaten in Zusammenarbeit mit Markus Kühle und Markus Junginger. Ich nutze dieses Ereignis um einen Überblick auf die verwendeten Technologien zu geben.

Die Infrastrukturkomponenten des Systems sind Apache Tomcat 6, Apache und MySQL. Es wurde bewusst auf EJB oder Spring verzichtet, jedoch ist die Persistenzschicht mittels JPA / Hibernate umgesetzt. Die Web Tier ist mittels Java Server Faces 1.2 und Facelets realisiert, wobei die JSF-Komponentenbibliothek RichFaces 3.1 und DWR für die Ajax-Funktionalität eingesetzt wird. Für verschiedene Querschnittsbelange wie Exception-Handling, Transaktionshandling, Logging und Ermitteln von Statistikdaten kommt AspectJ zum Einsatz. Asynchrone und zeitgesteuerte Jobs werden mittels Quartz verwaltet. Eine interne Management-Schnittstelle setzt auf JMX / MX4J auf. Das Versenden von Mails wird über Apache Commons Mail realisiert.

Die Plattform selbst ist in Java implementiert, wobei voll auf die Syntax von Java 5 (Generics & Co) gesetzt wird. Durch die Verwendung von AspectJ und Java5 enstand unserer Meinung nach ein sehr erweiterungsfähiges und gut wartbares System da sich der Code auf das Wesentliche beschränkt. Wir hatten und haben das Gefühl, dass wir sehr produktiv bei der Entwicklung und Erweiterung des Systems arbeiten können.

Es gibt noch eine Menge zu tun – neue Features befinden sich in Entwicklung und warten auf das nächste Release. An dieser Stelle die Bitte um Feedback und die Aufforderung OpenWishes.de zu nutzen. Ich werde auf jeden Fall ab heute keine Geburtstage mehr vergessen!

Sep 232007
 

Eine Java Serverapplikation muss oft in verschiedene Umgebungen (auch als Raum bezeichnet) installiert werden. Oft gibt es eine Testumgebeung, eine für die Integration und Fachtests, eine Schulungsumgebung und letztendlich eine Produktivumgebung. Für jede Umgebung müssen oft die Konfigurationsdateien und auch Deployment-Deskriptoren angepasst werden.

Gerade die Deployment-Deskriptoren wie “web.xml” (im WAR), “application.xml” (im EAR) unterscheiden sich marginal. Wäre es da nicht toll nur eine Deskriptor-Datei im Versionskontrollsystem zu halten und nur die marginale Änderungen mittels XSLT vorzunehmen. Natürlich wäre es das! ;-)

Continue reading »