From: the_peuffeur@voila.fr
Date: 03/06/2002 - 11:50
Merci pour ta rponse Frdric mais je ne suis pas sur de bien comprendre.
Ce que j'aimerai faire c'est compiler les xsl au dmarrage du serveur Tomcat grace une servlet en autoload (donc une seule compilation par xsl) et actuellement ca semble fonctionner pour plusieurs utilisateurs accdant une mme servlet malgr ce que dit la doc.
Est-ce qu'il y a quelque chose que je n'ai pas bien compris ?
Si dans cette utilisation il y a des problmes, je ne vois qu'une solution : crer un pool de xsl compiles (je ne sais pas encore comment mais ce doit tre faisable) ...
Pour info, voici un bout de mon code :
InputStream XSLis = XSLTransformerCollection.class.getResourceAsStream(uri);
StreamSource xslSource = new StreamSource(XSLis);
xslSource.setSystemId(XSLis.toString());
TransformerFactory tFactory = TransformerFactory.newInstance();
Templates myTemplates = tFactory.newTemplates(xslSource);
Transformer retour = myTemplates.newTransformer();
// stockage de la xsl compilee en attribut d'1 singleton
lstTransformerStyle.put(cle,retour);
Merci de vos suggestions.
Frdric.
> the_peuffeur@voila.fr wrote:
> > J'utilise la version de Xalan J 2.2 et j'ai lu quelque part qu'il
> > fallait utiliser une nouvelle instance de xalan pour chaque appel
> > une xsl compile (il semblerait y avoir des problmes quand plusieurs
> > threads utilisent la mme instance de xalan).
> > Dans mon appli Java je compile mes XSL une seule fois et je les stocke
> > en attribut d'un singleton, puis partir d'une servlet je fais appel
> > une mthode sur le singleton pour rcuprer la xsl compile et je ne
> > semble pas rencontrer de problmes, je suis en phase de dev donc j'ai
> > essay avec seulement 3 connexions simultanes.
> > Quelqu'un peut-il me confirmer ou m'infirmer que je rencontrerai des
> > problmes, y a t-il une autre solution avec xalan sans recompiler les
> > xsl ? Pour info la transformation se fait en environ 200 400 milli
> > secondes au lieu de 2 3 secondes (suivant les flux XML) !
>
> > Merci de vos remarques et suggestions.
>
> Pour faire une transformation XSLT, il faut utiliser l'objet Transformer
> (javax.xml.transform.Transformer). Celui-ci n'est pas thread safe,
> d'ailleurs la doc l'indique clairement :
> "An object of this class may not be used in multiple threads running
> concurrently. Different Transformers may be used concurrently by
> different threads."
>
> C'est la raison pour laquelle, dans un contexte de processus
> concurrents, l'utilisation de la classe Templates est un passage
> oblig (javax.xml.transform.Templates). La doc est claire aussi sur
> ce point :
> "Templates must be threadsafe for a given instance over multiple threads
> running concurrently, and may be used multiple times in a given session."
>
> On utilisera alors un Transformer qui sera cr par l'instance de
> Templates pour ne pas avoir de problme.
> Templates t=...
> Transformer tr = t.newTransformer()...
>
> donc pour conclure, il y a effectivement des prcautions prendre
> pour utiliser ces objets de faon concurrente.
> Les objets Templates permettent d'y rpondre, maintenant vous pouvez
> toujours envisager de "synchroniser" la transformation pour viter
> la compilation des feuilles de styles, en ayant bien l'esprit
> le cot que cela peut avoir (goulet d'tranglement, attente des autres
> processus, mise en place de thread pour pallier a... et j'en passe..)
>
> De toute faon, les feuilles de style, qu'elles soient compiles par
> vos soins (via l'objet Templates) ou par la machine (par son propre
> mcanisme), elles le seront forcement (compiles) un moment donn...
> donc...
>
> cordialement
>
> --
> Frdric Laurent
> http://www.opikanoba.org
>
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
>
> Cette liste est a votre disposition pour discuter en francais de
> tout sujet technique lie a XML.
>
> Pour resilier votre abonnement, envoyez un message contenant
> la commande "unsubscribe" a xml-tech-request@xmlfr.org
> (mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
>
>
____________________________________________________________
Faites un voeu et puis Voila ! www.voila.fr
Avec Voila Mail, consultez vos e-mails sur votre mobile Wap.
ޝy֜\߭\{kͫz^i_ܢhmi_)ߢy֜.+-yם*'imyqW뢸!~+ mzX笵趷h+bzhb˭z~qלxby>"'kywz{^2{;,j{^핧(fu맲ryfל-i_fל-i_Jy
Archive gnre par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|