GFAL: Grid File Access Library Java API

Slides:



Advertisements
Presentazioni simili
Marco Barisione Estendere Python in C.
Advertisements

Programmazione con socket
1 Directory Il formato delle directory varia nei vari FS utilizzati in ambito Unix Quando una directory viene aperta viene restituito un puntatore a un.
SC che operano su file (1)
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Selezione (=scelta) con “if-else”
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Programmazione in Java Claudia Raibulet
Prova di verifica Fondamenti Informatica 1 15 Febbraio 2008.
void binario(int n); …………………
1 Gestione dei File. 2 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi –Si usano dall'interno dei programmi Realizzano.
1 Applet ed HTML Fondamenti di Informatica Corso D.
1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
1 Esempio di ADT e make Operazioni bit a bit su piu’ file.
FESR Trinacria Grid Virtual Laboratory ADAT (Archivi Digitali Antico Testo) Salvatore Scifo TRIGRID Second TriGrid Checkpoint Meeting Catania,
Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]
Classi: class Foo { public int x; public int y; public void swap (boolean z) { if (z) {int temp = x; x = y; y = temp;}; }; } Ambienti per le classi: Cenv.
Costruzione di Interfacce - Paolo Cignoni1 Costruzione di Interfacce Lezione 25 Xml for dummies Parte 2
Programmazione in Java
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
1 Chiamate di sistema Introduzione Errori : perror() Chiamate che lavorano su file.
Il linguaggio C Notate che ....
1 Chiamate di sistema Chiamate che lavorano su file.
FESR Trinacria Grid Virtual Laboratory University of Coimbra Data Management System gLite – LCG Salvatore Scifo INFN Catania Primo Grid.
Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 6 Marzo 2016.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
dCache Test effettuati al CNAF
Java: concetti e costrutti base
Condizioni decisionali
Metriche SE monitoring G.Donvito G.Cuscela INFN Bari
Giordano Scuderi Unico SRL Catania
Giordano Scuderi Unico SRL - Messina,
Job Application Monitoring (JAM)
L’AMBIENTE CODE BLOCKS E L’IO
I FILES AD ACCESSO SEQUENZIALE
INFN-AAI Autenticazione e Autorizzazione
Ambienti di Programmazione per il Software di Base
GFAL: Grid File Access Library Java API
Corso Java Esercitazione.
Programmazione e Laboratorio di Programmazione
iterazione o ricorsione nel pensare per OGGETTI
Programmazione e Laboratorio di Programmazione
ADO Per gestire i database con tecnologia ASP si utilizzano strumenti ADO (ActiveX Data Objects): un'architettura che fornisce oggetti.
Programmazione e Laboratorio di Programmazione
File System ed Input/Output
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Eccezioni – Precisazioni e approfondimenti
INFN-AAI Autenticazione e Autorizzazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
APPUNTI SUL LINGUAGGIO C
Condizioni decisionali
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
Condizioni decisionali
concetti ed applicazioni
Programmazione e Laboratorio di Programmazione
Dalla programmazione tradizionale al paradigma OO
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Ese 3 (del 3 Aprile 2003).
Corso di programmazione, Simulazione, ROOT, code, ecc. ecc.
Transcript della presentazione:

GFAL: Grid File Access Library Java API Diego Scardaci INFN - Catania Tutorial per i Neo Assunti del Progetto PI2S2 Messina, 11.01.2007

GFAL: Grid File Access Library Libreria client POSIX (like) I/O per l’accesso diretto ai dati Perché GFAL: L’interazione con gli SE richiede l’utilizzo di alcuni componenti: Servizio di file catalog per localizzare le repliche Storage Resource Management (SRM) Meccanismi di accesso ai file da un SE sul Worker Node. Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFAL: Grid File Access Library GFAL effettua questi task per te: Nasconde queste interazioni all’utente Fornisce un’interfaccia POSIX per le operazioni di I/O; Utilizza la shared library (versioni threaded e unthreaded): libgfal.so, libgfal_pthr.so Richiede un unico header file: gfal_api.h Fornisce all’utente tutti I comandi necessari per lo storage management Offre un’interfaccia all’SRM Protocolli supportati: file (accesso locale o nfs-like) dcap, gsidcap and kdcap (accesso dCache) rfio (accesso castor) e gsirfio (dpm) Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFAL: File I/O C API (I) int gfal_access (const char *path, int amode); int gfal_chmod (const char *path, mode_t mode); int gfal_close (int fd); int gfal_creat (const char *filename, mode_t mode); off_t gfal_lseek (int fd, off_t offset, int whence); int gfal_open (const char * filename, int flags, mode_t mode); ssize_t gfal_read (int fd, void *buf, size_t size); int gfal_rename (const char *old_name, const char *new_name); ssize_t gfal_setfilchg (int, const void *, size_t); int gfal_stat (const char *filename, struct stat *statbuf); Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFAL: File I/O C API (II) int gfal_unlink (const char *filename); ssize_t gfal_write (int fd, const void *buf, size_t size); int gfal_closedir (DIR *dirp); int gfal_mkdir (const char *dirname, mode_t mode); DIR *gfal_opendir (const char *dirname); struct dirent *gfal_readdir (DIR *dirp); int gfal_rmdir (const char *dirname); Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFAL: File I/O Java API Motivazione: Fornire delle API GFAL al sempre più vasto gruppo di programmatori Java. Perché Java: Velocità di sviluppo Semplicità di sviluppo (maggior numero di programmatori disponibili) Molte applicazioni ormai sono “pure Java” https://grid.ct.infn.it/twiki/bin/view/GILDA/APIGFAL Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFAL Java API: Le classi GFalFile: rappresentazione di un file remoto (memorizzato su uno SE). GFalDirectory: rappresentazione di una directory remota di uno SE. GFalUtilities: raggruppa alcune importanti utility. Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFalFile: createFile public int createFile(String name, int mode, boolean isSurl, boolean isLargeFile) throws GFalFileException name = nome logico di uno SE o un SURL (es. srm://aliserv6.ct.infn.it/dpm/ct.infn.it/home/gilda/generated/2006-06-22/filetest) mode = permessi di accesso da associare al file che si sta creando. isSurl = se “true” il parametro name contiene un SURL, se “false” il parametro name contiene il nome di uno SE isLargeFile = se “true” indica che il file deve essere creato come large file (fino a 263 bytes). Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFalFile: openFile public int openFile(String fileName, int flags, int mode, boolean isLargeFile) throws GFalFileException name = il nome del file in uno dei seguenti formati: lfn, guid, SURL o TURL. flags = OR delle seguenti costanti: READONLY, WRITEONLY, CREAT, LARGEFILE (se utilizzi CREAT name non può essere nè un lfn nè un GUID). mode = permessi di accesso associati al file che si sta creando. isLargeFile = indica se è o non è un large file. Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFalFile: gli altri metodi public byte[] readFile(int size) Legge size bytes dal file precedentemente aperto. public int writeFile(byte[] buffer) Scrive l’array di bytes buffer sul file precedentemente aperto. public long lseekFile(long offset, int seekMode, boolean isLargeFile) Posiziona/Riposiziona ad offset il puntatore del file associato a questo oggetto. public int closeFile() Chiude il file. public int lfcRegisterFile(java.lang.String logicalFileName) Registra il file associato a questo oggetto nel catalogo lfc. public java.lang.String getSurl() Restituisce il SURL del file associato a questo oggetto. Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFalDirectory public int openDir(String dirName) Apre una directory. public String[] readDir() Legge il contenuto di una directory. public int closeDir() Chiude una directory. public static int makeDir(String dirName, int mode) Crea una directory. public static int rmDir(String dirName) Cancella una directory. Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFalUtilities public int accessFile(java.lang.String fileName, int mode) Controlla l’esistenza o l’accessibilità di un file/directory path, in base al bit pattern settato in mode, utilizzando l’ID dell’utente reale. public int chmodFile(java.lang.String fileName, int mode) Cambia la modalità di accesso ad un file o a una directory. public long[] statFile(java.lang.String fileName, boolean largeFile) Restituisce informazioni relative ad un file/directory (ad es. la dimensione). public long[] lstatFile(java.lang.String fileName, boolean largeFile) Come statFile eccetto per i link simbolici. In questo caso sono restituite informazioni relative al link e non al file puntato dal link. public int renameFile(java.lang.String oldName, java.lang.String newName) Rinomina un file/directory. public int deleteFile(java.lang.String fileName) Cancella un file/directory. Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

Configurare l’ambiente Librerie GFAL: gfal.jar, libGFalFile.so e libgfal.so Variabili d’ambiente: LCG_RFIO_TYPE=<SE type> (es. LCG_RFIO_TYPE=dpm) LCG_GFAL_VO=<your VO> LCG_GFAL_INFOSYS=<your BDII> LCG_CATALOG_TYPE=lfc LFC_HOST=<LFC_HOSTNAME> (eg. LFC_HOST=lfc-gilda.ct.infn.it) LD_LIBRARY_PATH=<path libGFalFIle.so>:$LD_LIBRARY_PATH CLASSPATH=<path gfal.jar>:$CLASSPATH Librerie aggiuntive: lcg_util, globus_ftp_client_gcc32, globus_gass_copy_gcc32 Prima di eseguire un applicativo che utilizza le API GFAL assicurati di possedere un proxy valido. Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFAL JAVA API: Un esempio import it.infn.catania.gfal.*; public class Sample { public static void main (String args[]) { String fileName = "aliserv6.ct.infn.it"; try { GFalFile gFalFile= new GFalFile(); gFalFile.createFile(fileName,644,false,false); byte[] dati = new byte[1024]; int ret = gFalFile.writeFile(dati); if (ret==-1) { System.exit(1); } ret = gFalFile.closeFile(); ret = gFalFile.lfcRegisterFile(“lfn:/grid/gilda/test/1.dat”); catch (GFalFileException exc) { exc.printStackTrace(); }} Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

J N I GFAL JAVA API: Soluzione Tecnica APPLICATIVO JAVA GFAL API JAVA WRAPPER GFAL API GFAL API C SERVIZI GRID Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFAL JAVA API: Soluzione Tecnica Classe Java: package it.infn.catania.gfal; … public class GFalFile { static { System.loadLibrary(“GFalFile”); } private native int openGFalFile(String fileName, int mode, int perm, boolean isLargeFile); private native int closeGFalFile(int fd); public int openFile(String fileName, int flags, int mode, boolean isLargeFile) throws GFalFileException { int ret = openGFalFile(fileName, flags, mode, isLargeFile); Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFAL JAVA API: Soluzione Tecnica Wrapper C (libGFalFile.so): #include <gfal_api.h> #include <jni.h> #include "it_infn_catania_gfal_GFalFile.h" … JNIEXPORT jint JNICALL Java_it_infn_catania_gfal_GFalFile_openGFalFile (JNIEnv *env, jobject obj, jstring fileName, jint mode, jint permission, jboolean largeFile) { int fd; const char *str = (*env)->GetStringUTFChars(env, fileName, 0); if(largeFile) fd = gfal_open64(str, mode, permission); else fd = gfal_open(str, mode, permission); (*env)->ReleaseStringUTFChars(env, fileName, str); …//check errors return fd; } Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFAL API: Javadoc Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

GFAL API: Javadoc Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007

Any questions ? Messina, Tutorial per i Neo Assunti del Progetto PI2S2, 11.01.2007