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

Foi útil?

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
scroll top