Ahoj,
dal bych prednost asynchronnim metodam v EJB 3.1.
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Petr Franta napsal(a):
> Chtěl jsem se zeptat na váš názor nebo zkušenost s prací ve vláknech J2EE
> aplikací?
> Četl jsem doporučení, že by se vlákna neměla v J2EE vytvářet resp., že
> jsou
> doporučené metody jak to bezpečně dělat (pomocí různých implementací
> timerů
> atd.).
>
> Řeším problém, kdy vlákno (request) potřebuje udělat tři dotazy do třech
> různých databází a ty sloučit do jednoho výsledku. Je velmi pomalé čekat
> na
> doběh jednotlivých dotazů, které jsou na sobě nezávislé.
> Navrhl jsem pro začátek něco takového viz. níže, ale nejsem si jist jestli
> tam není nějaká záludnost:
>
> /** definice pracovní třídy pro práci s DB (obsahuje vše potřebné k
> načtení
> dat) */
> public class DbWorker implements Callable<Result> {
> ...
> }
>
> /** voláno z requestu */
> ExecutorService executor = Executors.newFixedThreadPool(MAX_THREADS);
> List<Future<Result>> res = new ArrayList<Future<Integer>>();
>
> for (DbTask task : tasks) {
> // načtení dat
> res.add(executor.submit(new DbWorker(task, ...)));
> }
>
> // čekej na dokončení vláken
>
> // Zpracování načtených dat
> for (Future<Integer> future : res) {
> System.out.println(future.get());
> }
>
> Petr
>