
examples.javaee.mdb-bmt.readme.html Maven / Gradle / Ivy
The newest version!
HornetQ Java EE MDB Bean Managed Transaction Example
Java EE MDB Bean Managed Transaction Example
This example shows you how to send a message to an MDB configured to use Bean Managed Transactions
The example will send deploy a simple MDB and demonstrate sending a message and the MDB consuming it
JBoss AS configuration
Please refer to HornetQ Quickstart guide to install it in JBoss AS 5
Example step-by-step
To deploy and start the server, simply type ./build.sh deploy
(or build.bat deploy
on windows) from the example directory
To run the example, simply type ./build.sh
(or build.bat
on windows) from the example directory
To remove the example profile, simply type ./build.sh undeploy
(or build.bat undeploy
on windows) from the example directory
** make sure that JBOSS_HOME is set to the JBoss installation directory
- First we need to get an initial context so we can look-up the JMS connection factory and destination objects from JNDI. This initial context will get it's properties from the
jndi.properties
file in the directory config
initialContext = new InitialContext();
- We look up the JMS queue object from JNDI
Queue queue = (Queue) initialContext.lookup("/queue/testQueue");
- We look up the JMS connection factory object from JNDI
ConnectionFactory cf = (ConnectionFactory) initialContext.lookup("/ConnectionFactory");
- We create a JMS connection
connection = cf.createConnection();
- We create a JMS session. The session is created as non transacted and will auto acknowledge messages.
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- We create a JMS message producer on the session. This will be used to send the messages.
MessageProducer messageProducer = session.createProducer(queue);
- We create a JMS text messages that we are going to send.
TextMessage message = session.createTextMessage("This is a text message");
- We send messages to the queue
messageProducer.send(message);
- The MDB receives the message
We know the message is a TextMessage so we cast to it.
TextMessage tm = (TextMessage)message;
- The MDB gets the text and prints it
String text = tm.getText();
System.out.println("message " + text + " received");
- Now we can do something within a user transaction, lets just start and commit it
UserTransaction tx = ctx.getUserTransaction();
if(tx != null)
{
tx.begin();
System.out.println("we're in the middle of a transaction: " + tx);
tx.commit();
}
- And finally, always remember to close your JMS connections and resources after use, in a
finally
block. Closing a JMS connection will automatically close all of its sessions, consumers, producer and browser objects
finally
{
if (initialContext != null)
{
initialContext.close();
}
if (connection != null)
{
connection.close();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy