Zertifikat mittels keytool in einen Keystore importieren

Unter Java ist es möglich mit sogenannten Keystores zu arbeiten. Dabei handelt es sich um Containerdateien in welchen Zertifikate gespeichert werden können. Diese können dann z.B. beim Start eines Tomcat mit übergeben werden. Damit sind die Zertifikate der Java-Applikation bekannt. Möchte man ein solches Zertifikat in einen Keystore importieren, so nutzt man das Tool keytool:

keytool -importcert -file server-ca-web.pem -keystore store.jks -alias "server-ca-web"

Das Tool ist im Java SDK enthalten und wird für die Verwaltung der Keystores genutzt. In diesem Fall wird das Zertifikat server-ca-web.pem in den Keystore store.jks geschrieben.

Reguläre Ausdrücke online testen

Reguläre Ausdrücke sind mächtig. Wenn man einen solchen Ausdruck entwickelt z.B. um eine Zeichenkette zu extrahieren, ist es enorm hilfreich das ganze zeitnah zu debuggen. Mit der Webseite regexr.com gibt es dafür einen Dienst mit welchem eigene reguläre Ausdrücke schnell überprüft und getestet werden können. Dabei wird der Ausdruck auf der Seite eingegeben und anschließend gegen den angegebenen Text überprüft.

regexr.com

regexr.com

Daneben bietet der Dienst eine Reihe von Zusatzfunktionalitäten, wie die von Nutzern befüllte Bibliothek von regulären Ausdrücken für bestimmte Funktionalitäten. Der Quelltext des Dienstes ist auf GitHub zu finden – er ist unter der MIT-Lizenz lizenziert und damit freie Software.

Maven Enforcer Plugin temporär deaktivieren

Für das Build-Management-Tool Maven gibt es eine große Anzahl an Plugins mit welchen die Funktionalität von Maven erweitert werden kann. Eines dieses Plugins ist das Maven Enforcer Plugin. Dieses Plugin überprüft, ob die Abhängigkeiten zwischen JDK, Bibliotheken und vielem mehr gegeben sind. Ist dies nicht der Fall, wird der Kompiliervorgang abgebrochen. Möchte man diese Überprüfung temporär deaktivieren muss die Kommandozeile um den Parameter -D enforcer.fail=false erweitert werden:

mvn clean compile -D enforcer.fail=false

Damit wird die Funktionalität des Enforcer Plugins für den Vorgang deaktiviert. Mittelfristig sollen natürlich die Abhängigkeiten korrigiert werden, sodass der Vorgang mit aktiviertem Plugin erfolgreich durchlaufen werden kann.

Einfachen Alert unter Android erzeugen

Möchte man in einer Android-App einen Alert (in etwa das Äquivalent zu einer MessageBox) erzeugen, so kann der AlertDialog dafür genutzt werden. Dieser stellt dabei einen Builder zur Verfügung mit welchem der Dialog schnell erstellt ist:

AlertDialog dialog = new AlertDialog.Builder(view.getContext()).create();

dialog.setTitle("Warnung");
dialog.setMessage("Bild konnte nicht gesendet werden.");

dialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });

dialog.show();

In dem Quelltext wird eine neue Instanz des AlertDialog-Builders mit dem Kontext des aktuellen View angelegt. Mit Hilfe des Builders wird der Titel und die Nachricht des Dialogs festgelegt. Anschließend wird ein OK-Button definiert und dieser mit einer Funktionalität versehen. Danach wird der Dialog mittels der show()-Methode angezeigt.

REST-Server mit Grapevine aufsetzen

In den letzten Tagen habe ich für ein Projekt einen REST-Server geschrieben. Der Server läuft unter .NET bzw. Mono – also war ich auf der Suche nach einer passenden Bibliothek bzw. einem Framework, welches mich bei dem Aufsetzen eines solchen Servers unterstützt. Nach einem Blick auf Nancy und einigen anderen Frameworks bin ich schlussendlich bei Grapevine gelandet.

sukona.github.io

sukona.github.io

Dabei handelt es sich um eine Bibliothek, welche neben einem REST-Client auch einen REST-Server bereitstellt. Das Hauptaugenmerk der Entwicklung wird dabei auf den REST-Server gelegt. Mit Hilfe des Frameworks lässt sich ein REST-Server mittels weniger Zeilen Quellcode aufsetzen:

ServerSettings settings = new ServerSettings();
settings.Host = "localhost";
settings.Port = "1111";

RestServer server = new RestServer(settings);
server.Start();

In diesem Beispiel werden die Einstellungen für den Server angelegt und anschließend dem Server übergeben. Danach wird der Server mit der Methode Start hochgefahren. Damit verfügt man zwar über einen REST-Server, dieser verfügt allerdings über keinerlei Methoden was die praktische Verwendung eher erschwert. Ressourcen für den Server werden mittels des Attributes RestResource markiert:

[RestResource(BasePath = "/time/")]
public class TimeModule
{
    [RestRoute(PathInfo = "date")]
    public IHttpContext GetDate(IHttpContext context)
    {
        context.Response.SendResponse(Grapevine.Util.HttpStatusCode.Accepted, getDate());
        return context;
    }
}

Über das Attribut RestRoute wird eine Methode für Grapevine gekennzeichnet – das Pathinfo definiert dabei den Pfad über welchen diese aufgerufen werden kann. Durch den über das Attribut RestResource festgelegten BasePath lautet die vollständige URL für die Ressource:

http://localhost:1111/time/date

Wird diese Methode per GET aufgerufen, so wird das aktuelle Datum zurückgegeben. Damit ist ein minimaler REST-Server mit einer Ressource implementiert. Grapevine selbst ist unter der Apache Lizenz lizenziert und damit freie Software. Der Quelltext der Bibliothek befindet sich auf GitHub.