Mit Eclipse 3.3 gibt es endlich die Möglichkeit beim Speichern einer Java-Datei automatisch Code Bereinigungen und Formatierung durchzuführen. Die Einstellung hierfür kann im Eclipse-Projekt definiert werden und nicht ausschließlich Workspace-weit. Das ist ein Vorteil, denn dann können diese Einstellungen ins Versionskontrollsystem aufgenommen und somit implizit im gesamten Entwicklungsteam verfügbar gemacht werden. Auf diese Weise garantiert man eine einheitliche Formatierung im Projekt.
Dieser Artikel zeigt einen Ansatz, wie man in Java-Software-Projekten unerlaubte Abhängigkeiten zwischen Klassen / Paketen / Subsystemen / Layern erkennt und frühzeitig während der Entwicklung anzeigt. Dieser Ansatz verwendet AspectJ um Compile-Warnungen für Abhängigkeitsverletzungen zu definieren.
Eine nicht funktionale Anforderung an Software-Systeme wird gemeinhin mit dem Begriff “Security” umrissen. Ein Teilaspekt betrifft die Authorisierung von Benutzern / Fremdsystemen gegenüber bestimmten Diensten oder Daten. Bei mehrschichtigen Softwaresystemen, die eine Datenbank in der Ressourcenschicht einbinden, ist die Authorisierung oft Aufgabe der Geschäftsschicht.
Ein anderer Ansatz stellt die Realisierung der Authorisierung direkt in der Datenbank dar. Diesen Ansatz findet man oft in Alt-Systemen, bei denen zumal auch Geschäftslogik in der Datenbank in Form von Stored Procedures umgesetzt ist. Damit die Datenbank Authorisierungsfunktionen übernehmen kann, muss der tatsächliche Benutzer an die DB propagiert werden.
| |
Im Rahmen dieses Artikels möchte ich ein wenig Know-How für die Implementierung dieses Ansatzes in Verbindung mit dem Oracle-DBMS (Datenbankmanagementsystem), Connection Pooling im Weblogic Application Server und JDBC weitergeben. Dieses Know-How entstammt der Anbindung einer Produktdatenbank bei einem großen Deutschen Automobilhersteller. Zum Einsatz kommt eine proprietäres Feature des Oracle-DBMS – die Oracle-Proxy-Sessions.
Moderne Web-Anwendungen setzen Ajax ein um die Usability zu verbessern – das weiß doch jedes Kind! Eine tolle Sache zur Verbesserung der Usability ist es, für kurze Benutzerinteraktionen einen Popup-Dialog einzublenden, der vom Benutzer einfach wieder geschlossen werden kann. Unter Umständen besteht der Popup aus einer Folge von Dialogen (Wizard-Stil). Der Popup soll kein neues Browser-Fenster sein, sondern per Div über der aktuellen Seite als modaler Dialog “schweben”. Dieser Artikel zeigt eine angenehme Lösung für derartige Popup-Wizard-Dialoge unter Verwendung von Java Server Faces (JSF) und Ajax4JSF (A4J).
Das Singleton-Pattern – meiner Erfahrung nach, ein sehr häufig verwendetes Pattern, welches nahezu jeder Entwickler in seinem Wortschatz hat. Die Implementierung des Singleton-Patterns für eine bestimmte Klasse sieht vor, dass eine statisches Feld in der Klassen die Referenz der einzigen Instanz derselben Klasse speichert. Eine Methode “getInstance” liefert diese Referenz zurück und instanziiert falls nötig die Klasse. Der dazu notwendige Code muss jedes mal von Hand implementiert werden. Mit AspectJ und einer Java Annotation soll das Erstellen von Singletons vereinfacht werden. Im folgenden wird eine Lösung vorgestellt mit der eine beliebige Klasse zum Singleton gemacht wird, indem diese die Annotation “@Singleton” erhält. Fortan liefert das Instanziieren der Klasse (“new”) immer ein und dieselbe Instanz. Continue reading »
Mehrfach verwendet man im Datenmodell / Domänenmodell ein Attribut, welches “dateCreated” oder ähnlich heisst. Für eine Entität soll also hinterlegt sein, wann diese erstellt worden ist. Hat man erst einmal ein solches Attribut an einer Entität, so muss das Erstellungsdatum auch beim erstmaligen Persistieren der Entität gesetzt werden. Wie kann man derartiges unter Verwendung der Java Persistence API effizient umsetzen?
Dieser Artikel beleuchtet eine Lösung um Exceptions mittels AspectJ abzufangen und als Benutzermeldungen anzuzeigen. Das betrachtete Web-Framework ist Java Server Faces, allerdings lässt sich die Lösung auch auf andere Web-Frameworks adaptieren.
Als Vertreter des deutschen Sprachraums musste ich mich schon in mehr als einem Projekt mit der Problematik von Umlauten und der unterschiedliche Kodierung in Windows und Unix und der Internationalisierung von Java-Systemen auseinander setzen. Die im folgenden beschriebene Problematik bezieht sich lediglich auf die Internationalisierung von Texten in einem System – Internationalisierung ist ein weites Feld, welches sich auf Layout, Benutzerführung, Bilder, etc. ausdehnt.