Institut für Systemsoftware (Markus Löberbauer) Praktikum aus Softwareentwicklung SS 2012 Repository URL: svn://ssw.jku.at/2012S/PSW2/k<MatrNr>/ExtensibleWebServer/ Letzter Abgabetermin: Montag, 30.04.2012, 1200 Uhr Übung 4 Erweiterbarer Webserver (12 Punkte) Implementieren Sie einen erweiterbaren Webserver. Ihr Webserver soll auf eine einstellbare IPAdresse (InetAdress, zB: 127.0.0.1) und Port (zB: 8888) hören (ServerSocket). Arbeiten sie die Anfragen an den Server in Threads ab (entweder mit ExecutorService oder mit einfachen Threads). Es genügt wenn Ihr Webserver Get-Requests versteht. Die Anfrage nach "/" soll mit einer Übersicht über die installierten Aktionen beantwortet werden (siehe Abbildung 1). Abbildung 1. Übersicht der installierten Aktionen im erweiterbaren Webserver. Ihr Webserver soll mit Aktionen erweitert werden können, die Aktionen sollen als Java Services installiert werden können. Die Schnittstelle für diese Aktionen ist in Abbildung 2 gegeben. Der Webserver soll die Aktionen über ihre Namen erkennen, zB: bei einer Anfrage nach "/HelloWorld" zeigt der Webserver das Ergebnis der HelloWorld-Aktion an. Implementieren Sie eine solche Hallo-Welt-Aktion (siehe Abbildung 3) als Java Service und zeigen Sie damit, dass Ihr Webserver erweiterbar ist. Versucht der Benutzer eine Aktion aufzurufen die es nicht gibt soll der Fehler 404 geliefert werden (Abbildung 4). public interface WebAction { String getDescription(); String getName(); void run(String[] arguments, PrintWriter out); } Abbildung 2. Schnittstelle für Aktionen des erweiterbaren Webservers. Abbildung 3. Übersicht der installierten Aktionen im erweiterbaren Webserver. Abbildung 4. Ansicht des Programms wenn die gewünschte Aktion nicht installiert ist. Institut für Systemsoftware (Markus Löberbauer) Praktikum aus Softwareentwicklung SS 2012 Repository URL: svn://ssw.jku.at/2012S/PSW2/k<MatrNr>/ExtensibleWebServer/ Letzter Abgabetermin: Montag, 30.04.2012, 1200 Uhr Übung 4 Such-Aktion (12 Punkte) Implementieren sie eine Suchaktion für ihren erweiterbaren Webserver als Java Service. Die Suchaktion soll ein Wort auf einer Webseite und den darin verlinkten Seiten suchen (Links nur einmal verfolgen). Sie können einen Socket oder eine HttpURLConnection verwenden, um die Webseiten zu laden. Eine Beispielanwendung der Suchaktion ist in Abbildung 5 und 6 gegeben. Abbildung 5. Eingabefelder der Suchaktion. Abbildung 6. Suchaktion nach der Suche von Informatik auf ssw.jku.at. Hinweise Implementieren Sie saubere, kurze Methoden; wählen Sie sprechende Klassen-, Methode- und Variablennamen. Verwenden Sie geeignete Sichtbarkeitsattribute, d.h., so wenig sichtbar wie möglich, so viel sichtbar wie nötig. Halten Sie Ihren Code sauber, d.h., entfernen Sie toten Code, entfernen Sie auskommentierten Code, verzichten Sie auf Vergleiche mit Boolean-Literalen (zB: if (a == true) ... sollte if (a) ... sein) und sinnlose if-Statements (zB: if (a) { return false; } else { return true; } sollte return !a; sein). Geben Sie ihre Klassen in passende packages.