Tomcat6, Java, JDBC4, eine MySQL-Datenbank und “Communications link failure”

Damit uns der Einstieg in unser Semester-Projekt nicht so schwer fällt haben wir eine Muster-Anwendung inklusive Anleitung bekommen. Wir benutzen Java und wollen eine Web-Anwendung schreiben. Als Web-Server benutzen wir Tomcat6 und für die Datenbank MySQL.

Soweit so gut. VirtualBox war schon installiert, Ubuntu in ein paar Minuten heruntergeladen und kurze Zeit später lief mein Developpement-System. Tomcat6, JDK, eclipse, MySQL, etc waren schnell installiert und alles lief super. Die Homepage wurde angezeigt… und als ich mich “Registrieren” wollte:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

Vollständige Fehlermeldung: http://bin.esheep.ch/2

Mit dem Befehl:

telnet localhost 3306

Konnte ich zum Server verbinden, Die Datenbank war also erreichbar. Ich prüfte die Konfiguration der Datenbank. Der Benutzer war korrekt eingerichtet, die Tabelle vorhanden (alles korrekt und so wie es in der Anleitung stand). Schlussendlich lag der Fehler daran, dass zwar die Datenbank erreichbar ist, jedoch Tomcat die Registrierungs-Anwendung nicht verbinden lies. TCP-Verbindungen sind mit den Default-Einstellungen vebroten.

Mit folgendem Befehl kann das init-Script geöffnet werden:

sudo EDIT /etc/init.d/tomcat6

Da muss anschliessend die Zeile “TOMCAT6_SECURITY=yes” gesucht und durch “TOMCAT6_SECURITY=no” ersetzt werden. Falls vorhanden, muss das Kommentarzeichen vor der Zeile entfernt werden.

Anschliessend Tomcat neu starten:

sudo /etc/init.d/tomcat6 restart

Viel Spass mit Tomcat, Java und MySQL 😉

GSView – PDF drucken

An der Hochschule, an welcher ich zur Zeit studiere gibt es immer wieder Diskussionen ob das “kostenlose Drucken” abgeschafft werden soll, den immer mehr Studenten missbrauchen das Ganze und drucken vollständige Vorlesungsscripts und teilweise sogar Bücher aus. Um dem Abhilfe zu schaffen wurde eigens ein Dienst eingerichtet, welcher es ermöglicht (gegen ein kleines Entgelt) Scripts, etc. drucken zu lassen. Einerseits bleibt so die normale Infrastruktur frei wenn sie benötigt wird (z.B. um die gelösten Aufgaben auszudrucken) andererseits gibt es weniger Fehldrucke und die Scripts werden auch gleich gebunden. So weit so gut. Einzelne Professoren nutzen den Dienst auch wirklich, oder bieten selbst an die Scripts zu drucken und verkaufen diese dann den Studenten (i.d.R. zum Selbstkostenpreis). Es gibt allerdings immer wieder Professoren, welche die Übungsserien im Script integrieren. Repetierende Studenten haben dann meistens bereits ein Script und die gelösten Übungen und möchten nur noch einen Satz neue Übungen. Sollte ja auch kein Problem sein, denn diese sind im Internet als PDF verfügbar, allerdings nicht druckbar (da der Professor denkt, dass die Studenten sonst das Script nicht mehr kaufen und alles selber drucken).

An dieser Stelle kommt GSView ins Spiel. GSView ermöglicht es Postscript-Dateien, sowie PDFs und eine Reihe weitere Formate zu öffnen, zu konvertieren oder zu drucken. Dabei werden die Kopierschutzmassnahmen von Adobe ignoriert. Sofern die Studenten verantwortungsvoll damit umgehen, ist das wirklich praktisch. Die aktuelle Benutzung der Drucker lässt zwar auf anderes schliessen, allerdings braucht es bei 13’000 Studenten nicht wirklich viele schwarze Schafe damit dieser Eindruck entsteht 😉

Hier bekommt man GSView:

http://pages.cs.wisc.edu/~ghost/gsview/index.htm

Anmerkung: Das Programm ist schon etwas in die Jahre gekommen, funktioniert aber bei den meisten PDF-Dateien recht gut. Probleme gibt es wohl bei Formularen sowie den neueren Features, welche Adobe in der Zwischenzeit eingebaut hat.

Eiffel-Übung: Reversi-Spiel

Als letzte Übung müssen wir ein Spiel programmieren in Eiffel. Inklusive einem grafischen Interface.
Ich habe mich für “Reversi” entschieden. Ich werde die Grafik eher einfach halten, aber dafür eine kleine Spieler-Klasse programmieren, welche mit “MiniMax” oder einem einfachen “AlphaBeta-Algorithmus” Züge sucht.
Ich werde den Quelltext hier oder auf Black-Silence veröffentlichen.
Obwohl wahrscheinlich recht wenige etwas mit Eiffel anfangen können 😉

Hier ist erstmal ein Screenshot:

Der Quellcode folgt noch. Es hat noch einige Unschönheiten drin, allerdings hab ich im Moment keine Zeit alles auszubessern. Ausserdem ist das Ganze ja nur eine Übung 😉

Edit: Alle Spiele welche im Rahmen der Vorlesung programmiert wurden werden hier veröffentlicht: http://games.ethz.ch/09