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).

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 ...