2016-10-21 1 views
0

Savez-vous s'il existe un moyen de se connecter, lancer un intercepteur, les valeurs d'entrée de la méthode appelée?Récupère la valeur d'entrée de l'intercepteur de jet 3.1 ejb

mon intercepteur réelle est

public class Interceptor { 
@AroundInvoke 
public Object interceptor(InvocationContext invocationcontext) throws Exception{ 
    //Stampa prima del metodo 
    long startTime = System.currentTimeMillis(); 
    log.debug("Invoked method: "+invocationcontext.getMethod().getName()); 
    //here I would like to log also parameters. 
    try{ 
     return invocationcontext.proceed(); 
    } finally{ 
     log.debug("End of method: " + invocationcontext.getMethod().getName()); 
     log.debug(" duration: " + (System.currentTimeMillis() - startTime)); 
    } 
} 
} 

Le haricot est

@Interceptors({Interceptor.class}) 

@Stateless public class MrBean implémente MrBeanRemote, MrBeanLocal {

/** 
* Default constructor. 
*/ 
public MrBean() {  
} 

public void print(String in){ 
    System.out.println("Print: " + in); 
} 
} 

Donc, si j'appelle la méthode d'impression avec in = "print that" l'intercepteur devrait se connecter "print t chapeau". C'est possible? Merci à l'avance

Répondre

0

Vous voulez enregistrer les paramètres de votre méthode, vous pouvez utiliser la méthode getParameters() sur le InvocationContext:. http://docs.oracle.com/javaee/6/api/javax/interceptor/InvocationContext.html#getParameters()

+0

J'ai essayé log.debug (invocationcontext.getParameters() toString ()); [Ljava.lang.Object; @ f72802c4 – Gio

+0

désolé, je ne suis pas en mesure de modifier pour commenter ci-dessus ... Je voulais dire que j'ai essayé ce journal, mais il imprime la chaîne [Ljava.lang.Object; @ f72802c4 et non la valeur des paramètres – Gio

+0

@Gio: 'invocationcontext.getParameters()' renvoie le tableau de Object. Vous devez parcourir sur ce tableau. – shibli049