下面将对另一个常见的XA资源进行代码示例(使用的activemq5.7)
1) 下载activemq并启动服务。
2)创建Connection,Queue,Session,Destination,Message
public static void main(String[] args) throws Exception {
try{
String user="system";
String password="manager";
String url="tcp://localhost:61616";
ActiveMQXAConnectionFactory connectionFactory = new ActiveMQXAConnectionFactory(user,password,url);//创建connectionfactory
XAConnection xaConnection = connectionFactory.createXAConnection();//创建connection
XASession xaSession=xaConnection.createXASession();//创建session
XAResource xaResource=xaSession.getXAResource();//获得与session相关的XAResource
Destination destination=xaSession.createQueue("TestQueue");//创建一个Queue
MessageProducer producer=xaSession.createProducer(destination);//创建一个Destination
Jotm jotm=new Jotm(true,false);
TransactionManager transactionManager=jotm.getTransactionManager();
transactionManager.begin();//事务开始
Transaction transaction=transactionManager.getTransaction();
transaction.enlistResource(xaResource);//将相关的XAResource纳入事务的管理列表
TextMessage textMessage=xaSession.createTextMessage();//创建TextMessage
textMessage.setText(String.valueOf(System.currentTimeMillis()));//设置消息内容(偷懒,将当前时间转为字符串,做为消息内容了)
producer.send(textMessage);//发送消息
try{
transaction.commit();//事务提交
}catch(Exception e){
transaction.rollback();//事务rollback
}
jotm.stop();
}finally{
System.exit(0);
}
}
以上就是jms的JTA操作,当然了,前提是要实现了xa接口