Jelikož jsem zastánce tohoto frameworku, z jichž uvedených důvodů, rozhodl jsem se sepsat pár dobrých triků, které mohou pomoci při vývoji s tímto frameworkem. Dnes začnu asi tou nezajímavější a tím je Hot Deploy, nebo-li rychlá aktualizace některých částí aplikace bez nutnosti provádět celé nahrání aplikace na server.

Hot deploy – NetBeans
Netbeans 6.0 má dost slabou, respektive nulovou, podporu pro tento framework. Jednou z dobrých vlastností Seamu je tzv. hot deploy, kde změny na view vrtvě mohou být aplikovány bez nutnosti provádení undeploy-deploy aplikace. Jedná se zejména o změnu facelets stránek. Takže jak něčeho takového dosáhnout v netbeans?

Stačí vytvořit vlastní „ResourceResolver“, který se poté zaregistruje v web.xml. Příklad takového ResourceResolver:
public class FilesystemResou­rceResolver implements ResourceResolver {
    private static final String PATH_TO_DEVELOPMENT = „/home/ales/dev/ja­va/Irminsul/Ir­minsul-war/web/“;
    public URL resolveUrl(String s) {
        try {
            return new URL(„file“, "", PATH_TO_DEVELOPMENT + s);
        } catch (MalformedURLEx­ception e) {
            e.printStackTra­ce();
            return null;
        }
    }
 }
Poté již stačí uvést registraci do web.xml:

    <context-param>
        <param-name>facelets­.DEVELOPMENT</pa­ram-name>
        <param-value>true</pa­ram-value>
    </context-param>
    <context-param>
        <param-name>facelets­.REFRESH_PERI­OD</param-name>
        <param-value>0</param-value>
    </context-param>
    <context-param>
        <param-name>facelets­.RESOURCE_RESOL­VER</param-name>
        <param-value>irminsul­web.Filesystem­ResourceResol­ver</param-value>
    </context-param>
  
Důležitou součástí je to, aby Seam byl spuštěn v debug módu. Toho lze docílit pomocí definice v components.xml:
<core:init jndi-pattern=„java:com­p/env/Irminsul/#{ej­bName}/local“ debug=„true“/>

Díky vlastní definici „ResourceResolver“, jsou nyní jednotlivé facelets stránky načítány z cesty, která je uvedena v „PATH_TO_DEVE­LOPMENT“. Pro změnu stačí v NetBeans editovat nějakou facelets stránku, uložit změnu a ve webovém prohlížeči provést refresh.

Tato malá pomůcka je ideální zejména ve chvíli, kdy jednotlivé facelets stránky obsahují různé komponenty (rich faces, ajax4jsf, atd.). Podle toho, co jsem se dočetl v Seam dokumentaci, tak se pracuje i na možnosti provádět hot deploy nad EJB. Otázkou je, jestli tato vlastnost není spíš více ovlivněna aplikačním serverem, než tímto frameworkem.
Takový hot deploy nad EJB se dá sice také provést (v debug modu pro AS), ale jedná se o velice omezené možnosti. Není možné vytvořit novou EJB za běhu, zmenu public metod, atd. Jde tedy čistě o vnitřní implementaci uvnitř business metod. Doufám, že se jednou dočkáme změn i v této oblasti.