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
Future<String> 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ý