[Java lista] flush()

István Viczián viczian.istvan at gmail.com
2007. Jan. 23., K, 22:44:40 CET


Üdv,

szeretnék élharcosként fellépni a flame-warban, a thread-ek oldalán,
számomra az egyik legkényesebb téma. :)))
Az a bajom, hogy futótűzként terjed, hogy web-konténerben ne indítsunk
szálakat, az összes állásinterjún ezt hallom, listákon, fórumokon.
Szegény kezdőkett meg beszivatjuk vele, adják tovább, manapság már a
teljes magyar Java társadalom ebben a hitben él.

Én is így kezdtem, volt egy egyszerű hosszan futó, nem általunk
kontrollált - értsd írt - tárolt eljárás. No, mondták, hogy akkor JMS,
meg asynch design pattern, meg minden. Ez régen volt, tudta egy
alkalmazásszerver, jó használjuk azt, EJB-k orrba szájba, JMS kezelés,
connection-ökkel, session-ökkel, producer, consumer, minden...
Természetesen rohadt macerás lett, a JMS implementáció is vérzett, EJB
szabvány sem volt kiforrott. Nem működött, ahogy kellett volna.
Osztán persze rájöttünk, ez így nem, legyen egy thread, kb. 20 sor
lett a kód. Azóta maximálisan megszűntek a rendszerrel szembeni ilyen
irányú panaszok.
Nem tagadom, biztos nem volt megfelelően kezelve a JMS, de sokkal
könnyebb elrontani, mint a thread-eket, nagyobb infrastruktúra kell
alá.

Szóval valaki mutasson már egy KONKRÉTUMOT, hogy miért nem (akárcsak
ajánlott) thread-et használni web-konténerben? Ez városi legenda!!!
Valaki nem jól olvasta a spckót.

Az EJB-ben nem ajánlott fájlokat kezelni, java.io csomag, ClassLoader,
Security Manager, socket tiltott, akkor a web-konténerben is? Miért
csak a thread lett kiemelve?
EJB 2.1 szabvány 25.1.2 Programming restrictions!

Mit csinál az egyszeri ember, akinek egy web-konténere van (Tomcat)?
Mondjuk JMS implementáció, vagy ütemező (Quartz) hogy működik? Néztem
forrást, fordítottam már vissza több kommerciális JMS kliens
könyvtárat, mindegyiknél ott vannak a szálak. Quartz pl.:
org.quartz.core.QuartzSchedulerThread.
A Quartz fejlesztőinek mért szabad, nekünk meg miért nem? Az nem a
konténer része, ugyanolyan osztály, mint amit mi írunk.

Persze ésszel kell csinálni. Szóval ebben a vitában engem már csak egy
jól megírt programban talált dead-lock-kal lehet meggyőzni!

Ne szivassuk már be a kezdőbbeket!

Viczi

On 1/23/07, Zoltan Mozes <Zoltan_Mozes at epam.com> wrote:
> Threading ugye akkor lesz kényes téma amikor entitások életciklusa jön szóba. Servletnél gyanítom ez nem annyira rázós, viszont EJBk esetén pont _ez_ az oka amiért nem javasolt játszani.
>
> Egyébként meg ahogy az előttünk szóló írta: Message Driven Bean == async vezérlésre/üzenetküldésre...
>
> Best Regards,
> Zoltán Mózes
>
>
> EPAM Systems
> Budapest office, Hungary (GMT+1)
>
> Office phone:        +36 (1) 327-74-XX
> Office fax:            +36 (1) 327-74-20
> Mobile phone:       +36 (20) XXX-XXX
> E-mail:                 Zoltan_Mozes at epam.com
>
> http://www.epam.com
>
> CONFIDENTIALITY CAUTION AND DISCLAIMER
> This message is intended only for the use of the individual(s) or entity(ies) to which it is addressed and contains information that is legally privileged and confidential. If you are not the intended recipient, or the person responsible for delivering the message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. All unintended recipients are obliged to delete this message and destroy any printed copies.
>
> -----Original Message-----
> From: javalist-bounces at javagrund.hu [mailto:javalist-bounces at javagrund.hu] On Behalf Of biziclop
> Sent: Tuesday, January 23, 2007 5:37 PM
> To: javalist at javagrund.hu
> Subject: Re: [Java lista] flush()
>
> Ugy, ahogy barhol mashol. Letrehozol egy szalat es hajra. (Illetve
> kulturaltabb modon threadpool.)
>
> Ha pedig az adott kornyezet tiltja, akkor biztos adnak ra valami
> helyettesito megoldast. Ha nem adnak, ki kell dobni a kornyezetet,
> vagy tojni a tiltasra.
>
>  EJB-nel peldaul (bar lehet, hogy hulyeseget irok :)) message-driven
> beanekkel meg tudod oldani az aszinkron vegrehajtast.
>
> lsp
>
> On 1/23/07, Böszörményi Péter <zmblevlist at gmail.com> wrote:
> > Viszont akkor megint elojon szamomra a kerdes: hogyan tudunk servlet
> > kontenerben feladatokat parhuzamositani/hatter feladatokat elvegezni?
> >
> > Zoltan Mozes wrote:
> > >
> > >
> > > < AJAX >
> > >
> > > figyu, én aszondom, AJAXban ez kb 50 sor lesz, legfeljebb egy napig
> > > olvasod a tutorialokat és jobban jársz. Egyszerűbb és korszerűbb
> > > meggoldást kapsz ráadásul picit közelebb kerülsz a MVC design pattern
> > > alkalmazásához is.
> > >
> > > </ AJAX >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > <THREADz>
> > >
> > > eleve thread-eket inditani j2ee esetekben (mint akár a servlet) elég
> > > barbár megoldás (na M O S T lehet flame-wart indítani). Jó tudom hogy
> > > thread-eket az EJB speckó tiltja csak (bean-ek esetében deklaráltan
> > > tilos mert a container manage-eli a párhuzamosságokat).
> > >
> > > </THREADz >
> > >
> > >
> > >
> > > Mindenesetre sok sikert, ha tudunk, segítünk.
> > >
> > >
> > >
> > > Mégegyszer olvasd el 10 sorban hogy az ajax mire való. (erre) J
> > >
> > >
> > >
> > > hajrá! J
> > >
> > >
> > >
> > >
> > >
> > > Best Regards,
> > > ** Zoltán Mózes **
> > >
> > >
> > > EPAM Systems
> > > Budapest office,  Hungary (GMT+1)
> > >
> > > Office phone:        +36 (1) 327-74-XX
> > > Office fax:            +36 (1) 327-74-20
> > > Mobile phone:       +36 (20) XXX-XXX
> > > E-mail:                  Zoltan_Mozes at epam.com
> > > <mailto:Zoltan_Mozes at epam.com>
> > >
> > > http://www.epam.com
> > >
> > > CONFIDENTIALITY CAUTION AND DISCLAIMER
> > > This message is intended only for the use of the individual(s) or
> > > entity(ies) to which it is addressed and contains information that is
> > > legally privileged and confidential. If you are not the intended
> > > recipient, or the person responsible for delivering the message to the
> > > intended recipient, you are hereby notified that any dissemination,
> > > distribution or copying of this communication is strictly prohibited.
> > > All unintended recipients are obliged to delete this message and destroy
> > > any printed copies.
> > >
> > > * From: * javalist-bounces at javagrund.hu
> > > [mailto:javalist-bounces at javagrund.hu] *On Behalf Of *Keresztes József
> > > *Sent:* Tuesday, January 23, 2007 4:36 PM
> > > *To:* javalist at javagrund.hu
> > > *Subject:* RE: [Java lista] flush()
> > >
> > >
> > >
> > > Sziasztok !
> > >
> > >
> > >
> > > Köszönöm a válaszokat.
> > >
> > >
> > >
> > > AJAX lehet hogy jó, de nem akarom bevonni a megoldásba.
> > >
> > > Javascript: ebből jobb ha minél kevesebb van, én nagyon nem szeretem.
> > >
> > > Inkább az új szál indítása tetszik, illetve egy olyan html oldal kidobása
> > >
> > > amely refresh-el időnként újrahívja magát. Ezen az oldalon pedig ki
> > >
> > > tudom tenni hol tart a folyamat.
> > >
> > >
> > >
> > > Általában az egyszerűbb megoldások érdekelnek, sajnos jellemző manapság
> > >
> > > a dolgok túlbonyolítása, ez a böngészőnek szóló "megjelenítés kierőltetése"
> > >
> > > lett volna a legjobb, de nem akar jól működni. Egyik böngészővel működik
> > >
> > > a dolog, a másikkal nem (természetesen IE).
> > >
> > >
> > >
> > > Joe
> > >
> > > * Feladó: * javalist-bounces at javagrund.hu meghatalmazó: Böszörményi Péter
> > > *Küldve:* 07-01-23, K 14:57
> > > *Címzett:* javalist at javagrund.hu
> > > *Tárgy:* Re: [Java lista] flush()
> > >
> > > A bongeszo buffereleset nem tudod befojasolni. Max azt lehet csinalni, h
> > >   commentben elkezdesz kihanyni magadbol szemetet, akkor eleg gyorsan
> > > megtelik a bongeszo buffere ahhoz, h megjelenitse. Persze kozben
> > > generalsz teljesen feleslegesen par meganyi forgalmat. En inkabb azt
> > > latom celravezetonek, hogy a tenyleges muveletvegzest elinditod kulon
> > > szalon, es egy oldalt neha frissitesz, ami megnezi, hogy kesz-e mar a
> > > feladat (last, oracle enterspajz manager, otp internetbank). Ha ezt az
> > > ember meg megbolonditja ajaxxal, egesz pofas eredmenyt lehet elerni.
> > >
> > > Keresztes József wrote:
> > >>  Sziasztok !
> > >>
> > >>  Olyat szeretnék egy webes alkalmazásban hogy amíg egy servlet sokáig
> > >>  dolgozik (pl. 5 perc) addig ír a kimenetre, és ez folyamatosan
> > >>  megjelenjen a web-böngészőben. Így próbáltam:
> > >>
> > >>     response.setBufferSize(1);
> > >>     PrintWriter out = response.getWriter();
> > >>     out.print("Művelet folyamatban");
> > >>     for (int i = 0; i < 10; i++) {
> > >>       out.println(".");
> > >>       out.flush();
> > >>       response.flushBuffer();
> > >>       Thread.sleep(1000);
> > >>     }
> > >>     out.print("kész");
> > >>
> > >>  Csakhogy a böngészőben nem jelenik meg folyamatosan a kimenet csak ha az
> > >>  egész lefutott. A példában látjátok próbálkoztam a flush(),
> > >>  flushBuffer(), setBufferSize() metódusokkal de hiába, a 2 kipróbált
> > >>  böngésző sz at rik <mailto:sz at rik> rá :)
> > >>  Mi lenne a megoldás ?
> > >>
> > >>  Joe
> > >>
> > >>
> > >>
> > >>  ------------------------------------------------------------------------
> > >>
> > >>  _______________________________________________
> > >>  Javalist mailing list
> > >>  Javalist at javagrund.hu
> > >>  http://javagrund.hu/mailman/listinfo/javalist
> > > _______________________________________________
> > > Javalist mailing list
> > > Javalist at javagrund.hu
> > > http://javagrund.hu/mailman/listinfo/javalist
> > >
> > >
> > >
> > > ------------------------------------------------------------------------
> > >
> > > _______________________________________________
> > > Javalist mailing list
> > > Javalist at javagrund.hu
> > > http://javagrund.hu/mailman/listinfo/javalist
> > _______________________________________________
> > Javalist mailing list
> > Javalist at javagrund.hu
> > http://javagrund.hu/mailman/listinfo/javalist
> >
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>


További információk a(z) Javalist levelezőlistáról