PDA

View Full Version : [JAVA] aspectj e jboss


tglman
22-01-2008, 17:19
Salve a tutti ho un problemone bello grosso ;)
Stiamo sviluppando una nuova applicazione basata sul framework seam di jboss, ed ovviamente con application server jboss, e volevamo utilizzare un pò di programmazione ad aspetti...

Guardando tra le vari implementazioni Aspect Oriented(jboss AOP,aspectj, spring ....) avevamo scelto per potenzialita offerte aspectj, ma per nostra brutta sorpresa nn siamo riusciti a farla funzionare su jboss ... cercando un pò su internet mi sembra che sia un problema comune... e vi chiedevo se magari voi geni della programmazione siete riusciti a risolverlo ;)

In dettaglio implementiamo un applicazione, implementiamo gli aspetti, eseguiamo il deploy del tutto, e funziona come se nn ci fossero aspetti (ARRRGGGG).

P.S. lo so che potremmo usare jboss AOP ... ma siamo decisamente su livelli diversi rispetto apsectj ;)

Grazieeee!!!!

tglman
22-01-2008, 20:01
Scoperto L'arcano!!!!

Scusate per la domanda ... ma ho trovato la soluzione da solo!!!

Tanto per essere di aiuto a chi dovresse affrontare un problema come il mio spiego meglio il mio problema e la mia soluzione ;)

Aspectj a differenza di spring è jboss AOP non usa la reflection per inserire un join point nel codice, ma fa un'innezione di bytecode a compile-time questo vuol dire che ogni chiamata deve essere dichiarata nel codice e nn deve essere effettuta tramite reflection ;)
nel mio caso io avevo un metodo chiamato tramite el (Espression Language) quindi tramite reflection...

ed avendo scritto un pointcut cosi :

pointcut():call(void classe.metodo());


aspectj nn riusciva ad iniettare il bytecode perche la chiamata a quel metodo nn esisteva....

io personalmente nel mio caso ho risoloto cosi:

pointcut():execution(void classe.metodo());


cosi funziona ... semplicemente perchè il bytecode nn viene iniettato alla chiamata del metodo(che nn esiste ;) ) ma all'interno del metodo(che esiste ;)).

Grazie comunque a tutti!