Message Linking

Message linking is a feature that allows the messages being sent by any enterprise bean to be routed to a specific message-driven bean in the same deployment. By using message linking, you can orchestrate a flow of messages between components in the same application. This is achieved by assigning logical names to destinations instead of using a real JCA endpoint; we may think of message destination references as virtual endpoints (see Figure 8-6).

Sending events to the message-link abstraction, which delegates to a real destination

Figure 8-6. Sending events to the message-link abstraction, which delegates to a real destination

When we discussed this method earlier in the chapter, we never really mentioned where a user registration message was being sent; it could go to an emailing system or some other vendor listening in. However, message linking makes sure that the message goes directly to an explicit message-driven bean that we deploy.

For example, consider the following stateless session bean:

@Stateless(name = "MessageSendingEJB")
@Local(MessageSendingBusiness.class)
public class MessageSendingBean implements MessageSendingBusiness
{
   /**
    * Queue we'll send messages to; logical name as wired from
    * the message-destination-link
    */
   @Resource(name = "jms/MessageDestinationLinkQueue")
   // Name to match message-destination-ref-name
   private Queue queue;

   ...
}

Session Beans Should Not Receive Messages

Session beans respond to calls from EJB clients, and they ...

Get Enterprise JavaBeans 3.1, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.