Wie JEE6 macht die Verbindung zwischen Beobachter und Beobachteten (Observer-Muster)
Frage
habe ich auf JEE6 und etwas stört mich ein paar Blog-Artikel über Observer Muster Implementierung lesen ... ich keine Informationen atm finden, so dass ich dort fragen ...
Ich habe folgende exemples gefunden:
@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);
}
}
Und
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
}
}
Ich kann nicht verstehen, wie die Verbindung zwischen Ereignisverbrauchern und Event-Produzenten erfolgt ...
Ist es vereinbarungsgemäß die Methoden zu benennen? (Wo die Worte „auf“, „nach“, „vor“ ... werden Sinn haben)
Ist es durch Vergleich der angegebenen Argumente (hier String und MyEvent)?
Ich kann nicht wissen und nicht sehen, was es sonst ...
sein könnteLösung
Die Verbindung zwischen dem Ereignisse Brennen und dem Hörer basiert auf dem Ereignistyp.
In Ihrem Beispiel:
public class EventConsumer {
public void afterMyEvent(@Observes MyEvent event) {
// .. Insert event logic here
}
}
Diese Klasse werden alle erhalten gefeuert Ereignisse vom Typ MyEvent, egal woher sie kommen.
Quelle: http: // Download -llnw.oracle.com/javaee/6/api/javax/enterprise/event/Observes.html
Andere Tipps
Der Behälter hält Metadaten über alle im Inneren Bohnen. Beim Start registriert sie alle Beobachter Methoden zusammen mit dem Ereignistyp (die Class
des Arguments) sie beobachten. Jedes Mal, wenn ein Ereignis ausgelöst wird, wird die Liste der Beobachter für Methoden überprüft, die die geeignete Art der Veranstaltung übernehmen.