package com.sesoft.dev.mq.app;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Hashtable;
import oracle.jdbc.xa.client.OracleXADataSource;
import com.ibm.mq.MQC;
import com.ibm.mq.MQException;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
/**
* Copyright (c) 2010,Selenium Soft All rights reserved.
* @author eric.wang
* @date 2010-9-25
* @说明 MQ与ORACLE数据库的XA事务操作
*/
public class MQOrclXA {
public static final String qmName = "QM_eric";
public static final String queue = "default";
private static MQQueueManager qmgr = null;
private static Connection conn = null;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public static void initialize() throws Exception {
Hashtable properties = new Hashtable();
// 设置THREAD_AFFINITY_PROPERTY=TRUE,意思是多阶段事务不支持Shared方式的连接
properties.put(MQC.THREAD_AFFINITY_PROPERTY, new Boolean(true));
//下面可以取二个值MQC.TRANSPORT_MQSERIES_BINDINGS or MQC.TRANSPORT_MQSERIES_CLIENT
properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_BINDINGS);
qmgr = new MQQueueManager("QM_eric", properties);
//准备XA数据库
OracleXADataSource xads = new OracleXADataSource();
String dburl2 = "jdbc:oracle:thin:@192.168.21.226:1521:test";
xads.setURL(dburl2);
xads.setUser("edientjoin");
xads.setPassword("edientjoin");
// 得到连接
conn = qmgr.getJDBCConnection(xads);
// 关闭自动提交,必须
conn.setAutoCommit(false);
// all done
System.out.println("初始化完成");
}
public void doTransaction(){
try {
// theQueueManager.begin();
String sql = "update employees t set t.last_name='wang' where t.employee_id='1'";
PreparedStatement stmt = conn.prepareStatement(sql);
String msg = "A Msg";
stmt.execute();
stmt.close();
sendMsg(msg);
//不用提交数据库的事务,由消息中间件负责提交事务。
qmgr.commit();
// qmgr.backout();
System.out.println(" 事务操作成功");
}
catch (Exception e) {
// 发送失败的操作
System.out.println("事务操作失败,backout,错误信息是:");
e.printStackTrace();
try {
qmgr.backout();
}
catch (MQException me) {
System.out.println("backout失败:");
me.printStackTrace();
}
}
finally {
System.out.println("准备关闭资源: ");
try {
qmgr.disconnect();
conn.close();
}
catch (Exception e) {
System.out.println("关闭失败,错误信息如下:");
e.printStackTrace();
}
}
}
private static void sendMsg(String text) throws Exception {
MQQueue queue = qmgr.accessQueue(qmName, MQC.MQOO_INPUT_AS_Q_DEF
| MQC.MQOO_OUTPUT, null, null, null);
MQMessage msg = new MQMessage();
msg.writeUTF(text);
MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options += MQC.MQPMO_SYNCPOINT;
queue.put(msg, pmo);
}
}
这儿的事务处理代码实际上是有问题的。
还要相关的配置才行。
如果是ORACLE数据库本身相关的XA事务,ORACLE提供有相关的DEMO。请参阅。
分享到:
相关推荐
《mq-msgpush-sdk-1.0.1.jar:消息推送SDK详解及应用实践》 在IT行业中,消息推送服务已经成为应用程序与用户互动的关键组件。mq-msgpush-sdk-1.0.1.jar是一个专用于消息推送的Java软件开发工具包(SDK),它允许...
此代码是基于stm32平台,通过ADC读取MQ-2烟雾传感器代码,可直接修改引脚使用,适合初学者。
MQ-9一氧化碳传感器模块是一款广泛应用于环境监测和安全防护领域的设备,尤其在室内空气质量检测、工业生产安全监控等方面有着重要应用。该模块能够精确地检测环境中的一氧化碳(CO)浓度,对于预防一氧化碳中毒和...
程序是用于51单片机中驱动mq-7传感器所用的程序及芯片资料
MQ-6液化气传感器模块是一款广泛应用于气体检测领域的设备,尤其在家庭安全、工业环境监控等方面具有重要作用。这个压缩包文件包含了一系列关于MQ-6传感器模块的技术资料和软件测试工程源码,对于理解和使用这款...
MQ-2烟雾传感器模块是一种广泛应用在环境监测和安全防护领域的设备,主要用于检测气体浓度,尤其是烟雾和可燃气体。这款传感器模块以其高灵敏度和广泛的检测范围而备受青睐。下面将详细介绍MQ-2传感器模块的技术特性...
【Z-MQ-01烟雾浓度传感器】是一种常见的空气质量监测设备,主要用于检测环境中烟雾的浓度。在工业安全、智能家居、环境监测等领域有广泛应用。该传感器基于MQ系列气体传感器,MQ-2是其中一种型号,它能对烟雾、甲烷...
MQ-7一氧化碳传感器模块是一款广泛应用于环境监测和安全报警系统的传感器,尤其适用于检测一氧化碳(CO)这种有毒气体。这款传感器模块的核心是MQ-7传感器,它能够通过化学反应来感知环境中一氧化碳的浓度,并将其...
"MQ-2烟雾传感器设计资料原理图使用手册推荐" MQ-2烟雾传感器是一种常用的气体传感器,可以检测液化气、天然气、城市煤气等各种气体。下面是MQ-2烟雾传感器的设计资料原理图使用手册推荐的知识点总结: 一、尺寸和...
"MQ-3 酒精传感器使用指南" MQ-3 酒精传感器是一种常用的气体传感器,广泛应用于测量空气中的酒精、苯、己烷、液化石油气等气体的浓度。下面将详细介绍如何使用 MQ-3 酒精传感器。 MQ-3 酒精传感器介绍 MQ-3 酒精...
### MQ-5气敏传感器技术参数及测试电路详解 #### 一、MQ-5气敏传感器概述 MQ-5气敏传感器是一种广泛应用于家庭和工业领域中的气体检测设备,主要用于监测环境中液化气、天然气和城市煤气的存在。该传感器具有对...
在这个特定的案例中,"MQ-2的封装"指的是MQ-2烟雾传感器的PCB封装设计,这是Altium Designer中的一个重要概念。 封装在PCB设计中扮演着至关重要的角色,它是实际电子元件在电路板上的物理表示,包括元件的外形、...
这个压缩包文件“STM32使用MQ-2代码及资料.zip”包含了使用STM32微控制器配合MQ-2传感器进行气体检测的相关教程和代码资源。 首先,关于STM32的基础知识,它拥有强大的处理能力、丰富的外设接口和低功耗特性。在本...
MQ-2烟雾传感器模块是一种广泛应用在环境监测和安全防护领域的传感器,尤其在火灾预警系统中扮演着重要角色。这款传感器能够检测到多种气体的存在,包括烟雾、液化石油气(LPG)、甲烷(CH4)、丙烷(C3H8)和其他...
MQ-2气体传感器是一种广泛应用在环境监测领域的传感器设备,它主要设计用于检测各种气体的存在以及其浓度。这种传感器能够感应到多种气体,如甲烷(CH4)、液化石油气(LPG)、氢气(H2)以及一氧化碳(CO)等。MQ-2...
MQ-2 烟雾传感器模块是一个常用的气体传感器模块,用于检测液化气、天然气、城市煤气等气体的存在和浓度。该模块的主要芯片是 LM393 和 ZYM-Q2 气体传感器。它具有双路信号输出,包括模拟量输出和 TTL 电平输出,...
WebSphere MQ HP-UX 版,版本 5 发行版 3 提供以下新增的和更改的功能: WebSphere MQ HP-UX 版现在支持使用工业标准安全套接字层(SSL)保护的 WebSphere MQ 通道。有关详细信息,请参阅 WebSphere MQ Security...
MQ-系列传感器程序,使用STC12C5A60S2单片机自带AD,将采集到的数据上传到串口