BlazeDS Destino destroy ()?
-
05-07-2019 - |
Pergunta
Eu tenho um destino BlazeDS e o escopo é definido para pedido. Existe uma maneira de obter BlazeDS para chamar destroy () quando o pedido está completo? Existe outra maneira de saber quando o pedido está completo?
Eu sei que posso usar finalize (), mas isso só é chamado quando a coleta de lixo ocorre.
Obrigado, Matt
Solução 2
Depois de navegar através do código fonte BlazeDS eu descobri como fazer isso usando um adaptador personalizado. Aqui está a fonte.
package mypackage.adapters;
import java.lang.reflect.Method;
import java.util.Vector;
import flex.messaging.services.remoting.RemotingDestination;
import flex.messaging.services.remoting.adapters.JavaAdapter;
import flex.messaging.util.MethodMatcher;
public class MyAdapter extends JavaAdapter {
protected void saveInstance(Object instance) {
try {
MethodMatcher methodMatcher = ((RemotingDestination)getDestination()).getMethodMatcher();
Method method = methodMatcher.getMethod(instance.getClass(), "destroy", new Vector());
if ( method != null ) {
method.invoke(instance);
}
}
catch ( Exception ex ) {
ex.printStackTrace(System.out);
}
super.saveInstance(instance);
}
}
Outras dicas
Por que você não pode anexá-lo ao final do seu manipulador de solicitações?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow