WebKiv: OpenCmsBestPractices |
from Wiki KIVu |
OpenCms dává k dispozici silný nástroj v podobě Log4J. Tento nástroj se dá použít k logování do standardního logu celého OpenCms, to je však pro vývoj vlastních modulů velice nepraktické. Lepší je tedy určitě logovat do svého samostného souboru. Návod na to: Jak vytvorit logovaci soubor pro jednotlive moduly do opencms.
Problém se týká toho, že pokud definuji nějaké beany v konfiguračních souborech bez toho, abych si je před tím jako javovské třídy vytvořit, zkopíroval na OpenCms a publikoval, dojde k tomu, že OpenCms nahlásí při startu chybu ClassNotFoundException
a nespustí se – nemá žádnou možnost, jak zjistit, že tyto třídy existují. Z tohoto důvodu je vždy potřeba nejprve vytvořit třídy, zkopírovat je na OpenCms, publikovat a až poté je možní měnit konfigurační soubory OpenCms a restartovat Tomcat.
Ačkoliv nabízí plugin do Eclipse také možnost toho, vytvořit modul již v Eclipse a poté jej nakopírovat do OpenCms, je více osvědčeným způsobem vytvořit si modul v OpenCms, ten si do Eclipse pomocí tohoto pluginu stáhnout a zde editovat. Pro opětovné nakopírování na OpenCms se také více osvědčila možnost pouhého Copy to OpenCms Server – přímé publikování z Eclipse není na sto procent spolehlivé.
Poté, co v OpenCms vytvoříte modul, je potřeba počítat s tím, že Eclipse module developer načítá seznam modulů z OpenCms jen jednou. To znamená, že se musíte držet následujícího pořadí: 1. Vytvořit modul v OpenCms 2. Publikovat modul v OpenCms 3. Použít Eclipse průvodce pro vytváření – import modulu z OpenCms do Eclipse Pokud se Vámi vytvořený modul neobjeví ve seznamu nabízených modulů z OpenCms je potřeba zkontrolovat, zda je pagin nastaven na správnou instanci OpenCms (pokud jich máte současně nainstalováno více) a eventuelně restartovat Eclipse.
Pokud budete vyvíjet modul na jednom počítači v jednom prostředí a poté budete vývoj přenášet například ke kolegovi, na jiný počítač je zapotřebí mít na paměti následující: Pokud se jedná o modul, který na druhém OpenCms zatím vůbec neexistuje, není možné jej na toto OpenCms z Eclipse nakopírovat!!! Pouhé použití funkce Copy to OpenCms Server v Eclipse nestačí! Je nutné si na originálním OpenCms modul vyexportovat: Administration View – Module Management – VYBRAT MODUL – Export Module. Toto vytvoří jednoduchý zip soubor v adresáři: OPENCMS_HOME\WEB-INF\packages\modules
. Tento soubor se jmenuje stejně jako modul: cz.zcu.kiv.XXXX.
Takto vyexportovaný modul je poté potřeba na druhé OpenCms neimportovat: Administration View – Module Management – Import module with http. V otevřeném dialogovém okně jednoduše zadáte cestu k souboru s modulem a potvrdíte. Modul se naimpotuje a publikuje (neuškodí, pokud publikování ještě manuálně zkontrolujete). Poté je již možné z eclipse tento modul na tomto OpenCms standardním způsobem kopírovat.
Tento bod je zvláště důležitý také proto, že OpenCms všechny třídy, které si ve svých modulech vytvoříte, kopíruje do adresáře OPENCMS_HOME/WEB-INF/classes
(jak je standardně od Java EE aplikace očekáváno) a zde jsou také Springem hledány (kde jinde než na classpath... ) A pokud OpenCms interně modul nevytvoří, neprovádí ani tuto činnost a Spring poté může hlásit chyby, protože své třídy prostě nenajde.
Pokud ve vašem projektu v Eclipse použijete nějaký xml soubor, nebude možné tento projekt - modul na OpenCms nakopírovat. Je to z toho důvodu, že OpenCms potřebuje ke všem xml souborům jejich xsd. Uvedené omezení lze například vyřešit tak, že soubor XXX.xml
přejmenujete na XXX.cnf
. Platí , pokud chcete ve vašem modulu mít např. další konfigurační soubor Springu.
Pokud vyvíjíte modul cz.zcu.kiv.XXX, je možné nastavit OpenCms tak, aby po startu automaticky ukazovalo na tento modul – nemusíte se poté zdlouhavě proklikávat několika adresářem: V hlavním okně zvolte Preferences a zde si dle svého přání nastavte hodnotu pole Start with folder .
Zpět na FrameworkyProWebKiv