2012-07-25 10 views
7

Si tenemos un código en el campo que tiene un método al que llama otro producto, y recupera una lista de objetos. Y tenemos que hacer cambios en el código para hacerlo más flexible al rellenar la lista para devolver, ¿podemos crear un interceptor para el cliente, que intercepte el método antes de que regrese la lista y elimine los elementos de la lista antes? el producto que llama al método obtiene la lista.¿Pueden los interceptores ejb cambiar el valor de retorno de un método antes de que la clase llamante lo obtenga?

p. Ej.

OurCode.search() devuelve una lista de foundObjects

Otros productos llama OurCode.search, recibe 100 artículos

podemos crear un interceptor que intercepta antes de retornos OurCode.search y modificaciones en la lista de foundObjects, eliminando elementos innecesarios? Esto solo sería una solución temporal hasta una versión futura

Respuesta

10

Si bien no recomiendo hacerlo de esa manera (en aras de la comprensión, y como en mi experiencia la "solución temporal" se convertirá en una versión permanente) puede hacer esto con Interceptores.

@AroundInvoke 
Object filterSearchResults(InvocationContext ctx) throws Exception { 
    Object result = ctx.proceed(); 
    if (result != null) { 
     List<SearchResult> results = (List<SearchResult>)result; 
     // do whatever you want to to with your results here 
     return results; 
    } 
    return result; 
} 
Cuestiones relacionadas