Re: Vice socket klientu ve webové aplikaci (Spring)
Dobrý den, problém jsem objevil, pan Kamil Podlesak měl pravdu. Oba zmíněné způsoby byly dobře, problém byl v tom, že verze na webu volala kdesi hluboko v objektech jednu zapomenutou metodu static a ta pochopitelně způsobovala všechny problémy. Zkrátka školácká chyba. Tímto tedy dementuji, že by byl rozdíl s multithreadovým socket klientem na webu. Když použijete správné třídy pro vytvoření threadu či tasku (jedno jestli ze Spring či Java EE) , tak vše pojede jak má. Ještě jednou se omlouvám za zbytečné vlákno. Vladislav Korecký On 12.6.2014 13:40, Kamil Podlesak wrote: Problém zřejmě není v paralelním spouštění (obě varianty vypadají zcela správně) ale v té práci se sockety. Jaký by to mohl být problém, to mě moc nenapadá - jedině snad že pokud je těch spojení opravu MOC (stovky, tisíce) tak že to narazí na maximální počet otevřených souborů (sockety se počítají jako otevřené soubory). Jinak těžko radit, bez dalších informací. Kamil Podlešák On 12. 6. 2014, at 13:30, Vladislav Korecký vladislav_kore...@gordic.cz mailto:vladislav_kore...@gordic.cz wrote: Děkuji za odpověď, přepsal jsem aplikaci aby místo threads používala bean s Async metodou. Pomocí scheduleru vyvolávám metody a ta vytváří instanci beany a na ní spouští metody s anotací Async. Vše běží paralelně, ale problém se Socket přetrvává. Předem děkuji za pomoc, Korecký Sign Ing. Vladislav Korecký mailto:vladislav_kore...@gordic.cz signature.png GORDIC spol. s r.o., Erbenova 4, 586 01 Jihlava tel: +420 567 571 467 On 12.6.2014 08:29, Tomas Baca wrote: http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/scheduling.html example: @Async FutureString returnSomething(int i) { // this will be executed asynchronously } 2014-06-11 19:31 GMT+02:00 Vladislav Korecký vladislav_kore...@gordic.cz mailto:vladislav_kore...@gordic.cz: Dobrý den, prosím o radu. Mám zkušební console aplikaci, ve které mám třídu která implementuje Runnable, v metodě run() vytvářím Socket (klient) a navazuji spojení se serverem. V main metodě vyvolávám několik instancí výše zmíněné třídy a vše vesele komunikuje (paralelně). Když stejnou třídu vytvořím ve webové aplikaci postavené nad Spring MVC a pomocí scheduleru vyvolám třídu, která vytvoří instance zmíněného threadu a spustí je, tak se mi jednotlivý socket klienti poperou (některé instance hlásí, že nelze navázat spojení, jiné hlásí timeout). Když vše udělám synchroně (vyvolávám jednotlivé instance threadu postupně), tak vše funguje. Zkoušel jsem i implementovat Spring TaskExecutor, ale se stejným výsledkem. Jak bych měl postupovat ve webové aplikaci, abych mohl navázat N paralelních spojení se Socket servery ? Upozorňuji, že komunikace probíhá na TCP/IP úrovní pomocí zasílání jednotlivých bytes. Nemohu použít HttpClient či podobné třídy. Předem děkuji za pomoc, Vladislav Korecký
Re: Vice socket klientu ve webové aplikaci (Spring)
http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/scheduling.html example: @Async FutureString returnSomething(int i) { // this will be executed asynchronously } 2014-06-11 19:31 GMT+02:00 Vladislav Korecký vladislav_kore...@gordic.cz: Dobrý den, prosím o radu. Mám zkušební console aplikaci, ve které mám třídu která implementuje Runnable, v metodě run() vytvářím Socket (klient) a navazuji spojení se serverem. V main metodě vyvolávám několik instancí výše zmíněné třídy a vše vesele komunikuje (paralelně). Když stejnou třídu vytvořím ve webové aplikaci postavené nad Spring MVC a pomocí scheduleru vyvolám třídu, která vytvoří instance zmíněného threadu a spustí je, tak se mi jednotlivý socket klienti poperou (některé instance hlásí, že nelze navázat spojení, jiné hlásí timeout). Když vše udělám synchroně (vyvolávám jednotlivé instance threadu postupně), tak vše funguje. Zkoušel jsem i implementovat Spring TaskExecutor, ale se stejným výsledkem. Jak bych měl postupovat ve webové aplikaci, abych mohl navázat N paralelních spojení se Socket servery ? Upozorňuji, že komunikace probíhá na TCP/IP úrovní pomocí zasílání jednotlivých bytes. Nemohu použít HttpClient či podobné třídy. Předem děkuji za pomoc, Vladislav Korecký
Re: Vice socket klientu ve webové aplikaci (Spring)
Děkuji za odpověď, přepsal jsem aplikaci aby místo threads používala bean s Async metodou. Pomocí scheduleru vyvolávám metody a ta vytváří instanci beany a na ní spouští metody s anotací Async. Vše běží paralelně, ale problém se Socket přetrvává. Předem děkuji za pomoc, Korecký Sign Ing. Vladislav Korecký mailto:vladislav_kore...@gordic.cz GORDIC spol. s r.o. GORDIC spol. s r.o., Erbenova 4, 586 01 Jihlava tel: +420 567 571 467 On 12.6.2014 08:29, Tomas Baca wrote: http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/scheduling.html example: @Async FutureString returnSomething(int i) { // this will be executed asynchronously } 2014-06-11 19:31 GMT+02:00 Vladislav Korecký vladislav_kore...@gordic.cz mailto:vladislav_kore...@gordic.cz: Dobrý den, prosím o radu. Mám zkušební console aplikaci, ve které mám třídu která implementuje Runnable, v metodě run() vytvářím Socket (klient) a navazuji spojení se serverem. V main metodě vyvolávám několik instancí výše zmíněné třídy a vše vesele komunikuje (paralelně). Když stejnou třídu vytvořím ve webové aplikaci postavené nad Spring MVC a pomocí scheduleru vyvolám třídu, která vytvoří instance zmíněného threadu a spustí je, tak se mi jednotlivý socket klienti poperou (některé instance hlásí, že nelze navázat spojení, jiné hlásí timeout). Když vše udělám synchroně (vyvolávám jednotlivé instance threadu postupně), tak vše funguje. Zkoušel jsem i implementovat Spring TaskExecutor, ale se stejným výsledkem. Jak bych měl postupovat ve webové aplikaci, abych mohl navázat N paralelních spojení se Socket servery ? Upozorňuji, že komunikace probíhá na TCP/IP úrovní pomocí zasílání jednotlivých bytes. Nemohu použít HttpClient či podobné třídy. Předem děkuji za pomoc, Vladislav Korecký
Re: Vice socket klientu ve webové aplikaci (Spring)
Problém zřejmě není v paralelním spouštění (obě varianty vypadají zcela správně) ale v té práci se sockety. Jaký by to mohl být problém, to mě moc nenapadá - jedině snad že pokud je těch spojení opravu MOC (stovky, tisíce) tak že to narazí na maximální počet otevřených souborů (sockety se počítají jako otevřené soubory). Jinak těžko radit, bez dalších informací. Kamil Podlešák On 12. 6. 2014, at 13:30, Vladislav Korecký vladislav_kore...@gordic.cz wrote: Děkuji za odpověď, přepsal jsem aplikaci aby místo threads používala bean s Async metodou. Pomocí scheduleru vyvolávám metody a ta vytváří instanci beany a na ní spouští metody s anotací Async. Vše běží paralelně, ale problém se Socket přetrvává. Předem děkuji za pomoc, Korecký Ing. Vladislav Koreckýsignature.png GORDIC spol. s r.o., Erbenova 4, 586 01 Jihlava tel: +420 567 571 467 On 12.6.2014 08:29, Tomas Baca wrote: http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/scheduling.html example: @Async FutureString returnSomething(int i) { // this will be executed asynchronously } 2014-06-11 19:31 GMT+02:00 Vladislav Korecký vladislav_kore...@gordic.cz: Dobrý den, prosím o radu. Mám zkušební console aplikaci, ve které mám třídu která implementuje Runnable, v metodě run() vytvářím Socket (klient) a navazuji spojení se serverem. V main metodě vyvolávám několik instancí výše zmíněné třídy a vše vesele komunikuje (paralelně). Když stejnou třídu vytvořím ve webové aplikaci postavené nad Spring MVC a pomocí scheduleru vyvolám třídu, která vytvoří instance zmíněného threadu a spustí je, tak se mi jednotlivý socket klienti poperou (některé instance hlásí, že nelze navázat spojení, jiné hlásí timeout). Když vše udělám synchroně (vyvolávám jednotlivé instance threadu postupně), tak vše funguje. Zkoušel jsem i implementovat Spring TaskExecutor, ale se stejným výsledkem. Jak bych měl postupovat ve webové aplikaci, abych mohl navázat N paralelních spojení se Socket servery ? Upozorňuji, že komunikace probíhá na TCP/IP úrovní pomocí zasílání jednotlivých bytes. Nemohu použít HttpClient či podobné třídy. Předem děkuji za pomoc, Vladislav Korecký