Auto-Creating JMS Destinations With JMS 2.0 and Java EE 7 📎
Java EE 7 and JMS 2.0 introduced the @JMSDestinationDefinitions annotation which allows automatic creation of JMS resources at deployment time:
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.jms.JMSDestinationDefinition;
import javax.jms.JMSDestinationDefinitions;
@JMSDestinationDefinitions(
value = {
@JMSDestinationDefinition(
name = "java:/queue/duke-queue",
interfaceName = "javax.jms.Queue",
destinationName = "duke"
),
@JMSDestinationDefinition(
name = "java:/topic/duke-topic",
interfaceName = "javax.jms.Topic",
destinationName = "duke-topic"
)
}
)
@Startup
@Singleton
public class Initializer {
@Resource(lookup = "java:/queue/duke-queue")
private Queue queue;
@Produces
public Queue expose() {
return this.queue;
}
}
The conveniently created JMS destination (Queue or Topic) can be immediately exposed to dependency injection with the CDI @Produces
annotation.
See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting