Merke: Passphrases in SSL-Zertifikaten hat nicht nur den nervigen Nebeneffekt, bei jedem Neustart des Servers das Passwort eingeben zu müssen. Es kann auch zu langen Fehlersuchen führen!
Das kann z.B. passieren wenn der Server sich unerwartet einfach mal neu startet und dann natürlich mangels Passphrase abbrechen muss. Aber warum sollte der Server sich auch neu starten, in der Crontab ist ja nicht dementsprechendes eingetragen!? Das tut er selbst, aus quasi eigenem Antrieb. Beispielsweise wöchentlich, um seine Logfiles rotieren zu lassen, nachts um drei. Und startet dann nicht mehr. Blöde Passphrases.
16.02.2009
Wenn das Problem auftritt, dass eine Webservice-Methode, die eigentlich einen String erwarten sollte (zB. “setUsername”) meint, einen Parameter vom Typ JAXBElement haben zu wollen, liegt dies an einer inkompatiblen Definition der WSDL. Definitionen à la minOccurs=”0″ für Parameter sind in Java einfach nicht so direkt abbildbar. Ein Quickfix für dieses Problem kann sein, die WSDL lokal zu kopieren und alle minOccurs=”0″ durch minOccurs=”1″ zu ersetzen. Der JAXB-Parser interpretiert dies dann ggf. als Strings.
Eine andere Lösung wäre die Definition eines externen Bindings, leider fehlt mir hierzu Muße und know-how. Der geneigte Leser findet hier weitere Infos.
22.12.2008
Wer sich schon immer gefragt hat, was die Zeitangaben wie “3 Zeilen in $time1 s ($time2 s) geholt” in der Statusleiste des MySQL Query Browsers bedeuten, dem sei gesagt: $time1 ist die Dauer der Übertragung des Ergebnisses von Server zum Client, $time2 die tatsächliche Laufzeit des Statements auf dem Server selbst.

MySQL Query Browser Statusbar
10.11.2008
- Keys auf dem Server erzeugen: ssh-keygen -t dsa
- Public-Key den authorized keys hinzufügen: cat .ssh/id_dsa.pub >> .ssh/authorized_keys
- Den beim Login eines Users auszuführenden Befehl hinterlegen. Dazu einfach in die Zeile des gerade eingetragenen Keys folgendes voranstellen: command=”svnserve -t -r <pfad zum repo>”
- Den Private-Key herunterladen zum Client.
- (Nur für Windows) Private Key umwandeln mit puttygen.exe in ein von putty lesbares Format.
- (Nur für Windows) plink.exe herunterladen (gibts genau wie puttygen.exe auf der Putty-Seite)
- In Netbeans “Versioning->Subversion->Checkout”. “SVN+SSH” auswählen. Host+Repo angeben, im Tunnelcommand eintragen:
- Windows: <pfad zu plink.exe> -l <user> -i <pfad zum Putty-privatekey>
- Unixe: ssh -l user -i <pfad zum privatekey>
Done!
PS: Wenn die Verbindung auf Anhieb nicht funktioniert, versucht einmal den Befehl auf der Konsole auszuführen. Oft hängt es an der Bestätigung des public keys des Servers.
23.10.2008
Heute mal wieder 2h in ein tolles Problem vom Typ “Also DA wär ich ja nie drauf gekommen” investiert: Nach einem deploy meiner kleinen Testapplikation springt mich der Tomcat mit einer FileNotFound-Exception an. Er könne die Datei /Users/<benutzer>/Netbeans/<Projekt>/Shopping.wsdl nicht finden und dementsprechend auch keinen Client dafür generieren. Nun ist es natürlich klar dass er da (auf dem Server) natürlich nichts findet, schließlich bezieht sich der Pfad auf die lokale Kopie der WSDL auf meinem Notebook. Wie aber teilt an seiner Applikation mit, dass sie sich doch direkt das Original aus dem Web laden soll, statt auf eine nicht existente lokale Kopie zu verlassen?
Nach einem Googlen bin ich folgenden Blog-Eintrag von Vivek Pandey gestoßen, der eine passende Lösung parat hat. Mir geholfen hat der Tipp, eine lokale “Katalogdatei” für JAX-WS anzulegen unter “META-INF/jax-ws-catalog.xml”, Inhalt der folgende:
<catalog xmlns=”urn:oasis:names:tc:entity:xmlns:xml:catalog” prefer=”system”>
<system systemId=”http://131.107.72.15/MTOM_Service_Indigo/Soap11MtomUtf8.svc?wsdl”
uri=”Soap11MtomUtf8.svc.xml”/>
</catalog>
Das wars. Wichtig in dem Zusammenhang: “systemId” zeigt logischer Weise auf die remote-URL der WSDL, die “uri” ist der lokale Pfad AUSGEHEND VON jax-ws-catalog.xml! In der Regel sollte dies also etwa wie folgt aussehen: uri=”../wsdl/client/myservice/path.to.myservice/Myservice.wsdl”.
21.07.2008