February 01, 2011
Mark Wielaard: New GPG key.
Finally created a new GPG key using gnupg. The old one was a DSA/1024 bits one and 8 years old. The new one is a RSA/2048 bits one. I will use the new one in the future to sign any release tarballs I might create. pub 2048R/57816A6A 2011-01-29 Key f...
More »
February 01, 2011
Andrew Hughes: [SECURITY] IcedTea6 1.7.8, 1.8.5, 1.9.5 Released!.
We are pleased to announce a new set of security releases, IcedTea6 1.7.8, IcedTea6 1.8.5 and IcedTea6 1.9.5.
This update contains the following security updates:
The IcedTea project provides a harness to build the source code from OpenJDK6 u...
More »
December/2024
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 | | | | |
|
|
Decoupling event producers and event consumers in Java EE 6 using CDI and JMS
In this post I will share my recent findings about Container Dependency Injection in Java EE 6, in particular how to decouple the processing threads of event producers and event consumers.
Java EE 6 introduces a very nice dependency injection framework (CDI) that has superb support for the Observer pattern in the form of event broadcasting.
An Event in CDI is just a regular POJO:
public class MyEvent {
String data;
Date eventTime;
....
}
Events can be fired by any class through the use of the Event implementation injected automatically by the container via the @Inject annotation:
public class EventProducer {
@Inject @Any Event event;
public void doSomething() {
MyEvent e=new MyEvent();
e.data="This is a test event";
e.eventTime=new Date();
event.fire(e);
}
}
Observing events is even easier, one just needs to declare a method which takes a parameter with the @Observes annotation:
public class EventConsumer {
public void afterMyEvent(@Observes MyEvent event) {
// .. Insert event logic here
}
}
CDI will automagically wire EventProducer and EventConsumer, so that when EventProducer fires the event, EventConsumer.afterMyEvent gets called.
This is pretty cool, as now EventProducer and EventConsumer can work together without direct knowledge of each other.
There is however another, more subtle, form of coupling taking place: ...
Date: April, 14 2010
Url: http://www.java.net/blog/jjviana/archive/2010/04/13/decoupling-event-producers-and-consumers-jee6-using-cdi-and-jms
Others News
|