Validační server - automatická kontrola semestrálních prací

Konfigurace domény

Zpět na hlavní stránku

Konfigurační soubor domény je uložen v adresáři domény a obvykle se jmenuje domain.xml (název záleží na nastavení parametru "domain.properties_file" v konfiguraci serveru).

Domény a jejich nastavení se načítají během spouštění serveru, jakékoliv změny v nastavení nabydou platnosti až po restartu celého serveru. Jedná se o soubor ve formátu pro Java-Properties (viz DTD). Následuje seznam a popis jednotlivých nastavení:

Název položkyPopis
domain.enabledPouze pokud je tato položka uvedena a pokud obsahuje hodnotu "1" nebo "true", je tato doména při startu serveru či při reloadu domény načtena a považována za aktivovanou.
max_file_sizeMaximální velikost odevzdávaného souboru v KB. Není-li uvedeno, velikost není omezena.
accept_extensionsSeznam akceptovaných přípon souborů, oddělených čárkou. Pokud není uvedeno nebo je uveden znak '*', jsou akceptovány všechny přípony. Pozor, tento seznam je case-sensitive, tedy java není JAVA!

Příklad: "java,c,pas"

max_validation_timeMaximální doba trvání celého procesu validace ve vteřinách.
domain.classpathJe možno určit cesty k dalším třídám, které jsou potřeba pro běh domény. Standardně (tj. vždy - ať je uvedeno či není) je ClassPath domény nastaveno na adresář domény. Zde je možno uvést další cesty k podadresářům domény či k JAR souborům obsahujícím potřebné externí třídy. Seznam je oddělen středníky ';' a jeho formát jsou cesty na adresáře či JAR soubory, které jsou RELATIVNÍ k adresáři domény a neobsahují na začátku lomítko! (Jinými slovy - server k těmto cestám přidá jako prefix "file:" + absolutní cestu k adresáři domény + lomítko).

Pokud je na začátku uvedené lomítko, pak se cesta považuje za absolutní!

Odkazuji na Java API třídy java.net.URLClassLoader, kde je formát přesně popsán - chcete-li přidat cestu na adresář, zapíšete cestu k tomuto adresáři a přidáte na konec lomítko. Není-li na konci lomítko, považuje se to za cestu k JAR souboru.

ClassPath domény se využívá v těchto případech:

  • Načítání ResourceBundle domény
  • Načítání dalších tříd uvedených v konfiguraci domény (např. viz "CustomOutput")
  • Překlad Java compilerem - compileru jsou tyto cesty předány parametrem "-classpath ".
  • Načítání tříd, které jsou referencovány ze scriptů této domény.
resource_bundleNázev souboru s lokalizačními hláškami pro tuto doménu. Cesta je relativně vůči adresáři domény!

Příklad: nl.ppa1

V tomto příkladu je poté například soubor ppa1_cs.properties umístěn v adresáři <doména>/nl

java_policy_filePro případ, kdy jsou spouštěny javovské třídy během validace, je možné nastavit bezpečnostní java policy pro toto spuštění. Více informací viz kapitola o bezpečnosti.
compiler.java.optionsV případě, že je touto doménou použit Java Compiler, udává případné další parametry, které se mu mají při volání předávat. Tedy například classpath a další. Pozor na cesty k souborům, jistota je použít absolutní cesty, ale měly by fungovat i relativní cesty z hlavního adresáře validačního serveru. Nedoporučuji tímto měnit classpath pro kompilaci, na to je lepší použít nastavení domain.classpath, které má vliv pak i na načítání tříd atd.

Příklad: "-Xlint:all"

CustomOutput: Podpora pro libovolné třídy zpracovávající výstup validace
custom.output.classesSeznam názvů tříd, které mohou být připojeny k doméně (např. z externího JAR souboru pomocí "domain.classpath", viz výše) a které mohou zpracovávat výstup validace. Například jej mohou ukládat do databáze atd. Názvy tříd jsou odděleny středníkem ';'.

Tato schopnost validačního serveru je velmi silná, umožňuje defakto připojovat "pluginy", které mohou s výsledkem validace naložit zcela libovolně - lze tedy doprogramovat jednoduše funkčnost, která například uloží výsledek validace do nějaké externí databáze.

Doména si při svém načítání vytvoří instance všech těchto tříd a poté volá příslušnou metodu po každé validaci. Tato třída musí splňovat následující podmínky:

  • Mít konstruktor bez parametrů a bez výjimek.
  • Implementovat rozhraní CustomOutput. To jinými slovy znamená, že třída musí
    • Mít inicializační metodu se signaturou
      public void initialize(ValidationDomain domain) throws Exception;

      Tato metoda si může prostřednictvím domény například načíst další svoje konfigurační údaje z konfigurace domény. Vyhodí-li metoda výjimku, je logována a je přerušeno nabíhání serveru.

    • Mít metodu pro zpracování vlastního výstupu validace:
      public void perform(FullValidationResult result);

      Z instance třídy FullValidationResult lze získat veškeré info o vstupu, průběhu a výstupu validace. Metoda by neměla vyhazovat žádné výjimky. Pokud přesto vyhodí, je výjimka logována a běh serveru pokračuje dál.

    • Mít metodu pro ukončení činnosti:
      public void close();

Následují sekce pro jednotlivé podporované třídy, které mohou být použity jako "CustomOutput". Každá z těchto tříd požaduje některá další nastavení domény, která jsou uvedena dále v tabulce.

CustomOutput: cz.zcu.validationserver.output.HTMLResultOutput
html_output_typeUrčuje, jakým způsobem generovat výstup do HTML. Jsou 2 možné způsoby - generovat soubory na disku validačního serveru - "file" (pak jsou zohledněny ještě položky "html_output_dir", "html_output_url" a "html_css_url") či negenerovat soubory, ale pouze vrátit řetězec obsahující HTML (bez hlaviček) ve výstupu validace jako 'customResultParameter' - "string" (viz ValidationResult a CustomParameterConstants).

Možné jsou také oba (či žádný) způsoby, čili hodnota tohoto parametru je seznam metod (file, string) oddělený čárkou.

Příklad: "file"

Příklad: "file,string"

Příklad: "string,file"

Příklad: "" (nic)

html_output_dirCesta, kam se ukládají výsledné HTML soubory s výsledky validace. Je možno uvést absolutní cestu v celém filesystému či cestu relativní, která je v tom případě brána vůči startovnímu adresáři validačního serveru.

Příklad: /var/www/validator/ppa1

html_output_urlV případě, že se HTML soubory generují, musí být uveden začátek URL adresy, pomocí níž se klienti přes www prohlížeč dostanou k adresáři zadanému předchozí direktivou. Musí obsahovat i lomítko za posledním adresářem.

Příklad: http://vs.kiv.zcu.cz/validator/ppa1/

html_output_levelÚroveň, od které se zahrnují jednotlivé položky z FullValidationResult (tj. z výstupu validace) do výsledného HTML. Možné hodnoty:
  • 'INFO' (nebo 'ALL'): Zahrnuje všechny položky (tedy všechny úrovně INFO, WARNING i ERROR)
  • 'WARNING': Zahrnuje Položky WARNING A ERROR
  • 'ERROR': Zahrnuje pouze položky ERROR

Není-li tato položka uvedena, vypisují se všechny výstupy (tj. default je 'INFO').

html_css_urlUdává odkaz na css styl, který se bude přidávat do všech vygenerovaných HTML. Odkaz může být absolutní či relativní - přímo jak je zde uveden se vloží do generovaných HTML.
html_show_header0|1, default 1. Zda v HTML výstupu ukazovat hlavičku, tj. tabulku se souhrnnými informacemi.
html_show_file_name0|1, default 1. Zda v HTML výstupu ukazovat název validovaného souboru.
CustomOutput: cz.zcu.validationserver.output.XMLResultOutput
xml_result_fileCesta k souboru v XML formátu s jednoduchým "logem" proběhlých validací. Více informací poskytne Pavel Herout (herout at kiv.zcu.cz), který tento soubor využívá. Je možno uvést absolutní cestu v celém filesystému či cestu relativní, která je v tom případě brána vůči startovnímu adresáři validačního serveru.
CustomOutput: cz.zcu.validationserver.output.AbstractMySQLOutput
CustomOutput: cz.zcu.validationserver.output.PPA1MySQLOutput (konkrétní implementace pro předmět PPA1)
output.mysql.server_nameAdresa MySQL serveru
output.mysql.databaseDatabáze
output.mysql.user_nameUživatel
output.mysql.passwordHeslo
Další
< libovolné další >V konfiguračním souboru domény může být dále umístěno libovolné množství dalších nastavení - ta se poté mohou využívat ve scriptech procesu validace.

Poznámka: Zde jsou popsány pouze položky specifické pro doménu, tj. ty, které není možné definovat i globálně pro celý server - ty jsou uvedeny na stránce o konfiguraci serveru a je u nich v tabulce uvedeno písmeno D.

Pro ilustraci je k dispozici ukázkový soubor domain.xml.

Zpět na hlavní stránku

autor: Lukáš Valenta, září 2007 (lukas.valenta at seznam.cz)