Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71

    Intercettare le chiamate ad un metodo

    Ciao a tutti volevo sapere se è possibile intercettare le chiamate ad un metodo e effettuare delle operazioni prima la chiamata, e magari anche dopo.
    Un esempio potrebbeessere tutte le volte che inizia un metodo sceivere un log, e se fosse possibile intercettare l' "evento" d'invoke del metodo si potrebbe iserire la scrittura in un pnto unico.
    Questo è solo un esempio, si potrebbe usare in altri mille modi diversi.

    Spero di essermi spiegato, secondo me la cosa dovrebbe essere tecnicamente possibile, anche perchè in giro ho trovato qualcosa di simile.

    Ciao

  2. #2
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Si dovrebbe lavorare su un'interfaccia che viene chiamata ogni volta che viene lanciato un metodo...questo intendi...purtroppo per pura conoscenza della cosa aspetto la risposta d maggiori esperti in materia... cmq, forse ( ripeto forse ) si deve lavorare con il ClassLoader, o qualcosa di simile....
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71
    Era quello che pensavo anche io, infatti sto spulciando i jdoc cercando qualcosa di adeguato.
    Ho trovato questo: http://www.javastaff.com/article.php...0811191740202.
    Evidentemente è possibile, ma io volvo qualcosa di un po' più semplice e magari fattibile da me.

    Grazie comunque

  4. #4
    Quella di cui stai parlando è la AOP, cioè Programmazione Orientata agli Aspetti.
    Questa è implementata, ad esempio, da Spring (un potente framework).

    In pratica vengono definiti dei segnaposti (ad esempio: prima, dopo o durante l'esecuzione di un metodo) e a questi segnaposti vengono associate delle azioni da compiere.
    Da notare che ho usato una spiegazione estremamente semplificata per rendere l'idea.

    Spring però non è un framework che si impara in un paio di giorni e forse è una soluzione eccessivamente complicata per quello che vuoi fare, ma penso che sia un bene sapere che quello che chiedi è già stato implementato
    Esistono cmq anche altri framework per l'AOP, magari ne trovi qualcuno un pò meno complicato

    Matteo.
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  5. #5
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente inviato da matthew80
    Quella di cui stai parlando è la AOP, cioè Programmazione Orientata agli Aspetti.
    Questa è implementata, ad esempio, da Spring (un potente framework).

    In pratica vengono definiti dei segnaposti (ad esempio: prima, dopo o durante l'esecuzione di un metodo) e a questi segnaposti vengono associate delle azioni da compiere.
    Da notare che ho usato una spiegazione estremamente semplificata per rendere l'idea.

    Spring però non è un framework che si impara in un paio di giorni e forse è una soluzione eccessivamente complicata per quello che vuoi fare, ma penso che sia un bene sapere che quello che chiedi è già stato implementato
    Esistono cmq anche altri framework per l'AOP, magari ne trovi qualcuno un pò meno complicato

    Matteo.
    Guarda questo fantastico tutorial ( IN ITALIANO ) che ti insegna Spring in 3 giorni
    Scherzo....buono studio.

    P.s. Io mi fido di uno che dice di sapere quel che dice e non ho indagato su Spring....
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71
    In effetti Non volevo utilizzare un framework, a meno che non sia banale, come dicevo la mia idea era capire come si fa e poi farlo da me.
    Se proprio non trovo sessuno che mi sappia dare una dritta posso sempre vedere loro come hanno fatto.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71
    Forse ho trovato un altro modo, ma mi sembra un po' troppo articolato.
    Se ho capito bene, mi sebra ancor più complicata: dovrebbe essere quella di creare un agente java e sfruttando il pakage java.lang.instrument modificare direttamente il byte-code prima che venga caricato (cioè modificare direttamente il file .class in formato binario).

    Ho verificato come lavora Spring ed utilizza la classe proxy.
    Questo secondo metodo però è decisamente più lento rispetto al primo (circa 500 nano-secondi, contro un paio).

    Altri suggerimenti?

  8. #8
    Spring non è l'unico framework per la AOP.
    Ne esistono anche altri, più snelli, come ad esempio AspectJ.
    Inoltre potresti provare ad implementare un proxy tuo personale, seguendo le direttive del Proxy Pattern
    ( http://it.wikipedia.org/wiki/Proxy_pattern )
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  9. #9
    Ciao,

    sinceramente nn so se il pattern Decorator fa al caso tuo, in quanto non l'ho mai usato, ma dalla descrizione che ho trovato su Wiki magari ti può essere utile.

    In breve:

    Il design pattern decorator consente di aggiungere metodi a classi esistenti durante il run-time, permettendo una maggior flessibilità nell'aggiungere delle funzionalità agli oggetti. Questo viene realizzato costruendo un nuovo decoratore intorno all'oggetto originale. Normalmente ciò viene realizzato passando l'oggetto originale come parametro al costruttore del decoratore.
    Il Decorator manda le richieste al Component che può svolgere le operazioni precedenti e successive alla spedizione della richiesta.
    In questo modo si ottiene una maggior flessibilità, tanti piccoli oggetti al posto di uno molto complicato, andando a modificare il contorno e non la sostanza di una classe.


    Facci sapere
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71
    Ora verifico entrambe le soluzioni che mi hai dato e poi sicuramente faccio sapere.

    Ti faccio una domanda un po' fuori tema, ma che mi hanno suggerito le tue risposte: dove c'è un elenco dei principali pattern possibilimente in italiano (immagino che la definizione tu l'abbia copiata)?

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.