About me

Mein Bild
Karlsruhe, Germany
Softwareentwickler Java, OSGi, Spring, JEE, JSF

Sonntag, 20. Juni 2010

OpenVPN unter Ubuntu installieren

Als erstes muss man folgendes Paket installieren sudo apt-get install openvpn Kopieren der Beispielkonfiguration sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ Entpacken der Beispielkonfiguration sudo gunzip /etc/openvpn/server.conf.gz Kopieren des Verzeichnisses zur Schlüsselerzeugung sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa2 Zertifikate und Schlüssel generieren Die Datei vars editieren mit: sudo nano /etc/openvpn/easy-rsa2/vars In der Datei sollte man folgende Einträge anpassen export KEY_COUNTRY=DE export KEY_PROVINCE=NRW export KEY_CITY=Düsseldorf export KEY_ORG=”Vpntest” export KEY_EMAIL=”onlyspam@myhomepage.net” Unterverzeichnis keys anlegen: sudo mkdir keys Vars in die Umgebungsvariablen aufnehmen source ./vars Nun Master-Zertifikat und Schlüssel erstellen sudo -E ./clean-all sudo -E ./build-ca Jetzt Zertifikat und Schlüssel für Server erstellen lassen sudo -E ./build-key-server server Common Name muss dabei die von außen erreichbare Domain sein, z:b. auch eine DynDNS Nun werden die Keys für die User angelegt. Hierbei sollte beachtet werden, dass bei Common Name dieses mal der eindeutige Name des Clients erforderlich ist. Also nicht wie zuvor den Server Namen eintragen. Ansonsten wird es bei Loggins der Clients zu Kollisionen wegen gleicher Client-ID kommen. sudo -E ./build-key ersterclient sudo -E ./build-key zweiterclient sudo -E ./build-key dritterclient Benötigt man zu einem späteren Zeitpunkt weitere Zertifikate, muss zuerst die vars als root (sudo -s) erneut gesourcet werden. Danach können wie gewohnt neue Zertifikate mittels ./build-key erstellt werden. Diffie-Hellman-Parameter generieren: sudo -E ./build-dh Danach die .key und .crt Datein an die Clients ausliefern, am besten im gepackten archiv, so dass keine Ascii Übertragungsprobleme entstehen. Nun die Server Konfiguration anpassen: sudo nano /etc/openvpn/server.conf Wichtig die Pfade zu den Schlüssel und Zertifikaten: ca ./easy-rsa2/keys/ca.crt cert ./easy-rsa2/keys/server.crt key ./easy-rsa2/keys/server.key # Diese Datei geheim halten. dh ./easy-rsa2/keys/dh1024.pem # Diffie-Hellman-Parameter # Downgrade privileges after initialization (non-Windows only) user nobody group nogroup

Freitag, 18. Juni 2010

Ausführbare Jar mit Maven erstellen

Wenn man mit Maven eine ausführbare Jar Datei erstellen möchte, kann man dies mit der Kombination aus dependency-plugin und dem jar-plugin erreichen. Mit Hilfe des Dependency-Plugins werden alle transitiven Abhängigkeiten entpackt im Jar Archiv hinterlegt. Aufpassen muss man dabei, wenn man Frameworks wie Spring einsetzt, da in jedem Spring Artefact Dateien mit gleichem Namen existieren, die zur Laufzeit als eine Datei existieren muss, d.h. zudammengefügt werden müssen. Dies kann jedoch das dependency plugin nicht. Dafür muss man manuell eingreigen und die Dateien wie spring.handlers, spring.schemas, spring.tooling selbst erstellen und die Inhalte alle Spring Abhängigkeiten einfügen. Mit Hilfe des Jar Plugin kann man nun noch bestimmen welche Klasse die ausführbare main-Methode enthält. So ist es anschließend möglich das Jar mittels:
java -jar diejardatei.jar
ausführen.

Dienstag, 1. Juni 2010

Generieren von JPA Entities aufrgrund einer DDL mit Maven

Wenn die Datenbank der Contract sein soll, sprich die DDL, dann sollte sich alles an der Datenbank orientieren. Es gibt viele Gründe weshalb nicht der Persistencelayer den Contract bildet. Um nun einerseits den Aufwand zum Implementieren diverser Entities zu minimieren und andererseits auch das Synchronisationsproblem zwischen dem Datenbankschema und dem Persistenlayer bzw. den Entitäten zu beheben, bietet Maven die Möglichkeit ein sog. Reverse-Engineering durchzuführen. Das heißt anhand der Datenbank werden die Entitäten generiert. Im wesentlichen bedeutet dies Konfigurationsaufwand. Man fügt in die POM folgendes Plugin ein und passt es entsprechend an: pom.xml
Eine Verbindung zur Datenbank wird natürlich auch benötigt, dazu benutzt man wie gewöhnlich bei hibernate die hibernate.cfg.xml Datei:
hibernate.cfg.xml
In der reveng.xml kann man Tabellenfilter und Mappingkonfigurationen vornehmen, wie z.B. verschiedene Datentypen von sql in Java gemappt werden sollen:
reveng.xml