Chapter 26. JMS User's Guide
26.2.2. Accessing the Destination Object
Accessing a JMS destination within the code of an application component requires using a
Environment Reference
resource-env-ref
resource-env-ref-name jms/stockQueue /resource-env-ref-name
resource-env-ref-type javax.jms.Queue resource-env-ref-type
/resource-env-ref
The application component's source code should contain:
Queue q = (Queue) ctx.lookup("java:comp/env/jms/stockQueue");
The mapping to the actual JNDI name (for example, "myQueue") is defined in the JOnAS-specific
deployment descriptor in the following way:
jonas-resource-env
resource-env-ref-name jms/stockQueue /resource-env-ref-name
jndi-name myQueue jndi-name
/jonas-resource-env
26.2.3. Writing JMS Operations
A typical method performing a message-sending JMS operation looks like the following:
void sendMyMessage() {
ConnectionFactory cf = (ConnectionFactory)
ctx.lookup("java:comp/env/jms/conFact");
Queue queue = (Queue) ctx.lookup("java:comp/env/jms/stockQueue");
Connection conn = cf.createConnection();
Session sess = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
MessageProducer
ObjectMessage msg = sess.createObjectMessage();
msg.setObject("Hello");
sender.send(msg);
sess.close();
conn.close();
}
It is also possible for an application component to synchronously receive a message. Here is an EJB
method that performs synchronous message reception on a queue:
public String recMsg() {
ConnectionFactory cf = (ConnectionFactory)
ctx.lookup("java:comp/env/jms/conFact");
Queue queue = (Queue) ctx.lookup("java:comp/env/jms/stockQueue");
Connection conn = cf.createConnection();
Session sess = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
MessageConsumer mc = sess.createConsumer((Destination)queue);
conn.start();
ObjectMessage msg = (ObjectMessage) mc.receive();
String msgtxt =
sess.close();
conn.close();
return msgtxt;
}
, which is represented in the standard deployment descriptor as follows:
mp = sess.createProducer((Destination)queue);
(String) msg.getObject();
199
Resource
Need help?
Do you have a question about the APPLICATION SERVER - JONAS and is the answer not in the manual?
Questions and answers