2016-10-21 2 views
0

Знаете ли вы, есть ли способ зарегистрировать, перехватить перехватчик, ввести значения вызываемого метода?Получить входное значение для ejb 3.1 throw interceptor

мой фактический перехватчик

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)); 
    } 
} 
} 

Фасоль является

@Interceptors({Interceptor.class}) 

@Stateless общественного класса MrBean реализует MrBeanRemote, MrBeanLocal {

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

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

Так что, если я вызвать метод печати с in = "print, что" перехватчик должен регистрировать "print t шапка". Является ли это возможным? Заранее спасибо

ответ

0

Вы хотите регистрировать параметры вашего метода, так что вы можете использовать getParameters() метод на InvocationContext:. http://docs.oracle.com/javaee/6/api/javax/interceptor/InvocationContext.html#getParameters()

+0

Я попытался log.debug (invocationcontext.getParameters() ToString ()); [Ljava.lang.Object; @ f72802c4 – Gio

+0

извините, я не могу отредактировать комментарий выше ... Я хотел сказать, что я пробовал этот журнал, но он печатает строку [Ljava.lang.Object; @ f72802c4 и не значение параметров – Gio

+0

@Gio: 'invocationcontext.getParameters()' возвращает массив объекта. Вам нужно перебрать этот массив. – shibli049

Смежные вопросы