Pergunta

Eu li alguns artigos de blog sobre a implementação de padrões de observador no JEE6 e algo me incomoda ... Não consigo encontrar nenhuma informação caixa eletrônico, então pergunto lá ...

Eu encontrei os seguintes exemplos:

@Stateless
[...]
public class ParisJugService {

   @Inject
   Event event;

   public void helloParis(){
        System.out.println("Hello Paris");
        event.fire("hello Paris invoked!");
   }
}

@Stateless
public class EventReceiver {

    public void onHelloParis(@Observes String message){
        System.out.println("----------- " + message);
    }
}

E

public class MyEvent {
    String data;
    Date eventTime;
    ....

}

public class EventProducer {

  @Inject @Any Event<MyEvent> event;


  public void doSomething() {
       MyEvent e=new MyEvent();
      e.data="This is a test event";
      e.eventTime=new Date();
      event.fire(e);

  }

}


public class EventConsumer {


    public void afterMyEvent(@Observes MyEvent event) {

        // .. Insert event logic here
    }

}

Não consigo entender como o link entre o consumidor de eventos e o produtor de eventos é feito ...

É nomeando a Convenção dos Métodos? (Onde as palavras "on", "depois", "antes" ... terá sentido)

É por comparação de argumentos determinados (aqui string e myevent)?

Eu não posso saber e não vejo o que mais poderia ser ...

Foi útil?

Solução

O link entre o disparo do evento e o ouvinte é baseado no tipo de evento.

No seu exemplo:

public class EventConsumer {

    public void afterMyEvent(@Observes MyEvent event) {
        // .. Insert event logic here
    }

}

Esta aula receberá todos os eventos demitidos do tipo myevent, de onde eles vêm.

Fonte: http://download-llnw.oracle.com/javaee/6/api/javax/enterprise/event/observas.html

Outras dicas

O recipiente mantém os metadados sobre todos os grãos dentro dele. Na startup, ele registra todos os métodos de observador juntamente com o tipo de evento (a Class do argumento) eles observam. Sempre que um evento é demitido, a lista de observadores é verificada quanto a métodos que aceitam o tipo de evento apropriado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top