Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

programiranje klijent server aplikacije

[es] :: Java :: programiranje klijent server aplikacije

[ Pregleda: 2653 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glamoc

Član broj: 125620
Poruke: 346
212.200.65.*



+1 Profil

icon programiranje klijent server aplikacije10.08.2009. u 17:11 - pre 178 meseci
Programiran neku klijent server aplikaciju u javi(koristim java.net) i jedan od zahteva je da server na svakih x sekundi pinguje sve klijente
kako bi znao koji klijenti su zivi.Prvo sam mislio da ovo realizujem tako sto cu na serveru pokrenuti jednu nit koja se samo bavi pingovanjem klijenata i to na sledeci naci:

-nit posalje poruku klijentu i ceka odgovor,medjuti problem je ocigledan,ukoliko se klijent ne odazove nit na serveru se blikira

-drugo resenje koje mi je palo na pamet je da serverska nit salje poruku klijentu ali da ne ocekuje odgovor od klijenta,ukoliko dodje do problema u komunikaciji
bacice se izuzetak i ja u obradi izuzetka uklonim klijenta iz liste aktivnih

Ako se neko bavio ovom roblematikom interesuje me koliko je dobro ovo drugo resenje i ako ima neko bolje neka mi predlozi
Kad covjeka napusti Sunce njegovog zavicaja ko ce mu posvijetliti na putu povratka
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
91.148.83.*

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: programiranje klijent server aplikacije10.08.2009. u 18:29 - pre 178 meseci
Jel mozes malo blize da opises sta konkretno radis pa da mogu da predlozim neko bolje resenje. Uglavnom ne bih preporucio java.net direktno da se koristi, jednostavno ne zelis da se zezas na tako niskom nivou.

Znaci preporucio bih dve varijante.

Prva ako se radi o nekoj klasicnoj "biznis" aplikaciji, za server uzmi lepo aplikacioni server ili spring, pa napravis tamo web servis , a sa klijentima gadjas web servis i tako razmenjujes podatke ukoliko pravis FAT klijente. druga varaijanta ako koristis neki binarni protokol pa ti nekakav XML nije dobar za komunikaciju.

Druga ako klasican XML nije dobar za komunikaciju onda preporucujem da uzmes ili jboss NETTY ili apache MINA projekat. Oni su event driven pa preko njih realizujes komunikaciju.

Zasto ovo pricam, iz prostog razloga sto kad ljudi krenu da rade direkt sa threadovima i socektima obicno naprave haos negde a to je posle jako tesko debagovati, zato je ovo mnogo bolja varijanta jer sav taj low level prepusits serveru ili frameworku da radi za tebe, a ti se zanimas sa biznis logikom.

 
Odgovor na temu

glamoc

Član broj: 125620
Poruke: 346
212.200.65.*



+1 Profil

icon Re: programiranje klijent server aplikacije10.08.2009. u 19:07 - pre 178 meseci
Konkretan problem je da imam tri vrste uredjaja klijente koji zadaju velike nizove koje treba sortirati,servera koji velike nizove razbija na manje i salje ih radnim stanicama,i radne stanice koje konkurentno sortiraju manje podnizove.Tako sortirane podnizove vracaju serveru a onda on spaja dva manja podniza u veci i ponovo salje radnoj stanici sve dok se niz ne sortira.Server odrzava spisak zivih stanica

Inace ovo mi je projekat na faksu i ja znam samo da radim u java.net i pokusao sam raditi u java.rmi ali nikako nisam uspeo podesiti.
Ako bi bio ljubazan da mi das neki koristan link za ovo sto si mi pisao jer nemam pojma o cemu se radi.
unapred hvala
Kad covjeka napusti Sunce njegovog zavicaja ko ce mu posvijetliti na putu povratka
 
Odgovor na temu

IDE

Član broj: 53403
Poruke: 586
95.155.15.*



Profil

icon Re: programiranje klijent server aplikacije11.08.2009. u 08:52 - pre 178 meseci
A zasto ne uradis ovako:

Kreiras mapu ciji je key - IP klijenta a value - uspjesnost pingovanja i inicijalizujes sve na "PENDING" ( npr value = 0 ya Pending, value = -1 za nemogucnost pingovanja a value = 1 za uspjesno pingovanje)

- Kreiras klasu ciji je zadatak da za zadatu adresu uradi PING ( implementira Runnable )

- Kreiras nit koja svakih n sekundi za svaku prijavljenu adresu kreira nit ( klasa odozgo ) koja ce pingovati svog klijenta i u slucaju exception-a prijaviti u neku mapu rezultat da li je ping uspio ili ne i prilikom SVAKOG upisa u mapu iterirati kroz nju prikazivajuci za koga je ping uspio a za koga ne.

Dakle 2 razlicita thread-a, umjesto samo jednog kako si u prvom slucaju naveo.

Naravno, nekoliko metoda pa mozda i mapa bi morali biti sinhronizovani.
Takođe, trebao bi pratiti evidenciju za kojeg klijenta nit vec postoji, tj. za koga jos prethodna nit nije zavrsila posao kako ne bi pokrenuo vise pingovanja jednog klijenta, sto uopste nije tezak posao.

Na ovaj nacin neces dozivjeti blokiranja glavne niti da saceka kraj svakog pingovanja.

Ako nesto nisi najbolje shvatio - pitaj...
there's something out there
waiting for us,
and it ain't no man...
 
Odgovor na temu

glamoc

Član broj: 125620
Poruke: 346
212.200.65.*



+1 Profil

icon Re: programiranje klijent server aplikacije11.08.2009. u 09:52 - pre 178 meseci
Ako sam te dobro razumeo ti predlazer da za svaku radnu stanicu pokrenem po jedu nit koja ce se baviti samo tom stanicom i jednu koja ce globalno kontrolisati
gde je ping uspeo a gde nije.Ovo mi se resenje ne svidja jer ako imam npr 100 radnih stanica nastace havarija.Ako sam te pogresno razumeo molim te ispravi me.
Kad covjeka napusti Sunce njegovog zavicaja ko ce mu posvijetliti na putu povratka
 
Odgovor na temu

IDE

Član broj: 53403
Poruke: 586
95.155.15.*



Profil

icon Re: programiranje klijent server aplikacije12.08.2009. u 09:20 - pre 178 meseci
I da i ne.

Glavna nit ce se samo brinuti o kreiranju niti za svaku radnu stanicu. Izmedju ostalog, brinuce i da se nikad ne kreiraju dva Thread-a za jednu radnu stanicu.

Te "cerke" niti ce upisivati u npr. neku mapu da li je usjelo slanje za njihovu radnu stanicu ili nije i ako ti treba vizuelni prikaz, pri insertovanju refreshovati prethodni prikaz, tj. iterirati kroz mapu prikazivajuci trenutne rezultate.

Ovo je princip koji radi na jednom velikom i ozbiljnom sistemu na kojem sam radio ( naravno ne radi ping vec nesto drugo, ali jako slicno ) , i radi vec dugo vremena bez i jednog problema.

Doduse, nikad kod njega ne postoji npr. 100 klijenata za njegov ping, vec je to reda 10 - 20.

Ali ne vidim zasto bi tebi nastala havarija... Pogotovo ako ces koristiti neki server a ne neki slabasni PC... Sistem koji sam pominjao je u jednom trenutku znao imati po 200 niti otvorenih u jednom trenutku i to makar polovina od njih su radili malo "teze" operacije za procesor, i kazem - nikad do sada nije zablokirao ili porijesio pri obradi podataka.

Naravno, potrebno je iskustvo u radu sa multithread aplikacijama koje, izmedju ostalog, znaci i pravilan rad sa sinhronizovanim metodama...

Uostalom, ovo je samo predlog kako bih ja to uradio.
there's something out there
waiting for us,
and it ain't no man...
 
Odgovor na temu

Chobicus
Pancevo

Član broj: 28286
Poruke: 135
*.mozzartbet.com.

ICQ: 31049018


+12 Profil

icon Re: programiranje klijent server aplikacije14.08.2009. u 15:12 - pre 178 meseci
Mozda ti treba ovako neshto:
http://java.sun.com/j2se/1.4.2/docs/guide/nio/example/Ping.java

Jel' to za DRS?
:)
 
Odgovor na temu

glamoc

Član broj: 125620
Poruke: 346
212.200.65.*



+1 Profil

icon Re: programiranje klijent server aplikacije15.08.2009. u 17:15 - pre 178 meseci
E hvala na linku al uspeo sam da resim stvar.Ovo je za projekat iz KDP-a(ili za novosadjane DRS)
Kad covjeka napusti Sunce njegovog zavicaja ko ce mu posvijetliti na putu povratka
 
Odgovor na temu

[es] :: Java :: programiranje klijent server aplikacije

[ Pregleda: 2653 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.