cocoon-users-fr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Wallez <sylv...@apache.org>
Subject Re: Question sur le block spring-app
Date Tue, 25 Oct 2005 13:23:11 GMT
Laurent Perez wrote:
>> Je proposais une approche un peu plus compliquée, mais qui fonctionne en
>> dehors du flowscript. Effectivement, si c'est seulement dans le cadre du
>> flowscript, cette approche est bonne aussi (et plus simple).
>>     
>
> Disons que si je pouvais eviter de me servir du flow, ça serait mieux en effet.
>
> Mais comment peut-on détecter à partir de quand le "vrai" resolver
> est-il disponible si je n'utilise pas de flow ? Et comment ensuite
> toucher à ce resolver ? En fait je ne comprends pas trop comment
> utiliser un composant ThreadSafe pour ça, ou comment je peux donner le
> "vrai" resolver à mon bean en évitant de passer par du flow.
>   

L'intérêt du composant ThreadSafe, c'est qu'il est initialisé par Cocoon 
au démarrage du système. C'est donc un bon moyen de mettre en relation 
Spring et le Resolver au démarrage.

Allez, rien ne vaut un bon bout de code plutôt qu'un long discours:

public class SringContextSetupHelper implements ThreadSafe, 
Contextualizable, Serviceable {
    private Context ctx;

    public void contextualize(Context ctx) {
        this.ctx = ctx;
    }

    public void service(ServiceManager manager) {
        // on prend le contexte Servlet dans le contexte Avalon
        org.apache.cocoon.environment.Context servletCtx = 
(org.apache.cocoon.environment.Context)ctx.get(CONTEXT_ENVIRONMENT_CONTEXT);

        // et on prend le contexte Spring dans le contexte Servlet
        ApplicationContext springCtx = (ApplicationContext) 
servletCtx.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_yCONTEXT_ATTRIBUTE);

        SourceResolver resolver = 
(SourceResolver)manager.lookup(SourceResolver.ROLE);

        MyBean myBean = (MyBean)springCtx.getBean("myBean");
        myBean.setResolver(resolver);
    }
}


Beaucoup de contextes, mais au bout du compte on y arrive!

Ton composant peut aussi implémenter l'interface Disposable s'il est 
nécessaire de faire le ménage lorsque le système s'arrête.

Sylvain

-- 
Sylvain Wallez                        Anyware Technologies
http://people.apache.org/~sylvain     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Mime
View raw message