tom000 - Personal Website - Strona główna
decor1 Serwer HTTP decor2

Plik konfiguracyjny

    Plik konfiguracyjny tego serwera jest plikiem XML, przechowującym informacje niezbędne do działania serwera. Oczywiście informacje te również mogłyby być zawarte bezpośrednio w kodzie źródłowym aplikacji, jednak chęć zmodyfikowania pewnych ustawień aplikacji (np. numer portu na którym ma działać serwer) wymagałaby ponowne jej przekompilowanie.

    Aby wygodnie korzystać ze standardu XML, potrzebne są do jego obsługi odpowiednie biblioteki. W języku Java zostały zaimplementowane wszystkie najważniejsze biblioteki do obsługi tego standardu ([26] str. 987). Do odczytu dokumentu XML w tym serwerze HTTP zostały wykorzystane właśnie klasy wchodzące w skład biblioteki języka Java. Do odczytania i sparsowania pliku posłużyły posłużył model DOM (Document Object Model), oraz klasy: javax.xml.parsers.DocumentBuilderFactoryjavax.xml.parsers.DocumentBuilder. Pierwsza z nich jest fabryką tworzącą i zwracającą obiekt DocumentBuilder, który to zajmuje się parsowaniem pliku XML. W wyniku parsowania otrzymujemy dokument, w którym można wyszukać interesujące nas elementy. W przypadku błędnej struktury pliku XML, podczas parsowania zostanie wyrzucony wyjątek, po którym serwer HTTP przerwie proces uruchamiania, informując użytkownika o błędzie.

    Do wyszukiwania informacji wykorzystany został język XPath. Język ten znacznie ułatwia wyszukiwanie informacji w dokumencie DOM. W Javie do obsługi tego standardu utworzono klasy javax.xml.xpath.XPathFactory i javax.xml.xpath.XPath i tak jak było to wcześniej – pierwsza zwraca obiekt drugiej (XPath), przez który następnie wyszukuje się potrzebne wartości. Do pobrania wartości używa się metody XPath.evaluate(), do której przekazywana jest ścieżka szukanej wartości, węzeł od którego ma się rozpocząć przeszukiwanie, oraz opcjonalnie typ wartości jaka ma zostać zwrócona (dzięki temu nie trzeba później przekształcać z jednego typu na inny).

    Cała klasa przechowująca konfigurację została zbudowana wg wzorca singleton, gwarantując, że będzie istnieć tylko jeden egzemplarz tej klasy, bez znaczenia w którym miejscu aplikacji będzie trzeba odwołać się do danych z pliku konfiguracyjnego. W pliku konfiguracyjnym zawarte są również wytyczne wykorzystywane przy generowaniu odpowiedzi. Pozwalają one na:

  • ustawienie, która aplikacja ma wygenerować odpowiedź dla danego zasobu – zasób musi istnieć w plikach przechowywanych na serwerze; wskazana jest tutaj aplikacja, która powinna otworzyć podany plik i wygenerować odpowiedź; ścieżka do zasobu porównywana jest z wyrażeniem regularnym zapisanym w pliku konfiguracyjnym, co pozwala na dużą dowolność konfiguracji (np. ustawienie interpretera języka PHP dla wszystkich plików w określonym folderze, lub rozpoznawanie interpretera na podstawie rozszerzenia pliku);

  • ustawienie położenie folderu z plikami dla danego wirtualnego hosta – umożliwia m.in. pobranie i zwrócenie różnych rezultatów dla tej samej ścieżki do zasobu, w zależności z jaką nazwą wirtualnego hosta połączył się klient;

  • zabezpieczenie dostępu do danego zasobu identyfikatorem i hasłem – podobnie jak w pierwszym przypadku, adres do zasobu porównywany jest z wyrażeniem regularnym, pozwalając na zabezpieczenie pojedynczego, lub grupy plików pasujących do podanego wyrażenia.

    Informacje te przechowywane są w obiekcie z konfiguracją serwera w formie tablicy (plik XML może przechowywać wiele tego typu wytycznych) i pobierane w momencie generowania przez serwer odpowiedzi.

 

← Parsowanie adresów URL Serwer HTTP Obsługa połączenia →
Copyleft (C) tom000.info 2004-2012. Some rights reserved.