PDA

View Full Version : [JAVA] Migrare applicazione Java Swing su Web


tylerdurden83
06-09-2010, 08:00
Ciao ragazzi. Vorrei chiedervi un parere.
Ho un'applicazione scritta in Java Swing. Per farla breve, è una JTable che viene aggiornata in real time leggendo messaggi da un Topic JMS.
L'obiettivo sarebbe quello di portarla su web, usando ajax per refreshare le entry della tabella html senza ricaricare tutta la pagina ogni volta.

Quale strada mi consigliereste?

Alcune info:
il server JMS è (attualmente) HornetQ
il sito in cui inserire il porting dell'applicazione è (attualmente) in php
...

Grazie 1000 a tutti come sempre,
Rob

nico159
06-09-2010, 08:33
Quanti utenti deve supportare questa tua web app?

tylerdurden83
06-09-2010, 08:40
Quanti utenti deve supportare questa tua web app?

Una decina max contemporaneamente

nico159
06-09-2010, 10:37
Una decina max contemporaneamente
Se sono solo una decina lato client con javascript puoi usare un timer e realizzare il classico polling per controllare gli aggiornamenti

Ogni 1s scatta il timer->Viene richiamata la tua funzione che farà:
-> GET della pagina in php
<- La pagina php risponde al GET fornendo i dati serializzati in json
-> Deserializza i dati
-> Aggiorna le parti della pagina dove necessario

Per scambiare dati dal tuo server java a php, ti consiglio di usare Redis http://code.google.com/p/redis/
E' un db che tiene tutto in ram, include elementi come liste ordinate che possono essere usati come queue.

Il tuo server Java al posto di usare un server di messaging, riempie una lista in redis serializzando i dati in json

Lato php, basta che il tuo script ad ogni richiesta controlli se ci sono elementi nella lista Redis ed invia tutto al client sempre tramite json
Ovviamente devi prima fornire al client dei dati di base su cui lavorare, l'ideale è avere un "index.php" che fornisce i dati di
"default" e un "update.php" che restituisce gli aggiornamenti in json
Puoi sempre saltare Redis, e far aggiornare ogni volta i dati contenuti in un ipotetico db relazionale dal server Java direttamente, dipende da cosa devi effettivamente fare e sopratutto di quali compiti il server java deve occuparsi

Lato client, assolutamente jquery

tylerdurden83
06-09-2010, 11:40
Grazie nico159, prenderò attentamente in esame il tuo suggerimento.
Ti dico cosa avevo in mente io, dimmi se secondo te possono andare bene come idee o è meglio non perderci tempo.

1) Cambiare il server JMS (ora hornetq) con http://activemq.apache.org/ajax.html. Mi pare di capire che quello faccia ciò che mi serve...

2) Lasciare hornetq, e scrivere una servlet + jsp, con la servlet che "legge" dal topic JMS e spara al client (sempre refresh ajax). Richiede un altro webserver tipo tomcat ovviamente.

Grazie,
Rob

tari80
06-09-2010, 12:08
ti consiglio di utilizzare IceFaces che supporta il push via ajax, è molto semplice da utilizzare e ti risolve un sacco di problemi.
ovviamente sempre con un webserver tipo tomcat dietro
Ciao:)

nico159
06-09-2010, 12:37
1) Cambiare il server JMS (ora hornetq) con http://activemq.apache.org/ajax.html. Mi pare di capire che quello faccia ciò che mi serve...
E' una ottima soluzione, potresti scalare a molti utenti e parte del codice JS for free

tylerdurden83
06-09-2010, 13:04
E' una ottima soluzione, potresti scalare a molti utenti e parte del codice JS for free

Vedi controindicazioni a usarlo via cell?(motivo principale del porting da swing a web)...

nico159
06-09-2010, 13:20
Vedi controindicazioni a usarlo via cell?(motivo principale del porting da swing a web)...
La dipende solo dal browser fornito con il cellulare
E' possibile che avresti problemi anche con un semplice timer

Sei fortunato se si parla di cell con OS moderni come Android o iPhone OS