项目背景:
分布式应用服务器,单点数据库
思路:
在数据库上做控制,保证事务串行化控制
给请求的资源分配一个唯一的锁,竞争到锁的线程开始执行业务
通过把请求锁的SQL写成SP,在代码执行的开始处调用
SP:
create or replace
PACKAGE BODY UTIL_LOCK IS
PROCEDURE request_lock(v_lockname in VARCHAR2, p_retval OUT INTEGER, p_lockhandle OUT VARCHAR2) IS
v_lockhandle LONG;
BEGIN
DBMS_LOCK.allocate_unique(v_lockname, v_lockhandle);
p_retval := dbms_lock.request(v_lockhandle,dbms_lock.x_mode,30000);
p_lockhandle :=v_lockhandle;
END request_lock;
------------------------------------------------------------
PROCEDURE release_lock(p_lockhandle IN VARCHAR2) IS
p_out NUMBER;
BEGIN
p_out := dbms_lock.release(p_lockhandle);
END release_lock;
------------------------------------------------------------
END UTIL_LOCK;
JAVA代码:
private boolean lock(Connection conn, String resource)
{
CallableStatement cs;
try
{
String lStrSP = "{call UTIL_LOCK.request_lock(?,?,?)}";
cs = conn.prepareCall(lStrSP);
cs.setString(1, resource);
cs.registerOutParameter(2, OracleTypes.NUMBER);
cs.registerOutParameter(3, OracleTypes.VARCHAR);
cs.execute();
int ret = cs.getInt(2);
this.handle = cs.getString(3);
cs.close();
return ret == 0;
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
调用:
if(lockutil.lock(conn,"resource")){
//place your code here
...
lockutil.release();
}
分享到:
相关推荐
分布式环境下自动并行化调度算法主要涉及如何有效地在分布式系统中分配和管理计算任务,以提高整个系统的计算效率。分布式系统是指通过网络将物理上分散的、具有独立功能的计算机连接在一起,按照一定的组织方式协调...
每个节点上的事务(T1、T2等)可能对不同部分的数据进行操作,这就需要一种机制来确保在分布式环境下的并发控制仍然能够保证数据的一致性和完整性。 为了解决这些问题,我们需要引入一些并发控制技术: 1. **锁定...
标题中提到的“具备分布式控制和环境感知能力的第二代模块化机器人EMERGE”是一个先进的技术研究话题,其中分布式控制和环境感知是两个核心知识点。分布式控制是指系统中的控制任务被分散到多个处理单元中,这些单元...
分布式智能微网发电控制系统是一种先进的能源管理解决方案,它结合了太阳能和沼气等可再生能源,以提高电力供应的稳定性和效率。在这个系统中,K60微控制器扮演着核心角色,它负责处理实时数据采集、控制策略执行...
Visual Basic与RS-232串行通信控制的最新版不仅介绍了串行通信的基本概念,还向读者展示了在Windows环境下设计通信程序的技巧与注意事项,是一本非常适合自动控制和通信领域开发人员及技术工程师使用的参考书。...
【基于串行总线分布式控制的新型教学电梯】 在当今的教育领域,为了培养学生的实践能力和理论知识结合,教学电梯成为自动...同时,这种分布式控制方式也为实际电梯工程提供了有价值的参考,可应用于更复杂的工业环境。
通过RS-485总线技术和虚拟仪器技术,可以实现在物理位置分散的环境下,对多个触控操作平台进行远程集中控制和状态监测。 RS-485是一种串行通信总线协议,因其多点通信、长距离传输和高抗干扰能力而广泛应用于工业...
分布式控制系统(Distributed Control System,DCS)是一类用于工业自动化控制的计算机系统,它由多个控制节点组成,每个节点负责系统的部分控制任务,节点之间通过网络进行通信。分布式水下航行器控制器是这种系统...
本教程主要涵盖了并发控制的基本概念、机制和技术,特别关注了分布式环境下的挑战。 首先,**并发控制**是确保在多用户同时访问数据库时,各个事务的执行结果如同它们依次执行一样,即保持事务的**可串行化**。**可...
它是一种支持分布式实时控制的串行通信网络,允许节点设备之间进行高效的数据交换,且无需区分主从设备,从而实现了真正的全分布式多机系统。CAN总线的主要特点包括:支持点对点、一点对多点以及全局广播等多种通信...
针对分布式环境下的并发控制,主要采用以下几种技术: 1. **封锁技术**:通过加锁机制来防止并发冲突。在分布式环境下,封锁技术需要考虑到数据的分布情况,以及如何有效地在多个节点间传播锁定信息。 2. **时标...
这个文件描述了一种自动化控制系统的组件和接口,这种系统被设计用于从各种传感器和执行器中采集数据,并将其传输到计算机进行处理。文件中列出了大量的技术术语和产品型号,这些信息可以帮助我们深入了解泓格提供的...
在分布式控制系统中,PC机与单片机之间的串行通讯设计是实现系统高效、可靠运行的关键环节。这种通讯方式常用于工业自动化、物联网设备、智能家居等领域,使得不同硬件平台能够协同工作,完成复杂的控制任务。以下是...
然而,在分布式环境下,两段锁协议并不能保证系统中不发生死锁。针对这一点,分布式系统中可能会采用不同的锁技术。在没有数据重复存储的情况下,可以使用分布式锁技术,每个节点设有局部锁管理器,负责处理本地数据...
而CAN总线则克服了这些限制,能支持更大的网络规模和更快的数据传输,更适合于分布式控制和自动化生产环境。 总结来说,通过使用CAN总线与RS-232的集成,可以构建出更高效、稳定且适应性强的分布式控制系统,尤其在...
理解并熟练掌握串行化技术对于开发可扩展、可维护的软件至关重要,特别是在需要持久化数据或进行分布式系统通信的场景下。通过上述知识点的学习和实践,你将能够更好地利用Java的串行化特性来解决实际问题。
ADMM是一种优化算法,它将大的优化问题分解为若干个更小、更容易处理的子问题,这些子问题可以在分布式环境中独立求解。在主从配电网的场景中,这种算法可以有效地协调各个局部控制器的决策,使得整体系统达到最优...
在现代工业自动化领域,分布式控制系统(Distributed Control System, DCS)被广泛应用于各种复杂工业环境中,以实现对生产过程的高效管理和控制。在这些系统中,上位机(Host Computer)通常扮演着监控与管理的角色...
在实际应用中,分布式控制系统能有效提升混凝土搅拌站(楼)的自动化程度,提高生产效率,降低人力资源成本,提升产品质量的稳定性和生产过程的安全性。同时,其灵活性和扩展性特点使其能够适应不同规模和不同类型的混...
分布式变电所自动化系统通常由智能控制单元、电气参数测量单元和继电保护装置组成,这些设备之间需要高效、准确地交换信息。通信网络在系统中承担着传递控制指令、反馈控制结果、传输电气参数和设备状态等关键任务。...