Appendice A
In questa appendice, è illustrata l’architettura logica del sistema realizzato. Le classi principali, delle quali si fornisce il diagramma delle classi, sono :
Aggregator Agent
Poiché sia lo Agent che lo Aggregator sono Grid Service, entrambi estendono ed implementano, rispettivamente, GridServiceImpl e GridServiceCallback.
GridServiceImpl, è la classe base di tutti i Grid Service, mentre GridServiceCallback è l’interfaccia che definisce i metodi necessari alla gestione del lifecycle di un Grid Service.
Infine sia lo Agent, sia lo Aggregator utilizzano il package utils che racchiude le classi Constant, contenente valori per alcune costanti e Message, utilizzata per stabilire il formato dei messaggi mediante i quali le entità del sistema comunicano tra loro.
Aggregator
Lo Aggregator gestisce sia le informazioni pubblicate dai propri Agent sulle quali possono essere effettuate ricerche, sia un indice delle risorse contenute negli Aggregator della propria organizzazione virtuale o di altre organizzazioni.
Nel fare ciò lo Aggregator utilizza le seguenti classi:
• Neighbour: memorizza informazioni sulla raggiungibilità di uno Aggregator,
• MessageReceiver: riceve ed invia messaggi per la comunicazione sia con altri Aggregator, sia con gli Agent,
• Query: memorizza informazioni su una determinata query.
Agent
Lo Agent genera le informazioni sulle risorse sotto forma di Service Data (SD).
La classe utilizzata dallo Agent è ProviderExecution che schedula gli Information Provider per la generazione dei Service Data.
Overview Package Class Tree Deprecated Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes
SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD
agent.impl
Class AgentImpl
java.lang.Object |
+--org.globus.ogsa.impl.core.service.ServicePropertiesImpl |
+--org.globus.ogsa.impl.ogsi.GridServiceImpl |
+--agent.impl.AgentImpl
All Implemented Interfaces:
org.gridforum.ogsi.GridService, org.globus.ogsa.GridServiceBase, org.globus.ogsa.GridServiceCallback, java.rmi.Remote, org.globus.ogsa.ServiceDataValueCallback,
org.globus.ogsa.ServiceProperties
public class AgentImpl
extends org.globus.ogsa.impl.ogsi.GridServiceImpl implements org.globus.ogsa.GridServiceCallback
Grid Service che va in esecuzione su ogni macchina della Griglia occupandosi di generare informazioni sulle risorse. Memorizza queste informazioni come Service Data.
Field Summary
private org.w3c.dom.Document configDoc
Documento contenente la configurazione dello Agent.
private java.lang.String fileName
Nome del file di configurazione dello Agent con relativo path.
(package private) org.gridforum.ogsi.HandleType
handle
Contiene lo handle del Grid Service 'Agent'.
private org.globus.ogsa.GridServiceBase
hostService
Contiene le proprietà del Grid Service 'Agent'.
(package private) java.net.InetAddress
localAddress
Nome della macchina locale.
(package private) static org.apache.commons.logging.Log
logger
Logger della classe.
private java.util.Hashtable map
Associa ad ogni possibile combinazione degli attributi della tassonomia il relativo IP.
private org.globus.ogsa.ServiceData serviceData
(package private) org.globus.ogsa.ServiceDataSet
serviceDataSet
Contiene l'insieme dei Service Data creati dallo Agent.
private java.util.Hashtable timerList
Associa al nome di un Service Data il provider, che aggiorna le informazioni contenute nel Service
Data stesso, e il timer, con il quale il provider è stato schedulato.
Fields inherited from class org.globus.ogsa.impl.ogsi.GridServiceImpl
queryEngine
Fields inherited from class
org.globus.ogsa.impl.core.service.ServicePropertiesImpl
Fields inherited from interface org.globus.ogsa.ServiceProperties
ACTIVATE_ON_STARTUP, ACTIVATION, BASE_CLASS_NAME, BOOTSTRAP, CONFIG_PATH, CONTAINS_REFERENCE, CREATION_EXTENSIBILITY, CREATION_EXTENSIBILITY_OUTPUT, CUSTOM_EXTENSIBILITY_DESERIALIZER, CUSTOM_EXTENSIBILITY_SERIALIZER, CUSTOM_MAPPING_REGISTERED, DEACTIVATED_PERSISTENT, DEACTIVATED_STATE, DEACTIVATED_TRANSIENT, DEACTIVATION, DESTROY_LISTENER, DESTRUCTION_SKELETON, DISABLE_FACTORY_REGISTRY, ENDPOINT, ENTRY_INSTANCE_CREATION, FACTORY, FACTORY_CALLBACK, FACTORY_HANDLE, FACTORY_PROVIDER, FACTORY_REGISTRY, GSR_DESCRIPTION, HANDLE, HANDLE_PORT, HANDLE_PROTOCOL, INSTANCE_CLASS, INSTANCE_DEACTIVATION, INSTANCE_GSR_DESCRIPTION, INSTANCE_LIFECYCLE, INSTANCE_PORT_TYPE, INSTANCE_PORT_TYPE_NS, INSTANCE_PREFIX, INSTANCE_REGISTRY, INSTANCE_SCHEMA_PATH, INSTANCE_WSDL, INTERFACE_CLASS_NAME, INVOCATION_ID, LAZY_CREATION, LIFECYCLE, LIFECYCLE_MONITOR, LIFECYCLE_MONITOR_CLASS, NAME, NOTIFICATION_ENGINE, NOTIFICATION_FACTORY, NOTIFICATION_SOURCE, OPERATION_PROVIDERS, PERSISTENT, PERSISTENT_PROPERTIES, PORT, PORT_TYPE, PORT_TYPE_NS, PRIMARY_KEY, PROTOCOL, QUERY_ENGINE, REDIRECT_RESOLVER, REGISTRY, RESOLVER_CACHE, ROUTER_HEADER, ROUTER_VIA, SCHEMA_LOCATION, SCHEMA_PATH, SERVICE_ACTIVATOR, SERVICE_DATA, SERVICE_DEPLOYMENT, SERVICE_GROUP_ENTRY, SERVICE_GROUP_PROVIDER, SERVICE_LOADER,
TIMEOUT, TIMESTAMP, TRANSIENT, TYPE, USER, WEBSTART_PANEL_NAME, WEBSTART_URL, WSDL
Constructor Summary
AgentImpl()
Method Summary
private void
initMap()
Inizializza la tabella hash 'map'.
private void
load()
Controlla se esiste il file di configurazione dello Agent e agisce di conseguenza.
void postCreate(org.globus.ogsa.GridContext context)
Callback invocata quando il Grid Service 'Agent' è stato creato e tutta la sua configurazione è stata caricata.
void preCreate(org.globus.ogsa.GridServiceBase base)
Callback invocata quando inizia il processo di creazione del Grid Service 'Agent'.
void preDestroy(org.globus.ogsa.GridContext context)
Callback invocata appena prima che il Grid Service 'Agent' viene distrutto.
void publishIP(java.lang.String resourceDescriptor)
Crea un Service Data contenente informazioni su una determinata risorsa e schedula un provider per aggiornare queste informazioni.
void removeIP(java.lang.String resourceDescriptor)
Cancella il Service Data contenente informazioni su una
determinata risorsa e fa terminare lo Information Provider che ha il compito di aggiornare le informazioni su quella risorsa.
void reschedule()
Vengono rischedulati gli IP statici.
private void
schedule(agent.impl.ProviderExecution providerExecution)
Schedula il TimerTask 'providerExecution' che aggiornerà le informazioni su una determinata risorsa.
private void
sendObject(utils.Message msgToSend, java.net.InetAddress receiverAddress) Invia un messaggio.
private void
setServiceData(org.globus.ogsa.ServiceData serviceData) Imposta il valore degli attributi del Service Data.
Methods inherited from class org.globus.ogsa.impl.ogsi.GridServiceImpl
activate, addOperationProvider, deactivate, destroy, findServiceData, getInstanceProperty, getOperationProvider, getQueryEngine, getServiceDataSet, getServiceDataValues, getServiceInterface, getTerminationTime, populateInstanceProperties, requestTerminationAfter, requestTerminationBefore, setDefaultTermination, setQueryEngine, setServiceData, setServiceDataSet
Methods inherited from class
org.globus.ogsa.impl.core.service.ServicePropertiesImpl
flush, getPersistentProperty, getProperty, keySet, setPersistentProperty, setProperty
Methods inherited from class java.lang.Object
toString, wait, wait, wait
Methods inherited from interface org.globus.ogsa.GridServiceCallback
activate, deactivate
Methods inherited from interface org.globus.ogsa.ServiceProperties
flush, getPersistentProperty, getProperty, setPersistentProperty, setProperty
Field Detail
logger
static org.apache.commons.logging.Log logger
Logger della classe.
configDoc
private org.w3c.dom.Document configDoc
Documento contenente la configurazione dello Agent.
hostService
private org.globus.ogsa.GridServiceBase hostService
Contiene le proprietà del Grid Service 'Agent'.
handle
org.gridforum.ogsi.HandleType handle
Contiene lo handle del Grid Service 'Agent'.
map
private java.util.Hashtable map
Associa ad ogni possibile combinazione degli attributi della tassonomia il relativo IP.
timerList
private java.util.Hashtable timerList
Associa al nome di un Service Data il provider, che aggiorna le informazioni contenute nel Service Data stesso, e il timer, con il quale il provider è stato schedulato.
serviceData
private org.globus.ogsa.ServiceData serviceData
serviceDataSet
org.globus.ogsa.ServiceDataSet serviceDataSet
Contiene l'insieme dei Service Data creati dallo Agent.
fileName
private java.lang.String fileName
Nome del file di configurazione dello Agent con relativo path.
localAddress
java.net.InetAddress localAddress
Nome della macchina locale.
Constructor Detail
AgentImpl
public AgentImpl()
Method Detail
preCreate
public void preCreate(org.globus.ogsa.GridServiceBase base) throws org.globus.ogsa.GridServiceException
Callback invocata quando inizia il processo di creazione del Grid Service 'Agent'. Carica la configurazione del Grid Service.
Specified by:
preCreate in interface org.globus.ogsa.GridServiceCallback
Overrides:
preCreate in class org.globus.ogsa.impl.ogsi.GridServiceImpl
Parameters:
base - GridServiceBase
org.globus.ogsa.GridServiceException
postCreate
public void postCreate(org.globus.ogsa.GridContext context) throws org.globus.ogsa.GridServiceException
Callback invocata quando il Grid Service 'Agent' è stato creato e tutta la sua configurazione è stata caricata. Crea il MulticastSocket per la comunicazione con tutti gli Aggregator della propria organizzazione virtuale ed effettua il processo di inizializzazione delle strutture dati.
Specified by:
postCreate in interface org.globus.ogsa.GridServiceCallback
Overrides:
postCreate in class org.globus.ogsa.impl.ogsi.GridServiceImpl
Parameters:
context - GridContext Throws:
org.globus.ogsa.GridServiceException
preDestroy
public void preDestroy(org.globus.ogsa.GridContext context)
Callback invocata appena prima che il Grid Service 'Agent' viene distrutto.
Elimina tutti i Timer presenti nella timerList.
Specified by:
preDestroy in interface org.globus.ogsa.GridServiceCallback
Overrides:
preDestroy in class org.globus.ogsa.impl.ogsi.GridServiceImpl
context - GridContext
initMap
private void initMap()
Inizializza la tabella hash 'map'.
load
private void load()
throws org.globus.ogsa.GridServiceException
Controlla se esiste il file di configurazione dello Agent e agisce di conseguenza. Nel caso in cui il file non esiste allora lo crea; altrimenti, legge dal file di configurazione tutti i tag "providerEntry" che forniscono informazioni sui provider da schedulare e sui Service Data che dovrebbero essere aggiornati da questi provider. Quindi, per ogni tag presente nel file di configurazione, crea un Service Data vuoto e schedula il provider che genererà ed aggiornerà le informazioni che dovranno essere memorizzate nel Service Data creato. Infine, invia un messaggio in multicast per informare tutti gli Aggregator, all'interno della stessa organizzazione virtuale di cui fa parte lo Agent, della creazione di un nuovo Service Data.
Throws:
org.globus.ogsa.GridServiceException
reschedule
public void reschedule()
Vengono rischedulati gli IP statici.
setServiceData
private void setServiceData(org.globus.ogsa.ServiceData serviceData) throws org.globus.ogsa.GridServiceException
Imposta il valore degli attributi del Service Data.
Parameters:
serviceData - Service Data di cui bisogna impostare i valori degli attributi Throws:
org.globus.ogsa.GridServiceException
sendObject
private void sendObject(utils.Message msgToSend,
java.net.InetAddress receiverAddress)
Invia un messaggio.
Parameters:
msgToSend - Messaggio da inviare
receiverAddress - Indirizzo del destinatario del messaggio
publishIP
public void publishIP(java.lang.String resourceDescriptor) throws java.rmi.RemoteException
Crea un Service Data contenente informazioni su una determinata risorsa e schedula un provider per aggiornare queste informazioni. Inoltre, aggiorna il file di configurazione dello Agent e invia un messaggio per informare tutti gli Aggregator della creazione di un nuovo Service Data. Il nome del
Service Data è ottenuto mediante la tabella hash 'map' mentre le informazioni contenute nel Service Data sono ottenute tramite il descrittore della risorsa che viene passato come parametro.
Parameters:
resourceDescriptor - Nome del descrittore della risorsa Throws:
java.rmi.RemoteException
removeIP
public void removeIP(java.lang.String resourceDescriptor) throws java.rmi.RemoteException
Cancella il Service Data contenente informazioni su una determinata risorsa e fa terminare lo Information Provider che ha il compito di aggiornare le informazioni su quella risorsa. Inoltre, aggiorna il file di configurazione dello Agent e invia un messaggio per informare tutti gli Aggregator della cancellazione del Service Data.
Parameters:
resourceDescriptor - Nome del descrittore della risorsa Throws:
java.rmi.RemoteException
schedule
private void schedule(agent.impl.ProviderExecution providerExecution)
Schedula il TimerTask 'providerExecution' che aggiornerà le informazioni su una determinata risorsa.
Parameters:
Overview Package Class Tree Deprecated Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes
SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD
aggregator.impl
Class AggregatorImpl
java.lang.Object |
+--org.globus.ogsa.impl.core.service.ServicePropertiesImpl |
+--org.globus.ogsa.impl.ogsi.GridServiceImpl |
+--aggregator.impl.AggregatorImpl
All Implemented Interfaces:
org.gridforum.ogsi.GridService, org.globus.ogsa.GridServiceBase, org.globus.ogsa.GridServiceCallback, java.rmi.Remote, org.globus.ogsa.ServiceDataValueCallback,
org.globus.ogsa.ServiceProperties
public class AggregatorImpl
extends org.globus.ogsa.impl.ogsi.GridServiceImpl implements org.globus.ogsa.GridServiceCallback
Grid Service che implementa un meccanismo di caching per i Service Data creati dai vari Agent presenti nella stessa organizzazione virtuale dello Aggregator.
Field Summary
private java.util.Hashtable aggregatorList
Associa al nome di ogni aggregator, presente nel file di configurazione ed esterno all'organizzazione virtuale, informazioni riguardanti la sua reperibilità.
private javax.swing.Timer clock
Utilizzati per eseguire dei task dopo un tempo specificato
private javax.swing.Timer clock1
private org.w3c.dom.Document configDoc
Documento contenente la configurazione dello Aggregator.
private java.lang.String fileName
Nome del file di configurazione dello Aggregator con relativo path.
private org.gridforum.ogsi.HandleType handle
Contiene lo handle del Grid Service 'Aggregator'.
private org.globus.ogsa.GridServiceBase hostService
Contiene le proprietà del Grid Service 'Aggregator'.
private java.net.InetAddress localAddress
Nome della macchina locale.
private java.util.Hashtable localIndex
Associa ad ogni parola chiave la lista dei Service Data che contengono quella parola chiave.
(package private) static org.apache.commons.logging.Log
logger
Logger della classe.
private int numChange
Identifica il numero dei cambiamenti nell'indice locale.
private int numQuery
Contiene il numero delle query sottomesse al sistema ed e' utilizzato come parte dell'identificatore di una query.
private aggregator.impl.MessageReceiver PtoP
Oggetto con il quale vengono inviati messaggi in peer-to-peer.
private java.util.Hashtable querySentToIP
Associa ad ogni identificatore di query la lista dei nomi degli Aggregator ai quali la query e' stata inviata.
private java.util.Hashtable routingTable
Associa al nome di ogni aggregator il suo Routing Indices.
private org.globus.ogsa.ServiceDataSet serviceDataSet
Contiene l'insieme dei Service Data creati dallo Aggregator.
private org.gridforum.ogsi.OGSIServiceGridLocator
serviceLocator
Oggetto utilizzato per ottenere il riferimento alla PortType di un Grid Service
private java.util.Hashtable subscriptions
Contiene l'insieme delle sottoscrizioni dell'Aggregator.
Fields inherited from class org.globus.ogsa.impl.ogsi.GridServiceImpl
queryEngine, serviceData
Fields inherited from class
org.globus.ogsa.impl.core.service.ServicePropertiesImpl
Fields inherited from interface org.globus.ogsa.ServiceProperties
ACTIVATE_ON_STARTUP, ACTIVATION, BASE_CLASS_NAME, BOOTSTRAP, CONFIG_PATH, CONTAINS_REFERENCE, CREATION_EXTENSIBILITY, CREATION_EXTENSIBILITY_OUTPUT, CUSTOM_EXTENSIBILITY_DESERIALIZER, CUSTOM_EXTENSIBILITY_SERIALIZER, CUSTOM_MAPPING_REGISTERED, DEACTIVATED_PERSISTENT, DEACTIVATED_STATE, DEACTIVATED_TRANSIENT, DEACTIVATION, DESTROY_LISTENER, DESTRUCTION_SKELETON, DISABLE_FACTORY_REGISTRY, ENDPOINT, ENTRY_INSTANCE_CREATION, FACTORY, FACTORY_CALLBACK, FACTORY_HANDLE, FACTORY_PROVIDER, FACTORY_REGISTRY, GSR_DESCRIPTION, HANDLE, HANDLE_PORT, HANDLE_PROTOCOL, INSTANCE_CLASS,
INSTANCE_DEACTIVATION, INSTANCE_GSR_DESCRIPTION, INSTANCE_LIFECYCLE, INSTANCE_PORT_TYPE, INSTANCE_PORT_TYPE_NS, INSTANCE_PREFIX, INSTANCE_REGISTRY, INSTANCE_SCHEMA_PATH, INSTANCE_WSDL, INTERFACE_CLASS_NAME, INVOCATION_ID, LAZY_CREATION, LIFECYCLE, LIFECYCLE_MONITOR, LIFECYCLE_MONITOR_CLASS, NAME, NOTIFICATION_ENGINE, NOTIFICATION_FACTORY, NOTIFICATION_SOURCE, OPERATION_PROVIDERS, PERSISTENT, PERSISTENT_PROPERTIES, PORT, PORT_TYPE, PORT_TYPE_NS, PRIMARY_KEY, PROTOCOL, QUERY_ENGINE, REDIRECT_RESOLVER, REGISTRY, RESOLVER_CACHE, ROUTER_HEADER, ROUTER_VIA, SCHEMA_LOCATION, SCHEMA_PATH, SERVICE_ACTIVATOR, SERVICE_DATA, SERVICE_DEPLOYMENT, SERVICE_GROUP_ENTRY, SERVICE_GROUP_PROVIDER, SERVICE_LOADER, SERVICE_NODE, SERVICE_PATH, SINK_ID, STARTUP_STATE, SWEEP_SERVICE_DATA, TIMEOUT, TIMESTAMP, TRANSIENT, TYPE, USER, WEBSTART_PANEL_NAME, WEBSTART_URL, WSDL
Constructor Summary
AggregatorImpl()
Method Summary
void addSubscription(org.gridforum.ogsi.HandleType gs h, java.lang.String serviceDataName)
Effettua la sottoscrizione ad un ServiceData.
private java.util.Hashtable[]
aggregateRoutingIndices(java.lang.String aggrega torHostName)
Calcola il routing indices aggregato per un dato Aggregator.
private java.lang.String
calculateBestNeighbor(utils.Query q)
Tra tutti gli Aggregator presenti nella tabella di routing, calcola lo Aggregator che ha il maggior
numero di documenti che contengono le parole chiave presenti nella query ricevuta come parametro.
private void createRoutingTable()
Crea la tabella di routing che associa ad ogni Aggregator un array di Routing Indices.
void deliverNotification(org.gridforum.ogsi.Extensibi lityType any)
Notifica il cambiamento di un Service Data.
private void findLocalResult(utils.Query q)
Valuta la query con i documenti disponibili localmente.
void forwardingQuery(utils.Query queryToForward) Inoltra la query ad un Aggregator.
void getList(java.net.InetAddress address)
Invia ad un server specializzato, all'interno della VO, il messaggio di getList con il quale si vuole ottenere: la lista dei nodi vicini, la lista dei super peer della propria VO e la lista dei client.
void keepAlive(java.lang.String aggregatorHostName) Aggiorna le informazioni riguardanti la reperibilita' degli Aggregator appartenenti a differenti organizzazioni virtuali.
private void load()
Controlla se esiste il file di configurazione dello Aggregator e agisce di conseguenza.
private void modifyLocalIndex(org.globus.ogsa.ServiceData ser
viceData, boolean incr)
Aggiorna l'indice dei documenti disponibili
localmente.
void postCreate(org.globus.ogsa.GridContext context) Callback invocata quando il Grid Service 'Aggregator' è stato creato e tutta la sua configurazione è stata caricata.
void preCreate(org.globus.ogsa.GridServiceBase base) Callback invocata quando inizia il processo di creazione del Grid Service 'Aggregator'.
void preDestroy(org.globus.ogsa.GridContext context) Callback invocata appena prima che il Grid Service 'Aggregator' viene distrutto.
void putList(java.util.HashSet neighborList, java.util.HashSet superPeerList,
java.util.HashSet clientList)
Riceve come parametro le tre liste richieste con un messaggio di getList, e le memorizza in apposite strutture dati.
void query(utils.Query query)
Implementa il processo di query.
private java.lang.Object[]
readKeys(org.globus.ogsa.ServiceData serviceData )
Legge le parole chiave contenute nel Service Data.
void removeSubscription(java.lang.String gsh, java.lang.String serviceDataName)
Rimuove la sottoscrizione ad un Service Data.
private void sendRI(java.lang.String aggregatorHostName, int hopCount)
Invia il routing indices aggregato allo Aggregator
'aggregatorHostName' passato come parametro.
private void startTimer()
Definisce due 'ActionListener' (checkActiveAggregator e checkLifetimeQuery) che eseguiranno dei controlli a determinati intervalli di tempo.
void updateRoutingTable(java.lang.String aggregatorHo stName, java.lang.Object objectMessage, int hopCount)
Aggiorna la tabella di routing in seguito alla ricezione di un routing indices aggregato da parte di un Aggregator appartenente ad una differente organizzazione virtuale.
Methods inherited from class org.globus.ogsa.impl.ogsi.GridServiceImpl
activate, addOperationProvider, deactivate, destroy, findServiceData, getInstanceProperty, getOperationProvider, getQueryEngine, getServiceDataSet, getServiceDataValues, getServiceInterface, getTerminationTime, populateInstanceProperties, requestTerminationAfter, requestTerminationBefore, setDefaultTermination, setQueryEngine, setServiceData, setServiceDataSet
Methods inherited from class
org.globus.ogsa.impl.core.service.ServicePropertiesImpl
flush, getPersistentProperty, getProperty, keySet, setPersistentProperty, setProperty
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.globus.ogsa.GridServiceCallback
activate, deactivate
Methods inherited from interface org.globus.ogsa.ServiceProperties
flush, getPersistentProperty, getProperty, setPersistentProperty, setProperty
Field Detail
logger
static org.apache.commons.logging.Log logger
Logger della classe.
configDoc
private org.w3c.dom.Document configDoc
Documento contenente la configurazione dello Aggregator.
localAddress
private java.net.InetAddress localAddress
Nome della macchina locale.
hostService
private org.globus.ogsa.GridServiceBase hostService
Contiene le proprietà del Grid Service 'Aggregator'.
handle
private org.gridforum.ogsi.HandleType handle
Contiene lo handle del Grid Service 'Aggregator'.
aggregatorList
private java.util.Hashtable aggregatorList
Associa al nome di ogni aggregator, presente nel file di configurazione ed esterno all'organizzazione virtuale, informazioni riguardanti la sua reperibilità.
routingTable
private java.util.Hashtable routingTable
Associa al nome di ogni aggregator il suo Routing Indices.
localIndex
private java.util.Hashtable localIndex
Associa ad ogni parola chiave la lista dei Service Data che contengono quella parola chiave.
querySentToIP
private java.util.Hashtable querySentToIP
Associa ad ogni identificatore di query la lista dei nomi degli Aggregator ai quali la query e' stata inviata.
subscriptions
private java.util.Hashtable subscriptions
Contiene l'insieme delle sottoscrizioni dell'Aggregator.
numQuery
private int numQuery
Contiene il numero delle query sottomesse al sistema ed e' utilizzato come parte dell'identificatore di una query.
numChange
private int numChange
Identifica il numero dei cambiamenti nell'indice locale.
PtoP
Oggetto con il quale vengono inviati messaggi in peer-to-peer.
serviceLocator
private org.gridforum.ogsi.OGSIServiceGridLocator serviceLocator
Oggetto utilizzato per ottenere il riferimento alla PortType di un Grid Service
serviceDataSet
private org.globus.ogsa.ServiceDataSet serviceDataSet
Contiene l'insieme dei Service Data creati dallo Aggregator.
fileName
private java.lang.String fileName
Nome del file di configurazione dello Aggregator con relativo path.
clock
private javax.swing.Timer clock
Utilizzati per eseguire dei task dopo un tempo specificato
clock1
private javax.swing.Timer clock1
Constructor Detail
AggregatorImpl
public AggregatorImpl()
Method Detail
preCreate
public void preCreate(org.globus.ogsa.GridServiceBase base) throws org.globus.ogsa.GridServiceException
Callback invocata quando inizia il processo di creazione del Grid Service 'Aggregator'. Carica la configurazione del Grid Service.
Specified by:
preCreate in interface org.globus.ogsa.GridServiceCallback
Overrides:
preCreate in class org.globus.ogsa.impl.ogsi.GridServiceImpl
Parameters:
base - GridServiceBase Throws:
org.globus.ogsa.GridServiceException
postCreate
public void postCreate(org.globus.ogsa.GridContext context) throws org.globus.ogsa.GridServiceException
Callback invocata quando il Grid Service 'Aggregator' è stato creato e tutta la sua configurazione è stata caricata. Crea due thread, multicast e PtoP, che
Agent e messaggi peer-to-peer da parte degli Aggregator appartenenti a differenti organizzazioni virtuali; inoltre effettua il processo di inizializzazione delle strutture dati.
Specified by:
postCreate in interface org.globus.ogsa.GridServiceCallback
Overrides:
postCreate in class org.globus.ogsa.impl.ogsi.GridServiceImpl
Parameters:
context - GridContext Throws:
org.globus.ogsa.GridServiceException
preDestroy
public void preDestroy(org.globus.ogsa.GridContext context) throws org.globus.ogsa.GridServiceException
Callback invocata appena prima che il Grid Service 'Aggregator' viene distrutto. Cancella tutte le sottoscrizioni sia all'interno della tabella hash 'subscriptions' sia dal file di configurazione. Inoltre causa la terminazione dei thread utilizzati per la comunicazione sia in multicast che in peer-to- peer.
Specified by:
preDestroy in interface org.globus.ogsa.GridServiceCallback
Overrides:
preDestroy in class org.globus.ogsa.impl.ogsi.GridServiceImpl
Parameters:
context - GridContext Throws:
org.globus.ogsa.GridServiceException
createRoutingTable
private void createRoutingTable()
Crea la tabella di routing che associa ad ogni Aggregator un array di Routing Indices. L'array ha una dimensione pari a 'Constant.HORIZON' che rappresenta l'orizzonte oltre il quale i routing indices aggregati non vengono inviati. La tabella viene inizializzata con due chiavi speciali: - localhost: a questa chiave e' associata una tabella hash contenente, per ogni parola chiave, il numero dei documenti disponibili localmente - summary: a questa chiave e' associata un array di tabelle hash contenenti, per ogni parola chiave, il numero totale dei documenti raggiungibili tramite gli Aggregator, presenti nel file di configurazione, appartenenti ad organizzazioni virtuali differenti.
sendRI
private void sendRI(java.lang.String aggregatorHostName, int hopCount)
Invia il routing indices aggregato allo Aggregator 'aggregatorHostName' passato come parametro.
Parameters:
aggregatorHostName - Hostname dello Aggregator al quale inviare il Routing Indices
hopCount - Numero di salti finora effettuati
updateRoutingTable
public void updateRoutingTable(java.lang.String aggregatorHostName, java.lang.Object objectMessage, int hopCount)
Aggiorna la tabella di routing in seguito alla ricezione di un routing indices aggregato da parte di un Aggregator appartenente ad una differente organizzazione virtuale.
Parameters:
aggregatorHostName - Hostname dello Aggregator che ha inviato objectMessage
objectMessage - Contiene il Routing Indices di objectAggregator
hopCount - Numero di salti finora effettuati
aggregateRoutingIndices
private java.util.Hashtable[]
aggregateRoutingIndices(java.lang.String aggregatorHostName)
Calcola il routing indices aggregato per un dato Aggregator.
Parameters:
aggregatorHostName - Hostname dello Aggregator rispetto al quale deve essere calcolato il Routing indices
Returns:
Un array di Hashtable che rappresenta il routing indices aggregato
modifyLocalIndex
private void modifyLocalIndex(org.globus.ogsa.ServiceData serviceData, boolean incr)
throws org.globus.ogsa.GridServiceException
Aggiorna l'indice dei documenti disponibili localmente. Di conseguenza verra' aggiornata anche la tabella di routing.
Parameters:
serviceData - Contiene informazioni sulla risorsa da indicizzare
incr - Indica se i valori contenuti nel Routing Indices devono essere sommati ai valori dell'indice locale
Throws:
org.globus.ogsa.GridServiceException
keepAlive
public void keepAlive(java.lang.String aggregatorHostName)
Aggiorna le informazioni riguardanti la reperibilita' degli Aggregator appartenenti a differenti organizzazioni virtuali.
Parameters:
aggregatorHostName - Hostname dello Aggregator del quale si devono aggiornare le informazioni sulla reperibilità
startTimer
private void startTimer()
Definisce due 'ActionListener' (checkActiveAggregator e checkLifetimeQuery) che eseguiranno dei controlli a determinati intervalli di tempo. Con il primo ActionListener si segnala la propria disponibilita' a tutti gli Aggregator presenti in aggregatorList e si controlla la raggiungibilita' di ognuno di essi. Nel caso in cui un Aggregator non sia
raggiungibilita' e deve essere eliminato il suo routing indices dalla tabella di routing. Con il secondo ActionListener si controlla la validita' delle query presenti in queryList. Nel caso in cui una query non e' piu' valida viene eliminata sia da queryList che da querySentToIP.
load
private void load()
throws org.globus.ogsa.GridServiceException
Controlla se esiste il file di configurazione dello Aggregator e agisce di conseguenza. Nel caso in cui il file non esiste allora lo crea; altrimenti, legge dal file di configurazione tutti i tag "subscriptionEntry" e tutti i tag
"aggregatorEntry". Per ogni tag "subscriptionEntry", se presente, vengono letti i campi "subscriptionID" ed "endpoint" che permettono di risalire alla sottoscrizione, ad un particolare Service Data, per poterla cancellare. Una volta cancellate le sottoscrizioni, si provvede a cancellare il tag
"subscriptionEntry" dal file di configurazione. Per ogni "aggregatorEntry", se presente, viene letto il campo "aggregatorIP" tramite il quale viene creato l'oggetto IP contenente informazioni sulla reperibilita' dello stesso Aggregator al quale viene inviato un messaggio di "keepAlive". Infine, viene inviato un messaggio di "getList" in multicast per ottenere, da qualsiasi altro Aggregator appartenente alla stessa organizzazione vrtuale, la lista dei Service Data ai quali si è sottoscritto.
Throws:
org.globus.ogsa.GridServiceException
getList
public void getList(java.net.InetAddress address)
Invia ad un server specializzato, all'interno della VO, il messaggio di getList con il quale si vuole ottenere: la lista dei nodi vicini, la lista dei super peer della propria VO e la lista dei client.
Parameters:
address - Indirizzo ip del server specializzato
putList
public void putList(java.util.HashSet neighborList, java.util.HashSet superPeerList, java.util.HashSet clientList)
Riceve come parametro le tre liste richieste con un messaggio di getList, e le memorizza in apposite strutture dati.
Parameters:
neighborList - lista dei vicini
superPeerList - lista dei super peer del proprio cluster
clientList - lista dei client
readKeys
private java.lang.Object[]
readKeys(org.globus.ogsa.ServiceData serviceData) throws
org.globus.ogsa.GridServiceException
Legge le parole chiave contenute nel Service Data.
Parameters:
serviceData - ServiceData contenente le parole chiave da leggere
Un array di stringhe contenente le parole chiave lette Throws:
org.globus.ogsa.GridServiceException
addSubscription
public void addSubscription(org.gridforum.ogsi.HandleType gsh, java.lang.String serviceDataName) throws java.rmi.RemoteException
Effettua la sottoscrizione ad un ServiceData.
Parameters:
gsh - Handle del servizio che si sottoscriverà al Service Data con nome serviceDataName
serviceDataName - Nome del Service Data Throws:
java.rmi.RemoteException
removeSubscription
public void removeSubscription(java.lang.String gsh,
java.lang.String serviceDataName) throws java.rmi.RemoteException
Rimuove la sottoscrizione ad un Service Data.
Parameters:
gsh - Handle del servizio, sotto forma di stringa, che è sottoscritto al Service Data con nome serviceDataName
serviceDataName - Nome del Service Data Throws:
java.rmi.RemoteException
deliverNotification
public void
deliverNotification(org.gridforum.ogsi.ExtensibilityType any) throws java.rmi.RemoteException
Notifica il cambiamento di un Service Data.
Parameters:
any - Contiene il Service Data al quale lo Aggregator si è sottoscritto e il cui valore è stato modificato
Throws:
java.rmi.RemoteException
forwardingQuery
public void forwardingQuery(utils.Query queryToForward)
Inoltra la query ad un Aggregator.
Parameters:
queryToForward - Query da inoltrare
calculateBestNeighbor
private java.lang.String calculateBestNeighbor(utils.Query q)
Tra tutti gli Aggregator presenti nella tabella di routing, calcola lo Aggregator che ha il maggior numero di documenti che contengono le parole chiave presenti nella query ricevuta come parametro.
Parameters:
Returns:
Il "miglior" vicino al quale inoltrare la query q
query
public void query(utils.Query query)
Implementa il processo di query.
Parameters:
query - Query da soddisfare
findLocalResult
private void findLocalResult(utils.Query q)
Valuta la query con i documenti disponibili localmente.
Parameters:
q - Query da valutare
Overview Package Class Tree Deprecated Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes
SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD
utils
Class Constant
java.lang.Object |
+--utils.Constant
public class Constant extends java.lang.Object
Contiene valori per alcune costanti
Field Summary
static int DELAY
Ritardo di tempo tra l'esecuzione di due listener
static int DELAY_IP
Ritardo esecuzione IP statici
static double FANOUT
Fattore di ramificazione
static int HORIZON
Orizzonte dello Hop Count Routing Indices
static int LIFE_TIME_QUERY
Tempo di validità della query
static java.lang.String LOCAL_ADDRESS
Stringa 'localhost'
static int PORT_NUMBER_IN
Numero di porta utilizzato per le comunicazioni in ingresso
static int PORT_NUMBER_OUT
Numero di porta utilizzato per le comunicazioni in uscita
static java.lang.String SUMMARY
Stringa 'summary'
Valore massimo di modifiche che possono essere fatte all'indice locale prima di inviare i routing indices
static int TIMEOUT
Timeout dei socket
Constructor Summary
Constant()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Field Detail
SUMMARY
public static final java.lang.String SUMMARY
Stringa 'summary' See Also:
Constant Field Values
LOCAL_ADDRESS
public static final java.lang.String LOCAL_ADDRESS
Stringa 'localhost'
See Also:
Constant Field Values
PORT_NUMBER_IN
public static final int PORT_NUMBER_IN
Numero di porta utilizzato per le comunicazioni in ingresso See Also:
Constant Field Values
PORT_NUMBER_OUT
public static final int PORT_NUMBER_OUT
Numero di porta utilizzato per le comunicazioni in uscita See Also:
Constant Field Values
TIMEOUT
public static final int TIMEOUT
Timeout dei socket See Also:
Constant Field Values
THRESHOLD
Valore massimo di modifiche che possono essere fatte all'indice locale prima di inviare i routing indices
See Also:
Constant Field Values
HORIZON
public static final int HORIZON
Orizzonte dello Hop Count Routing Indices See Also:
Constant Field Values
FANOUT
public static final double FANOUT
Fattore di ramificazione See Also:
Constant Field Values
DELAY_IP
public static final int DELAY_IP
Ritardo esecuzione IP statici See Also:
Constant Field Values
DELAY
public static final int DELAY
Ritardo di tempo tra l'esecuzione di due listener See Also:
Constant Field Values
LIFE_TIME_QUERY
public static final int LIFE_TIME_QUERY
Tempo di validità della query See Also:
Constant Field Values
Constructor Detail
Constant
public Constant()
Overview Package Class Tree Deprecated Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes
SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD
utils
Class Message
+--utils.Message
All Implemented Interfaces:
java.io.Serializable
public class Message extends java.lang.Object
implements java.io.Serializable
Crea i diversi tipi di messaggi che possono essere scambiati tra le varie entità del sistema
See Also:
Serialized Form
Field Summary
private java.lang.Object
content
Contenuto del messaggio
private java.lang.String
type
Tipo del messaggio
Constructor Summary
Message(java.lang.String type)
Message(java.lang.String type, java.lang.Object content)
Method Summary
java.lang.Object getContent()
Restituisce il contenuto del messaggio
java.lang.String getType()
Restituisce il tipo del messaggio
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Field Detail
type
private java.lang.String type
Tipo del messaggio
content
private java.lang.Object content
Contenuto del messaggio
Constructor Detail
Message
public Message(java.lang.String type)
Message
public Message(java.lang.String type, java.lang.Object content)
Method Detail
getType
public java.lang.String getType()
Restituisce il tipo del messaggio Returns:
Il tipo del messaggio
getContent
public java.lang.Object getContent()
Restituisce il contenuto del messaggio Returns:
Il contenuto del messaggio
Overview Package Class Tree Deprecated Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes
SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD
aggregator.impl
Class MessageReceiver
java.lang.Object
+--java.lang.Thread |
+--aggregator.impl.MessageReceiver
All Implemented Interfaces:
java.lang.Runnable
public class MessageReceiver extends java.lang.Thread
Thread utilizzato per la ricezione e l'invio dei messaggi.
Field Summary
private aggregator.impl.AggregatorImpl
aggregator
Utilizzato per invocare i metodi di Aggregator
private java.net.ServerSocket serverSocket
Utilizzato per la ricezione dei messaggi
private boolean state
Utilizzato per la terminazione di MessageReceiver
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
Constructor Summary
MessageReceiver(aggregator.impl.AggregatorImpl aggregator, boolean isMulticast)
Method Summary
void run()
Ricezione dei messaggi e invocazione dei metodi, identificati dal tipo di messaggio ricevuto, dell'Aggregator.
void sendMessage(utils.Message msgToSend,
java.net.InetAddress address, int destinationPort)
Invia un messaggio.
void terminate()
Provoca la terminazione del thread.
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Field Detail
aggregator
private aggregator.impl.AggregatorImpl aggregator
Utilizzato per invocare i metodi di Aggregator
state
private boolean state
Utilizzato per la terminazione di MessageReceiver
serverSocket
private java.net.ServerSocket serverSocket
Utilizzato per la ricezione dei messaggi
Constructor Detail
MessageReceiver
public MessageReceiver(aggregator.impl.AggregatorImpl aggregator, boolean isMulticast)
Method Detail
sendMessage
public void sendMessage(utils.Message msgToSend, java.net.InetAddress address, int destinationPort)
Invia un messaggio.
Parameters:
msgToSend - messaggio da inviare
address - indirizzo ip al quale inviare il messaggio
destinationPort - porta sulla quale è in ascolto il destinatario del messaggio
terminate
public void terminate()
Provoca la terminazione del thread.
run
public void run()
Ricezione dei messaggi e invocazione dei metodi, identificati dal tipo di messaggio ricevuto, dell'Aggregator.
Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread
Overview Package Class Tree Deprecated Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes
SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD
aggregator.impl
Class Neighbour
java.lang.Object |
+--aggregator.impl.Neighbour
public class Neighbour extends java.lang.Object
Contiene le informazioni relative alla raggiungibilità di un nodo vicino.
Field Summary
private boolean alive
Indica se il nodo è raggiungibile
private java.util.Calendar
lastKeepAliveTime
Istante di tempo in cui è stato inviato l'ultimo messaggio di keepAlive
private java.lang.String
name
Hostname del nodo
Constructor Summary
Neighbour(java.lang.String name)
Method Summary
java.util.Calendar getLastKeepAliveTime()
Restituisce l'istante di tempo in cui è stato inviato l'ultimo messaggio di keepAlive
java.lang.String getName()
Restituisce lo hostname del nodo
boolean isAlive()
Controlla la raggiungibilità di un nodo
isExpired()
Controlla se ha ricevuto gli ultimi messaggi di keepAlive.
void setAlive(boolean isAlive)
Imposta la raggiungibilità di un nodo
void setLastKeepAliveTime()
Memorizza l'istante di tempo in cui viene inviato l'ultimo messaggio di keepAlive
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Field Detail
name
private java.lang.String name
Hostname del nodo
alive
private boolean alive
Indica se il nodo è raggiungibile
lastKeepAliveTime
private java.util.Calendar lastKeepAliveTime
Istante di tempo in cui è stato inviato l'ultimo messaggio di keepAlive
Constructor Detail
Neighbour
public Neighbour(java.lang.String name)
Method Detail
getName
public java.lang.String getName()
Restituisce lo hostname del nodo Returns:
Lo hostname del nodo
setAlive
public void setAlive(boolean isAlive)
Imposta la raggiungibilità di un nodo Parameters:
isAlive - Indica se il nodo è raggiungibile
isAlive
public boolean isAlive()
Controlla la raggiungibilità di un nodo Returns:
True, se il nodo è raggiungibile
setLastKeepAliveTime
public void setLastKeepAliveTime()
Memorizza l'istante di tempo in cui viene inviato l'ultimo messaggio di keepAlive
getLastKeepAliveTime
public java.util.Calendar getLastKeepAliveTime()
Restituisce l'istante di tempo in cui è stato inviato l'ultimo messaggio di keepAlive
Returns:
Istante di tempo in cui è stato inviato l'ultimo messaggio di keepAlive
isExpired
public boolean isExpired()
Controlla se ha ricevuto gli ultimi messaggi di keepAlive.
Returns:
True, se ha ricevuto gli ultimi messaggi di keepAlive
Overview Package Class Tree Deprecated Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes
SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD
agent.impl
Class ProviderExecution
java.lang.Object |
+--java.util.TimerTask |
+--agent.impl.ProviderExecution
All Implemented Interfaces:
java.lang.Runnable
public class ProviderExecution extends java.util.TimerTask
Contenitore per gli InformationProvider da schedulare.
Field Summary
private agent.impl.AgentImpl
agent
Utilizzato per invocare i metodi di Agent
private long expiredTime
Tempo di validità del Service Data
private java.lang.Object[]
keys
Parole chiave usate per indicizzare il Service Data
private java.lang.String
providerClassName
Nome dell'Information Provider da schedulare
private java.lang.String
resourceDescriptor
Nome del descrittore della risorsa
private java.lang.String
serviceDataName
Nome del Service Data da modificare
Fields inherited from class java.util.TimerTask
Constructor Summary
ProviderExecution(agent.impl.AgentImpl agent,
java.lang.String serviceDataName, java.lang.String providerClassName, java.lang.String resourceDescriptor, long expiredTime, java.lang.Object[] keys)
Method Summary
agent.impl.ProviderExecution cloneProvider()
Crea un clone del Provider
long getExpiredTime()
Restituisce il tempo di validità del Service Data
java.lang.String getServiceDataName()
Restituisce il nome del Service Data
void run()
Schedula lo Information Provider e aggiorna il valore del Service Data
Methods inherited from class java.util.TimerTask
cancel, scheduledExecutionTime
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Field Detail
agent
private agent.impl.AgentImpl agent
Utilizzato per invocare i metodi di Agent
serviceDataName
private java.lang.String serviceDataName
Nome del Service Data da modificare
providerClassName
private java.lang.String providerClassName
Nome dell'Information Provider da schedulare
resourceDescriptor
private java.lang.String resourceDescriptor
Nome del descrittore della risorsa
expiredTime
private long expiredTime
Tempo di validità del Service Data
keys
private java.lang.Object[] keys
Parole chiave usate per indicizzare il Service Data
Constructor Detail
ProviderExecution
public ProviderExecution(agent.impl.AgentImpl agent,
java.lang.String serviceDataName, java.lang.String providerClassName, java.lang.String resourceDescriptor, long expiredTime,
java.lang.Object[] keys)
throws org.globus.ogsa.GridServiceException
Method Detail
getServiceDataName
public java.lang.String getServiceDataName()
Restituisce il nome del Service Data Returns:
Il nome del Service Data
getExpiredTime
public long getExpiredTime()
Restituisce il tempo di validità del Service Data Returns:
Il tempo di validità del Service Data
cloneProvider
public agent.impl.ProviderExecution cloneProvider() throws org.globus.ogsa.GridServiceException
Crea un clone del Provider Throws:
org.globus.ogsa.GridServiceException
run
public void run()
Schedula lo Information Provider e aggiorna il valore del Service Data Specified by:
run in interface java.lang.Runnable
Specified by:
run in class java.util.TimerTask
Overview Package Class Tree Deprecated Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes
SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD