La comunicazione tra MapServer e Jemma avviene tramite chiamata http o https nel caso si debba usare un protocollo di sicurezza. L'URL di richiesta viene creato percorrendo l'oggetto Map e generando una coppia nome/valore per ogni attributo istanziato. La richiesta viene quindi inviata a MapServer che, terminate le operazioni di calcolo necessarie, risponde attraverso un file xml (funzionalità di templating di MapServer). I valori in risposta vengono utilizzati per aggiornare l'oggetto Map (nuovo extent della mappa, indirizzo delle immagini, nuovo fattore di scala, …) e per creare la risposta al cliente (pagina html o presentazione dentro un'applicazione).
<?xml version="1.0" encoding="ISO-8859-1"?> <values> <img>[img]</img> <mapext>[mapext]</mapext> <map>[map]</map> <ref>[ref]</ref> <scalebar>[scalebar]</scalebar> <scale>[scale]</scale> <legend>[legend]</legend> </values>
Sebbene MapServer dichiara di poter modificare qualsiasi attributo definito nel file di configurazione non tutte le modifichei sono prese realmente in considerazione. Alcune perché palesemente inutili, altre perché, sembrerebbe, non ancora implementate.
L'immagine riportata di seguito mostra quali oggetti di un file map e a quale grado sono risultati modificabili utilizzando la versione di MapSever attualmente disponibile (versione 4.2.0). Il dettaglio per attributo è disponibile in appendice.

Diagramma rappresentate gli oggetti che compongono un file di configurazione map e le loro relazioni (gli oggetti a sinistra contengono uno o più oggetti disegnati alla loro destra). I colori raggruppano gli oggetti in base al numero di attributi che sono risultati modificabili tramite chiamata URL. Arancione - nessuno. Verde - gran parte. Azzurro - solo una parte. Blu - non testato.
Il secondo modulo funzionale serve ad automatizzare le modifiche all'oggetto Map domandate dal cliente attraverso una richiesta URL (per esempio generata da un formulario Web). Jemma integra la stessa nomenclatura specificata da MapServer nel caso di una chiamata diretta dal browser a MapServer. In tal modo il passaggio di un'applicazione esistente basata su MapSever verso Jemma richiede pochi secondi.

Scenario d'utilizzazione di moduli di aggiornamento automatico e di chiamata a MapServer. (1) Il Browser invia una richiesta con i parametri che rispettano la nomenclatura MapServer. (2) La richiesta viene trattata e l'ogetto Map viene opportunamente modificato. (3) Il modulo di comunicazione utilizza il file Map per generare la richiesta a MapServer.
Il terzo modulo utilizza direttamente il file di configurazione di una mappa. Purtroppo, pur condividendone la logica di elementi contenuti e contenenti, il file di configurazione di una mappa in MapServer non è scritto in formato xml. Il lavoro di parsing e di analisi è notevolmente complesso e porta facilmente all'errore. In attesa che MapServer si adegui agli standard (cosa richiesta da tempo a gran voce) abbiamo deciso di aggirare il problema utilizzando i commenti al file per ricostruire una sintassi che rispetti quella impiegata nel formato xml. Questa piccola modifica ci ha permesso di implementare due utili funzionalità:
La seconda delle due funzionalità implica la necessità di condividere il file di configurazione tra le macchine ospitanti le applicazioni. La prima invece può essere effettuata anche tramite una più facile e sicura chiamata http.

Il modulo per la gestione del map file può essere utilizzato in due modi: la modifica del map file (1a) (per esempio introduzione di un nuovo simbolo o di un nuovo layer) che verrà poi preso in considerazione dal MapServer (1b); lettura del file map (2a) e inizializzazione automatica di tutto o alcuni degli elementi dell'oggetto Map.
Jemma offre ovviamente tutte le funzionalità che sono accessibile via una normale interfaccia web e MapServer. Tra queste citiamo quelle che riteniamo più importanti ai fini dei nostri progetti: