lunedì 7 marzo 2011

Sviluppo primo Strumento di prova

Ho voluto realizzare un primo strumento per Sankorè per capire meglio se le tecnologie che ho scelto sono in grado di soddisfare tutti i requisiti richiesti.
Ambiente di sviluppo Java Web e framework per Javascript GWT.
Questo strumento di prova funziona in modo molto semplice, si hanno una lista di parole (es Città) e dei contenitori (es Province), lo scopo è quello di trascinare le parole nel giusto contenitore fino a  non avere più parole a disposizione.
L'applicazione è divisa in 2 parti, una server (Java) e una client (JS) la parte server è una sorta di Web Service, formata solamente da una Servlet che fornisce al client una pagina XML con i dati da utilizzare per creare Parole-Contenitori (questo sistema mi permette di testare la comunicazione client-server in GWT).  Il lato client invece fornisce all'utente l'interfaccia grafica, permette la creazione, la ricerca di pattern gia pronti e ovviamente il loro utilizzo. Le 2 parti sono 2 applicazioni separate, is server è montato su Tomcat.
Ecco come si presenta l'apps:
Una volta creata e testato il suo funzionamento provo ad esportarla come widget per Sankorè.
Creato il widget lo importo in Sankorè, lo strumento si presenta correttamente ma appena provo a cercare moduli gia pronti sul server mi dà errore, cosa che prima funzionava correttamente.

Dopo essermi un po' informato ho scoperto che javascript non supporta la comunicazione tra server con dominii diversi (cross domain). Qui l'articolo : http://javascript.html.it/articoli/leggi/2957/jsonp-e-le-richieste-cross-domain/
L'articolo propone anche una soluzione non proprio banale al problema.

Dunque ricapitolando, se mi servono dati da un server nello stesso dominio non è un problema, tutto funziona correttamente, mentre se il dominio è un'altro la comunicazione diventa molto + difficile.

La mia idea era quella di rendere questi strumenti completamente integrabili in Sankorè in modo da non dover avere un web server per ognuno di essi, e utilizzare un Web Service fornito dal repository per accedere a moduli gia pronti o per caricarne di nuovi. Se si riesce a superare il problema del cross-domain allora il tutto è realizzabile con queste tecnologie.