WebKiv: OpenCmsBestPractices

from Wiki KIVu

Během vývoje pro OpenCms byla sesbíráná následující množina Best Practices

Logujte hodně a do samostatných souborů

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.

Nejdříve vytvořte třídy, nahrajte je na OpenCms a až poté měňte xml konfigurační soubory

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.

Moduly vytvářejte v OpenCms

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é.

První import modulu do Eclipse

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.

Přenos vývoje mezi více instancemi OpenCms

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.

V Eclipse projektu nepoužívejte xml soubory

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.

Tip pro urychlení práce

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

Retrieved from http://wiki.kiv.zcu.cz/WebKiv/OpenCmsBestPractices
Content last modified on 30 June 2009, 09:18