Riferimenti per la classe org.jaebi.server.JAEBIWSImpl

Diagramma delle classi per org.jaebi.server.JAEBIWSImpl

Inheritance graph
[legenda]
Diagramma di collaborazione per org.jaebi.server.JAEBIWSImpl:

Collaboration graph
[legenda]
Lista di tutti i membri.

Descrizione Dettagliata

JAEBI Web Service.

Autore:
detro
Versione:
1.0alpha
Questa Classe e' uno "skeleton" per il WS che andremo a generare.

I metodi qui' definiti saranno mappati dal tool WSCompile (link) in un Web Service di tipo <u>Document/Literal</u>.
Il Web Service disporra' di un WSDL 1.x (Web Service Definition Language), un file XML (Standard W3c) scaricabile dal WS stesso, che definisce la "forma" del Web Service e permette la creazione di Client WS senza dover conoscere ASSOLUTAMENTE la reale implementazione dello stesso.
Esistono linguaggi come PHP che forniscono Framework per creare Client WS letteralmente "on-the-fly": cio' e' realizzabile grazie al WSDL.

Inizialmente si era pensato di implementare il Web Service secondo lo "stile" XML-RPC perche', al momento, e' l'unico che offre la sicurezza di funzionamento senza dover scrivere classi per la Serializzazione/Deserializzazione.
Infatti, per il funzionamento interno di JAEBI, sarebbe stato piu' conveniente poter spedire tramite WebService interi oggetti. Esigenze di sviluppo pero' ci hanno costretti a sperimentare uno "stile" piu' nuovo di Web Service detto <u>Document-Type Web Service</u>; cio' e' stato causato dal fatto che i client J2ME, al momento, dispongono solo del Toolkit WTK2.2 di Sun, il quale supporta SOLO i Web Service "Document-Styled".
Questo standard definisce in maniera troppo generica come eseguire il mapping "Oggetto di un particolare Linguaggio"-"XSD", facendo si che WebService scritti con Framework come .NET, non siano affatto compatibili con quelli scritti con AXIS (Apache) o WSCompile (Sun).

Questa limitazione e' pero' circoscritta al solo WS (quindi, solo questa Classe): quando (e se) sara' disponibile il nuovo standard WSDL 2.0 che definisca con maggiore precisione i WS, il passaggio al tipo "Document" sarebbe veloce ed indolore per tutta l'archiettura di JAEBI.

Definizione alla linea 66 del file JAEBIWSImpl.java.

Membri pubblici

 JAEBIWSImpl ()
 Costruttore del JAEBI Web Service.
int login (java.lang.String usernick, java.lang.String usertype)
 Metodo di Login sul JAEBI Server.
String logout (int sessionid)
 Metodo di Logout sul JAEBI Server.
String getLastError ()
 Ritorna il Messaggio relativo all'ultimo Errore verificatori.
String executeRequest (int sessionid, java.lang.String xrequest)
 Esegui Request XML sul Server (Xrequest).
String getUsersList ()
 Ritorna una Stringa contenente la Lista degli User attualmente registrati sul Server.
int getUsersNumber ()
 Ritorna il numero di User attualmente registrati sul Server.

Attributi privati

JAEBIServer coreServer
 Server JAEBI istanziato dal Web Service.
final Authenticator authenticator
 Authenticator istanziato dal Web Service.
final HashMap activeSessions
 HashMap che server a recuperare le Session degli User.
String lastErrorMessage = null
 Last Error Message.

Attributi privati statici

static final String configBaseDir
 Configuration BaseDir.
static final String backEndPropFile
 BackEndHandler Property File Name.
static final String messageWrongSessionErrorID
 WrongSessionErrorID.
static final String messageServiceError
 ServiceExecError.
static final String messageSessionError
 SessionError.
static final String messageLogout
 Logout.


Documentazione dei costruttori e dei distruttori

org.jaebi.server.JAEBIWSImpl.JAEBIWSImpl  ) 
 

Costruttore del JAEBI Web Service.

Il WS di JAEBI espone i metodi necessari e sufficienti per i client per interagire con il Server.

Il WS si occupa di gestire:

  • Una istanza di JAEBIServer, che incapsula tutta la logica di funzionamento del Server
  • Una istanza di Authenticator, che assegna Session (Identificativi) agli User che effetuano il Login

Il costruttore legge da File i Messaggi predefiniti e li carica in opportuni StringBuffer: si sarebbero potute utilizzare le Classi del package "org.jaebi.server.service.xml" per costruire e serializzare (marshallare) gli "xresponse", ma cio' avrebbe comportato un sovraccarico prestazionale inutile, dato che questi messaggi possono cambiare (e cio' comporterebbe la necessita' di correggere direttamente il sorgente).

Definizione alla linea 167 del file JAEBIWSImpl.java.

Riferimenti org.jaebi.server.JAEBIWSImpl.activeSessions, org.jaebi.server.JAEBIWSImpl.authenticator, org.jaebi.server.JAEBIWSImpl.backEndPropFile, org.jaebi.server.JAEBIWSImpl.coreServer, e org.jaebi.server.JAEBIWSImpl.lastErrorMessage.

00167                          {
00168         // Inizializzazione Authenticator
00169         authenticator = new AuthenticatorImpl();
00170 
00171         // Inizializzazione "archivio Sessioni"
00172         activeSessions = new HashMap();
00173 
00174         // Inizializzazione JAEBIServer
00175         try {
00176             coreServer = new JAEBIServer( backEndPropFile );
00177         } catch (JAEBIServerInitException e) {
00178             /* Nel caso si verifichi qui un errore,
00179              * sarebbe irrimediabile per il corretto
00180              * funzionamento del Server: conserviamo in ogni 
00181              * caso il messaggio circa l'errore prodotto.
00182              */
00183             lastErrorMessage = e.getMessage();
00184         }
00185     }


Documentazione delle funzioni membro

String org.jaebi.server.JAEBIWSImpl.executeRequest int  sessionid,
java.lang.String  xrequest
 

Esegui Request XML sul Server (Xrequest).

Parametri:
sessionid Identificativo Sessione dell'User
xrequest XML che mappa la richiesta
Restituisce:
Stringa in formato XML Xresponse che mappa il risultato della richiesta

Implementa org.jaebi.server.JAEBIWSSEI.

Definizione alla linea 278 del file JAEBIWSImpl.java.

Riferimenti org.jaebi.server.JAEBIWSImpl.activeSessions, org.jaebi.server.JAEBIWSImpl.coreServer, org.jaebi.server.JAEBIServer.executeRequest(), org.jaebi.server.JAEBIWSImpl.lastErrorMessage, org.jaebi.server.JAEBIWSImpl.messageServiceError, org.jaebi.server.JAEBIWSImpl.messageSessionError, e org.jaebi.server.JAEBIWSImpl.messageWrongSessionErrorID.

00278                                                                            {
00279         String xresponse = null;
00280         Session userSession = (Session)activeSessions.get( new Integer(sessionid) );
00281 
00282         if ( userSession == null ) {
00283             // Il "sessionId" fornito e' errato
00284             xresponse = messageWrongSessionErrorID;
00285         } else {
00286             // Esecuzione Richiesta
00287             try {
00288                 xresponse = coreServer.executeRequest( userSession, xrequest);
00289             } catch (JAEBIServerExecException e) {
00290                 lastErrorMessage = e.getMessage();
00291                 xresponse = messageServiceError;
00292             } catch (JAEBIServerWrongSessionException e) {
00293                 lastErrorMessage = e.getMessage();
00294                 xresponse = messageSessionError;
00295             }
00296         }
00297 
00298         return xresponse;
00299     }

Questo è il grafo delle chiamate per questa funzione:

String org.jaebi.server.JAEBIWSImpl.getLastError  ) 
 

Ritorna il Messaggio relativo all'ultimo Errore verificatori.

Restituisce:
Ultimo Errore verificatosi nel Server

Implementa org.jaebi.server.JAEBIWSSEI.

Definizione alla linea 266 del file JAEBIWSImpl.java.

Riferimenti org.jaebi.server.JAEBIWSImpl.lastErrorMessage.

00266                                  {
00267         return lastErrorMessage;
00268     }

String org.jaebi.server.JAEBIWSImpl.getUsersList  ) 
 

Ritorna una Stringa contenente la Lista degli User attualmente registrati sul Server.

Restituisce:
Lista di User registrati

Implementa org.jaebi.server.JAEBIWSSEI.

Definizione alla linea 307 del file JAEBIWSImpl.java.

Riferimenti org.jaebi.server.JAEBIWSImpl.activeSessions, org.jaebi.server.JAEBIWSImpl.coreServer, org.jaebi.server.core.User.getNick(), org.jaebi.server.JAEBIServer.getRegisteredUser(), org.jaebi.server.JAEBIWSImpl.lastErrorMessage, e org.jaebi.server.auth.Session.toString().

00307                                  {
00308         StringBuffer result = new StringBuffer();
00309         Collection coll = activeSessions.values();
00310         Iterator iter = coll.iterator();
00311         Session currentSession = null;
00312         User currentUser = null;
00313         int i = 0;
00314 
00315         result.append("[JAEBIWS] REGISTERED USERS:\n");
00316         while ( iter.hasNext() ) {
00317             currentSession = (Session)iter.next();
00318 
00319             try {
00320                 currentUser = coreServer.getRegisteredUser(currentSession);
00321                 result.append("[" + ++i + "] - " + currentUser.getNick() + "\n" );
00322             } catch (JAEBIServerWrongSessionException e) {
00323                 lastErrorMessage = e.getMessage() 
00324                     + "Session ID: " + currentSession.toString();
00325                 //iter.remove();
00326             }
00327         }
00328 
00329         return result.toString();
00330     }

Questo è il grafo delle chiamate per questa funzione:

int org.jaebi.server.JAEBIWSImpl.getUsersNumber  ) 
 

Ritorna il numero di User attualmente registrati sul Server.

Restituisce:
Numero di User registrati

Implementa org.jaebi.server.JAEBIWSSEI.

Definizione alla linea 337 del file JAEBIWSImpl.java.

Riferimenti org.jaebi.server.JAEBIWSImpl.activeSessions.

00337                                 {
00338         StringBuffer result = new StringBuffer();
00339         Collection coll = activeSessions.values();
00340         return coll.size();
00341     }

int org.jaebi.server.JAEBIWSImpl.login java.lang.String  usernick,
java.lang.String  usertype
 

Metodo di Login sul JAEBI Server.

Parametri:
userNick Nick identificativo dell'User (a piacere)
userType Tipo di User. Per ora, non esistono Tipi predefiniti di User, quindi si e' preferito non fissare dei limiti. Nelle classi Client si aggiungera' una Interfaccia con le costanti che si consiglia di utilizzare.
Restituisce:
SessionID: hashCode della Sessione assegnata allo User. I client dovranno inviare SessionID ad ogni loro interazione con JAEBI. Torna "-1" in caso di errore.

Implementa org.jaebi.server.JAEBIWSSEI.

Definizione alla linea 200 del file JAEBIWSImpl.java.

Riferimenti org.jaebi.server.JAEBIWSImpl.activeSessions, org.jaebi.server.JAEBIWSImpl.authenticator, org.jaebi.server.JAEBIWSImpl.coreServer, org.jaebi.server.auth.Authenticator.getAuthentication(), org.jaebi.server.auth.Session.hashCode(), org.jaebi.server.JAEBIWSImpl.lastErrorMessage, e org.jaebi.server.JAEBIServer.registerNewUser().

00200                                                                            {
00201         Session userSession;
00202                 
00203         // Allochiamo un Session per il nuovo User
00204         userSession = authenticator.getAuthentication(usernick);
00205 
00206         /* Registriamo il Session, indicizzato in base al SessionID (in pratica, 
00207          * l'hashcode di Session) */ 
00208         activeSessions.put(
00209             new Integer( userSession.hashCode() ), 
00210             userSession);
00211 
00212         if ( coreServer == null )
00213             return -1;
00214 
00215         // Registrazione nuovo User
00216         try {
00217             coreServer.registerNewUser(usernick, userSession, usertype);
00218         } catch (JAEBIServerUserRegistrationException e) {
00219             lastErrorMessage = e.getMessage();
00220             return -1;
00221         }
00222 
00223         /* TODO
00224          * Cercare un algoritmo per la generazione del SessionID
00225          * piu' sicuro: l'HASHCODE potrebbe generare un valore
00226          * uguale al valore di errore (-1), creando confusione
00227          */
00228         return userSession.hashCode();
00229     }

Questo è il grafo delle chiamate per questa funzione:

String org.jaebi.server.JAEBIWSImpl.logout int  sessionid  ) 
 

Metodo di Logout sul JAEBI Server.

Parametri:
userSessionID SessionID / Hashcode che i Client devono inviare ad ogni interazione con il Server.

Implementa org.jaebi.server.JAEBIWSSEI.

Definizione alla linea 237 del file JAEBIWSImpl.java.

Riferimenti org.jaebi.server.JAEBIWSImpl.activeSessions, org.jaebi.server.JAEBIWSImpl.coreServer, org.jaebi.server.JAEBIWSImpl.lastErrorMessage, org.jaebi.server.JAEBIWSImpl.messageLogout, org.jaebi.server.JAEBIWSImpl.messageSessionError, org.jaebi.server.JAEBIWSImpl.messageWrongSessionErrorID, e org.jaebi.server.JAEBIServer.unregisterUser().

00237                                         {
00238         Session userSession;
00239         String xresponse = null;
00240 
00241         // Recupero oggetto Session in base al SessionID 
00242         userSession = (Session)activeSessions.get( new Integer(sessionid) );
00243 
00244         if ( userSession == null ) {
00245             xresponse = messageWrongSessionErrorID;
00246         } else {
00247             // Deregistrazione User
00248             try {
00249                 coreServer.unregisterUser(userSession);
00250                 xresponse = messageLogout;
00251             } catch (JAEBIServerWrongSessionException e) {
00252                 xresponse = messageSessionError;
00253                 lastErrorMessage = e.getMessage();
00254             }
00255         }
00256 
00257         return xresponse;
00258     }

Questo è il grafo delle chiamate per questa funzione:


Documentazione dei dati membri

final HashMap org.jaebi.server.JAEBIWSImpl.activeSessions [private]
 

HashMap che server a recuperare le Session degli User.

Inizialmente avevamo pensato di inviare direttamente l'oggetto Session ai Client i quali dovevano poi reinviarlo ad ogni iterazione: questa cosa pero' non e' risultata realizzabile, costringendoci ad ideare un sistema di Mapping che invia ai Client l'hashCode degli oggetti Session (definito SessionID), costruendo intanto una HashMap server-side che utilizzi questi valori come chiave e le corrispettive Session come valori: ci˜ permette il recupero dell'associazione tra User e Session.

Definizione alla linea 80 del file JAEBIWSImpl.java.

Referenziato da org.jaebi.server.JAEBIWSImpl.executeRequest(), org.jaebi.server.JAEBIWSImpl.getUsersList(), org.jaebi.server.JAEBIWSImpl.getUsersNumber(), org.jaebi.server.JAEBIWSImpl.JAEBIWSImpl(), org.jaebi.server.JAEBIWSImpl.login(), e org.jaebi.server.JAEBIWSImpl.logout().

final Authenticator org.jaebi.server.JAEBIWSImpl.authenticator [private]
 

Authenticator istanziato dal Web Service.

Definizione alla linea 70 del file JAEBIWSImpl.java.

Referenziato da org.jaebi.server.JAEBIWSImpl.JAEBIWSImpl(), e org.jaebi.server.JAEBIWSImpl.login().

final String org.jaebi.server.JAEBIWSImpl.backEndPropFile [static, private]
 

Valore iniziale:

 
            "BackEndHandlerImpl.properties"
BackEndHandler Property File Name.

Definizione alla linea 86 del file JAEBIWSImpl.java.

Referenziato da org.jaebi.server.JAEBIWSImpl.JAEBIWSImpl().

final String org.jaebi.server.JAEBIWSImpl.configBaseDir [static, private]
 

Valore iniziale:

 
            "/opt/tomcat/webapps/axis/JAEBIWS/config/"
Configuration BaseDir.

Definizione alla linea 83 del file JAEBIWSImpl.java.

JAEBIServer org.jaebi.server.JAEBIWSImpl.coreServer [private]
 

Server JAEBI istanziato dal Web Service.

Definizione alla linea 68 del file JAEBIWSImpl.java.

Referenziato da org.jaebi.server.JAEBIWSImpl.executeRequest(), org.jaebi.server.JAEBIWSImpl.getUsersList(), org.jaebi.server.JAEBIWSImpl.JAEBIWSImpl(), org.jaebi.server.JAEBIWSImpl.login(), e org.jaebi.server.JAEBIWSImpl.logout().

String org.jaebi.server.JAEBIWSImpl.lastErrorMessage = null [private]
 

Last Error Message.

Definizione alla linea 138 del file JAEBIWSImpl.java.

Referenziato da org.jaebi.server.JAEBIWSImpl.executeRequest(), org.jaebi.server.JAEBIWSImpl.getLastError(), org.jaebi.server.JAEBIWSImpl.getUsersList(), org.jaebi.server.JAEBIWSImpl.JAEBIWSImpl(), org.jaebi.server.JAEBIWSImpl.login(), e org.jaebi.server.JAEBIWSImpl.logout().

final String org.jaebi.server.JAEBIWSImpl.messageLogout [static, private]
 

Valore iniziale:

 
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
            "<xresponse xmlns='http://xml.netbeans.org/examples/targetNS' " +
            "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " +
            "xsi:schemaLocation='http://xml.netbeans.org/examples/targetNS " +
            "xresponse.xsd'>" +
            "<message result=\"error\">" +
            "Logged Out. Bye from JAEBI Server." +
            "</message>" +
            "</xresponse>"
Logout.

Definizione alla linea 126 del file JAEBIWSImpl.java.

Referenziato da org.jaebi.server.JAEBIWSImpl.logout().

final String org.jaebi.server.JAEBIWSImpl.messageServiceError [static, private]
 

Valore iniziale:

 
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
            "<xresponse xmlns='http://xml.netbeans.org/examples/targetNS' " +
            "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " +
            "xsi:schemaLocation='http://xml.netbeans.org/examples/targetNS " +
            "xresponse.xsd'>" +
            "<message result=\"error\">" +
            "Error during Service Execution." +
            "</message>" +
            "</xresponse>"
ServiceExecError.

Definizione alla linea 102 del file JAEBIWSImpl.java.

Referenziato da org.jaebi.server.JAEBIWSImpl.executeRequest().

final String org.jaebi.server.JAEBIWSImpl.messageSessionError [static, private]
 

Valore iniziale:

 
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
            "<xresponse xmlns='http://xml.netbeans.org/examples/targetNS' " +
            "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " +
            "xsi:schemaLocation='http://xml.netbeans.org/examples/targetNS " +
            "xresponse.xsd'>" +
            "<message result=\"error\">" +
            "User Session Error." +
            "</message>" +
            "</xresponse>"
SessionError.

Definizione alla linea 114 del file JAEBIWSImpl.java.

Referenziato da org.jaebi.server.JAEBIWSImpl.executeRequest(), e org.jaebi.server.JAEBIWSImpl.logout().

final String org.jaebi.server.JAEBIWSImpl.messageWrongSessionErrorID [static, private]
 

Valore iniziale:

 
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
            "<xresponse xmlns='http://xml.netbeans.org/examples/targetNS' " +
            "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " +
            "xsi:schemaLocation='http://xml.netbeans.org/examples/targetNS " +
            "xresponse.xsd'>" +
            "<message result=\"error\">" +
            "Received a Wrong Session ID: please, check it." +
            "</message>" +
            "</xresponse>"
WrongSessionErrorID.

Definizione alla linea 90 del file JAEBIWSImpl.java.

Referenziato da org.jaebi.server.JAEBIWSImpl.executeRequest(), e org.jaebi.server.JAEBIWSImpl.logout().


La documentazione per questa classe è stata generata a partire dal seguente file:
Generato il Mon Jun 27 22:50:39 2005 per JAEBI - JAva Enterprice BackEnd Interfacement da  doxygen 1.4.3