Archiv der Kategorie: Java

[Spring DI] Manuelle Beandefinition mit Qualifier für Autowiring

Unter diesem sperrigen Titel möchte ich auf die Fallstricke hinweisen die beim manuellen Registrieren von Beans auftreten können.

Beispiel für die manuelle Erstellung einer BeanDefinition mit Angabe eines Qualifiers (in diesem Fall der SimpleName der Bean)

Der größte Aha-Effekt liegt in der letzten Zeile.
Denn vorher sah meine Definition des AutowireCandidateQualifier wie folgt aus:

Was aber nicht funktioniert und in einer sagen wir mal länger gezogenen Debug-Session hab ich dann entdeckt das im
org.springframework.beans.factory.annotation.QualifierAnnotationAutowireCandidateResolver
folgendes geprüft wird:

bd steht hierbei für die BeanDefinition und type ist org.springframework.beans.factory.annotation.Qualifier.
Da ich den Qualifier anfangs nicht mit deklariert hatte, konnte es ja nicht klappen. Mit der Angabe des Qualifiers ging es dann. Halleluja!

Ein manuelles Abfragen der Qualifier-Informationen ist wie folgt möglich.

Gearbeitet habe ich in diesem Fall mit der Spring-Version 3.1.0.RELEASE.

Größe einer Liste in einer JSP darstellen

Wieder mal ein klassisches, simples Problem. In einer JSP kann man nicht auf die Methode size() einer java.util.List zugreifen, das die JSTL mit dem Aufruf

einen Getter erwartet und folgende Fehlermeldung produziert:

The „.“ operator was supplied with an index value of type „java.lang.String“ to be applied to a List or array…

Die Erstellung einer einfachen Wrapperklasse behebt dieses Problem:

Die Idee zur Lösung habe ich Buch Core JSTL von David M. Geary gefunden.

Quelle

Sollte man functions-Bibliothek „fn“ nutzen, kann man natürlich die Funktion
fn:length verwenden.

Selenium & TestNG

Hier eine Liste mit Problemen die ich beim ersten Einsatz vom Selenium & TestNG hatte und keine direkte Problemlösung im Netz gefunden habe.

Problem 1:
Man kann seine TestSuiten in mehrere SubSuiten unterteilen und über mehrere XML-Konfigurationen definieren.
Bsp:

Leider kommt es bei diesem Setup zu einer NullPointerException
[TestNG] Reporter org.testng.reporters.XMLReporter@be0e27 failed

Scheinbar verlangt TestNG das in jedem Suite-File mind. ein konkreter Test enthalten ist.
Mit diesem Setup hats dann funktioniert:

Problem 2:
Um den kompletten Inhalt eines HTML-Elementes auszulesen gibt es folgende Möglichkeit:

Dabei konnte allerdings der XPath durch die SingleQuotes nicht korrekt aufgelöst werden.

Mit getText hats dann geklappt:

Im String tableContent sind dann alle sichtbaren Inhalte der Tabelle, durch Whitespaces getrennt, enthalten.

JMeter und SSL-Verbindungen

Für das verteilte Testen von Anwendungen mit JMeter ergibt sich die Problematik das man bei verschlüsselten Verbindungen in den JMeter-Clients bei jedem Start das Zertifikatspasswort eingeben müsste. Um dies zum umgehen kann man einen Keystore generieren und diesen dann in den JMeter-Properties angeben.

Den Keystore erzeugt man sich mit keytool, welches mit Java ausgeliefert wird.

Achtung: Das Passwort für den Keystore muss identisch sein mit dem Passwort des Zertifikates
Die Erzeugung des Keystores mit diesen Parametern funktioniert nur mit Java-6.

in den jmeter.properties müssen folgende angaben gemacht werden:

Bei Änderungen in den jmeter.properties muss JMeter neu gestartet werden.

Die Lösung lässt sich natürlich auch für Einzelplatz-Test benutzen. Übrigens wenn man den „normalen“ Weg über den SSL-Manager geht, nicht wundern das die Zertifikatspasswordabfrage nicht erscheint wenn man das Zertifikat gerade hinzugefügt hat. Die Nachfrage nach diesem Passwort kommt erst wenn man den Test startet.

Struts & Spring

Kurzanleitung um eine Seite mit Struts und Spring zu erstellen.
Ziel ist es eine URL foo.do aufzulösen und eine JSP aufzurufen, wobei die Inhalte der JSP über eine extra Transformationsklasse populiert werden sollen. Zusätzlich soll ein URL-Parameter ausgewertet werden. Hierbei handelt es sich um eine spezifische Beschreibung einer bestehenden Ausgangskonfiguration und ist nicht allgemein anwendbar.
Struts & Spring weiterlesen