CN102968333B - 使本机程序被主程序调用时继承事务上下文的方法和系统 - Google Patents

使本机程序被主程序调用时继承事务上下文的方法和系统 Download PDF

Info

Publication number
CN102968333B
CN102968333B CN201210222095.2A CN201210222095A CN102968333B CN 102968333 B CN102968333 B CN 102968333B CN 201210222095 A CN201210222095 A CN 201210222095A CN 102968333 B CN102968333 B CN 102968333B
Authority
CN
China
Prior art keywords
application server
machine
interface
sql statement
transaction context
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210222095.2A
Other languages
English (en)
Other versions
CN102968333A (zh
Inventor
M·B·阿南塔帕德马纳布
J·库里安
I·J·米切尔
A·索德
H·N·文基塔恰拉姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN102968333A publication Critical patent/CN102968333A/zh
Application granted granted Critical
Publication of CN102968333B publication Critical patent/CN102968333B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种使本机程序被主程序调用时继承事务上下文的方法和系统。所述方法包括:由第一托管环境中的本机应用服务器的接口接收用于由第二托管环境中的主应用服务器处的所述主应用调用所述本机应用服务器处的所述本机应用的唯一事务上下文标识符;由所述本机应用服务器的所述接口从所述本机应用接收SQL语句;由所述本机应用服务器的所述接口将所述SQL语句和所述唯一事务上下文标识符发送到所述主应用服务器以便执行;由所述本机应用服务器的所述接口从所述主应用服务器接收所述SQL语句的执行结果和所述唯一事务上下文标识符;以及由所述本机应用服务器的所述接口将所述结果发送到所述本机应用。

Description

使本机程序被主程序调用时继承事务上下文的方法和系统
技术领域
本发明涉及一种使本机程序在被单独环境中运行的主程序调用时继承相同事务上下文的方法和系统。
背景技术
包含嵌入式SQL语句的旧式COBOL应用通常在大型机或其他托管的环境中运行。为了实现现代化,可以基于Java虚拟机(JVM)环境在JavaEE应用服务器中重新托管旧式应用。此类重新托管可以导致包括两个不同应用的企业应用,一个使用诸如COBOL之类的本机语言编写,另一个使用Java编写。例如,Java应用在JavaEE兼容应用服务器(例如,WebSphereApplicationServer(WAS),其在自己的JVM进程中运行)中作为Java企业版(EE)应用运行。本机程序被托管在单独托管环境中,该环境在JVM进程外部作为本机OS进程运行。JavaEE应用充当事务协调器并调用本机应用。但是,在不修改本机应用的情况下,现有技术不会在相同事务上下文中调用该本机应用,并将使用来自两个环境的单独数据库连接。使用来自两个托管环境的单独数据库连接可在来自两个托管环境的应用访问同一数据库资源时导致死锁。
发明内容
根据本发明的一个实施例,提供了一种用于使本机应用在被单独托管环境中运行的主应用所调用时继承事务上下文的方法,所述方法包括:由第一托管环境中的本机应用服务器的接口接收用于由第二托管环境中的主应用服务器处的所述主应用调用所述本机应用服务器处的所述本机应用的唯一事务上下文标识符;由所述本机应用服务器的所述接口从所述本机应用接收SQL语句;由所述本机应用服务器的所述接口将所述SQL语句和所述唯一事务上下文标识符发送到所述主应用服务器以便执行;由所述本机应用服务器的所述接口从所述主应用服务器接收所述SQL语句的执行结果和所述唯一事务上下文标识符;以及由所述本机应用服务器的所述接口将所述结果发送到所述本机应用。
在本发明的一个方面中,由所述本机应用服务器的所述接口从所述本机应用接收SQL语句的步骤进一步包括:由所述本机应用服务器的所述接口将所述SQL语句转换为所述第二托管环境的格式。
在本发明的一个方面中,由所述本机应用服务器的所述接口从所述主应用服务器接收所述SQL语句的执行结果和所述唯一事务上下文标识符的步骤进一步包括:由所述本机应用服务器的所述接口将所述结果转换为所述第一托管环境的格式。
在本发明的一个方面中,由第一托管环境中的本机应用服务器的接口接收用于由第二托管环境中的主应用服务器处的所述主应用调用所述本机应用服务器处的所述本机应用的唯一事务上下文标识符的步骤进一步包括:由所述主应用服务器处的所述主应用调用所述本机应用;由所述主应用服务器将程序控制转移到所述第一托管环境;以及由所述主应用服务器将用于所述调用的所述唯一事务上下文标识符发送到所述本机应用服务器的所述接口。
在本发明的一个方面中,由所述本机应用服务器的所述接口将所述SQL语句和所述唯一事务上下文标识符发送到所述主应用服务器以便执行的步骤进一步包括:由所述主应用服务器的第二接口从所述本机应用服务器的所述接口接收所述SQL语句;由所述主应用服务器的所述第二接口将所述SQL语句的执行委托给所述主应用服务器的线程;由所述主应用服务器的所述线程在数据库上执行所述SQL语句并将执行结果返回到所述第二接口;以及由所述主应用服务器的所述第二接口将所述SQL语句的所述执行结果和所述唯一事务上下文标识符返回到所述本机应用服务器的所述接口。
在本发明的一个方面中,由所述本机应用服务器的所述接口从所述主应用服务器接收所述SQL语句的执行结果和所述唯一事务上下文标识符的步骤进一步包括:由所述本机应用服务器的所述接口判定所述结果是否包括所述SQL语句的执行错误;以及响应于判定所述结果包括所述错误,由所述本机应用服务器的所述接口将所述错误转换为所述第一托管环境的格式。
在本发明的一个方面中,还包括:由所述本机应用服务器的所述接口判定所述本机应用的执行是否已终止;响应于判定所述本机应用的执行已终止,由所述本机应用服务器的所述接口判定所述本机应用的执行终止是否正常;以及响应于判定所述本机应用的执行终止不正常,由所述本机应用服务器的所述接口向所述主应用服务器通知异常终止。
在此还描述和要求保护了对应于上述方法的系统和计算机程序产品。
附图说明
图1示出了一种用于使本机应用在被单独托管环境中运行的主应用所调用时继承相同事务上下文的系统的一个实施例;
图2是示出根据本发明的一种用于使本机应用在被单独托管环境中运行的主应用所调用时继承相同事务上下文的方法的一个实施例的流程图;
图3示出了用于使本机应用在被单独托管环境中运行的主应用所调用时继承相同事务上下文的系统的一个示例性实施例;以及
图4是更详细地示出根据本发明的用于使本机应用在被单独托管环境中运行的主应用所调用时继承相同事务上下文的方法的示例性实施例的流程图。
具体实施方式
如本领域的技术人员将理解的,本发明的各方面可以体现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了软件和硬件方面(在此通常可被称为“电路”、“模块”或“系统”)的实施例的形式。此外,本发明的各方面可以采取体现在一个或多个计算机可读介质(在介质中包含计算机可读程序代码)中的计算机程序产品的形式。
可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于)电、磁、光、电磁、红外线或半导体系统、装置或设备或其任意适当组合。所述计算机可读存储介质的更具体的实例(非穷举列表)将包括以下项:具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或其任意适当组合。在本文档的上下文中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的有形介质。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读程序代码。这种传播数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者设备使用或者与其结合使用的程序。
可以使用任何适当的介质(包括但不限于无线、线缆、光缆、RF等或其任意适当组合)来传输包含在计算机可读介质中的程序代码。
用于执行本发明的各方面的操作的计算机程序代码可以使用包含一种或多种编程语言的任意组合来编写,所述编程语言包括诸如(Java以及所有基于Java的商标和徽标是SunMicrosystems,Inc.在美国和/或其他国家/地区的商标)、Smalltalk、C++之类的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上并部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后者的情况中,所述远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,或者可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。
下面将参考根据本发明的各实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的各方面进行描述。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的所述指令产生用于实现一个或多个流程图和/或方块图方块中指定的功能/操作的装置。
这些计算机程序指令也可以被存储在能够引导计算机、其他可编程数据处理装置或其他设备以特定方式执行功能的计算机可读介质中,以便存储在所述计算机可读介质中的所述指令产生一件包括实现在所述一个或多个流程图和/或方块图方块中指定的功能/操作的指令装置的制品。
所述计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备,以导致在所述计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。
附图中的流程图和方块图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述流程图或方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能(多个)的一个或多个可执行指令。还应指出,在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为连续的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。还将指出,所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
在此使用的术语仅用于描述特定实施例的目的,并非旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”旨在同时包括复数形式,除非上下文另外明确指出。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定存在所声明的特性、整体、步骤、操作、元素和/或组件,但不排除存在或添加一个或多个其他特性、整体、步骤、操作、元素、组件和/或其组合。
以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对本发明的描述其目的在于示意和描述,并非是穷尽性的,也并非是要把本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说,在不偏离本发明范围和精神的情况下,显然可以作出许多修改和变型。对实施例的选择和说明,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施方式。
图1示出了一种用于使本机应用在被单独托管环境中运行的主应用所调用时继承相同事务上下文的系统的一个实施例。所述系统包括本机应用服务器101,其在运行上耦合到处理器102和计算机可读介质103。计算机可读介质103存储用于实现在第一环境中托管的本机应用104和SQL收发器105的计算机可读程序代码。所述系统还包括主应用服务器150,其在运行上耦合到处理器151和计算机可读介质152。计算机可读介质152存储用于实现在第二环境中托管的主应用153和SQL语句执行代码154的计算机可读程序代码。主应用服务器150充当主事务协调器。当要在主应用服务器150的托管环境中执行本机应用104中的嵌入式SQL语句时,SQL收发器105充当本机应用104与主应用服务器150之间的接口,以便SQL语句的执行继承与调用本机应用104的主应用153相同的事务上下文,而无需修改编译后的本机应用104。主应用服务器150通过SQL语句执行代码154在数据库155上执行所述SQL语句。根据本发明的各种实施例,处理器102执行存储在计算机可读介质103和152中的程序代码,如下面进一步描述的那样。
图2是示出根据本发明的一种用于使本机应用在被单独托管环境中运行的主应用所调用时继承相同事务上下文的方法的一个实施例的流程图。参考图1和2,响应于第二托管环境中的主应用153调用所述第一托管环境的本机应用104(201),SQL收发器105接收用于调用的唯一事务上下文标识符(ID)(202)。在执行本机应用104期间,SQL收发器105从本机应用104接收SQL语句(203)。如果必要,SQL收发器105将所述SQL语句转换为第二托管环境的SQL格式(204)。SQL收发器105然后将所述SQL语句和唯一事务上下文ID发送到第二托管环境中的主应用服务器310以便执行(205)。SQL收发器105和本机应用104然后等待来自第二托管环境的响应。
当SQL收发器105从主应用服务器310接收到所述SQL语句的执行结果以及所述唯一事务上下文ID时(206),SQL收发器105将所述结果转换为第一托管环境的格式(如果必要)(207),并将所述结果发送到本机应用104(208)。
图3示出了用于使本机应用在被单独托管环境中运行的主应用所调用时继承相同事务上下文的系统的一个示例性实施例。在此示例性实施例中,本机应用服务器101在第一环境中托管包括嵌入式SQL语句302的本机COBOL应用301。在编译阶段期间,本机应用服务器101处的翻译器303预编译COBOL源代码以使用调用SQL收发器105的代码段(snippet)替换嵌入式SQL语句302。例如,假设在COBOL源代码中发现以下嵌入式SQL语句:
EXECSQLDECLAREC1CURSORFOR
SELECTCHZCODE,AVLBL_QUANTITY
FROMCHEESE
END-EXEC
翻译器303使用以下内容替换此代码:
MOVE“EXECSQLDECLAREC1CURSORFOR
SELECTCHZCODE,AVLBL_QUANTITY
FROMCHEESE”CMD-BUFFER
CALLSQLTRANSRECVUSINGCMD-BUFFER,
其中“SQLTRANSRECV”是由SQL收发器105实现的函数,如下面描述的那样。
SQL收发器105负责将所述SQL语句从本机应用服务器101处的本机进程传送到JavaEE应用服务器310处的JVM进程以便执行。SQL收发器105还负责经由诸如套接字、共享存储器或消息队列之类的进程间通信(IPC)机制接收执行结果。在一个实施例中,SQL收发器105是与COBOL应用301一起被链接-编辑的库。所述系统中的每个COBOL应用301都具有它自己的SQL收发器105的实例。
使用唯一事务上下文ID标识通过SQL收发器105发送的每个SQL语句。使用此唯一事务上下文ID标识SQL语句执行的状态、结果集或错误。将唯一事务上下文ID作为与SQL语句相关的任何数据交换的一部分传送到JavaEE应用服务器310。SQL收发器105还将跨JavaEE和本机应用执行任何必要的数据转换。SQL收发器105还处理错误传播,其中从JavaEE应用311内报告的错误被相应地映射到本机嵌入式SQL格式或错误代码。
侦听器313包括在JAVAEE应用服务器的JVM进程中运行的线程,该线程持续等待来自SQL收发器105的请求。当侦听器313接收到来自SQL收发器105的请求时,侦听器312将该请求委托给JVM线程以便执行该请求中的SQL语句。可选地,此处理也可以被路由到由侦听器313生成的单独子线程(称为SQL工作线程314)。
SQL工作线程314包括专用线程以服务于包括多个SQL语句的单个被调用COBOL应用301。COBOL应用301的开头和结尾将被标记,并且SQL工作线程314将专门服务于COBOL应用301,直到被调用的COBOL应用301及其子程序停止它们的执行。SQL工作线程314与JAVAEE应用线程(经由COBOL应用调用代码312调用COBOL应用301)共享其到数据库155的连接。
SQL工作线程314接收由SQL收发器105以查询字符串格式传递的SQL语句,该查询字符串格式可能不能在JAVAEE应用服务器310中直接执行。如果不能执行,则SQL到Java数据库连接(SQL2JDBC)组件315将该查询转换为等效的JDBC调用,并且由SQL工作线程314在数据库155上执行转换后的查询。
图4是更详细地示出根据本发明的用于使本机应用在被单独托管环境中运行的主应用所调用时继承相同事务上下文的方法的示例性实施例的流程图。参考图3和4,当JavaEE应用311的COBOL调用代码312调用COBOL应用301时,将程序控制转移到COBOL应用301的托管环境(401)。SQL收发器105执行与侦听器313的初始握手并从JavaEE应用服务器310接收用于调用的唯一事务上下文ID(402)。响应于所述调用,执行COBOL应用301(403)。当COBOL应用301遇到嵌入式SQL语句302时(404),COBOL应用301将所述SQL语句发送到SQL收发器105(405)。如果必要,SQL收发器105将SQL语句302转换为JavaEESQL格式(406)。SQL收发器105然后将SQL语句302和所述唯一事务上下文ID连同任何其他相关元数据一起发送到JavaEE应用服务器310处的侦听器313(407)。SQL收发器105和COBOL应用301然后等待来自侦听器313的响应。
响应于从SQL收发器105接收SQL语句302和所述唯一事务上下文ID,侦听器313将SQL语句执行委托给SQL工作线程314之一(408)。SQL工作线程314在数据库155上执行SQL语句302(可能如上述那样已由SQLSQL2JDBC组件315转换)并将结果返回到侦听器313(409)。侦听器313将所述结果与所述唯一事务上下文ID一起返回到SQL收发器105(410)。
SQL收发器105从侦听器313接收所述结果以及所述唯一事务上下文ID(411)。然后检查所述结果以判定SQL执行是成功还是具有错误。如果所述结果指示错误(412),则SQL收发器105将所述错误转换为本机格式或错误代码(414)。否则,SQL收发器105将所述结果转换为本机应用格式(413)。然后将所述结果发送到COBOL应用301(415),并继续执行COBOL应用301(403)。
当COBOL应用301的执行终止(416)并且所述终止正常时(417),将程序控制返回到JavaEE应用311(419)。如果存在诸如COBOL应用301异常终止之类的异常,则向侦听器313通知可能断开连接(418)。然后采取适当的操作,并将程序控制返回到JavaEE应用311。
在一个实施例中,本发明的方法以两个阶段实现,即编译阶段和运行时阶段。在编译阶段中,翻译器303预编译COBOL应用源代码以插入代码段,如上面解释的那样。然后将COBOL代码段输入到COBOL编译器。将最终编译后的库部署在COBOL应用302的托管环境中。
此外,编译包含COBOL应用调用代码312的JAVAEE应用311并将其部署在JAVAEE应用服务器310上。
在运行时阶段中,JAVAEE应用311通过诸如J2EE连接器架构(JCA)或单连接器连接(SCA)接口调用之类的接口调用来调用COBOL应用301。下面是包括COBOL应用调用的实例JavaEE应用代码:
1......
2.//Attempttocreateadatabaseconnection
3.Stringurl="jdbc:odbc:"+args[0];
4.ConnectionfirstConn=DriverManager.getConnection(url,"dba","sql");
5........
6.....
7.//InvoketheCOBOLprogram
8.CobolRTS.callCobol(“DBSEL.ibmcob”,data_buffer);
9........
10.CobolRTS.callCobol(“DBUPDT.ibmcob”,data_buffer);
11.....
12.//Committhechanges
13.firstConn.commit();
在此实例中,COBOL应用301的调用在第8和10行发生,在这些点处,将程序控制转移到其中运行COBOL应用301的托管环境,并执行COBOL应用301。此实例中的COBOL应用“DBSEL.ibmcob”包含EXECSQL语句,这些语句已在预编译期间由上述翻译器303翻译为适当的代码段。当执行到这些代码段时,COBOL应用301联系SQL收发器105并将嵌入式SQL语句302传递到SQL收发器105。
SQL收发器105通过诸如IPC机制之类的预定义定制协议将SQL语句302连同所述唯一事务上下文ID和任何相关元数据信息一起传递到侦听器313。侦听器313已在JAVAEE应用服务器侧等待所述SQL语句。
当建立事务上下文时,在JavaEE应用服务器310中生成唯一事务上下文ID,并在初始握手请求期间将此唯一事务ID提供给SQL收发器105。SQL收发器105针对在本机COBOL应用301中调用的每个SQL语句传递所述唯一事务上下文ID。
在第10行处调用的COBOL应用“DBUPDT.ibmcob”将针对在其中执行的SQL语句使用相同的唯一事务上下文ID。这确保包含SQL语句的两个COBOL应用具有相同的事务上下文。
当侦听器313将SQL语句执行委托给SQL工作线程314时,此线程采用与做出调用的JavaEE应用311的数据库连接上下文相同的数据库连接上下文,从而使用相同的唯一事务上下文ID。结果被传播回SQL收发器105。
尽管通过本机COBOL应用和JavaEE应用环境描述了上面的实施例,但本发明的方法可以在其他环境中使用而不偏离本发明的精神和范围。
尽管根据示出的实施例描述了本发明,但本领域的技术人员将容易地意识到,所述实施例可以具有变型并且这些变型将在本发明的精神和范围内。因此,本领域的技术人员可以进行许多修改而不偏离所附权利要求的精神和范围。

Claims (18)

1.一种用于使本机应用在被单独托管环境中运行的主应用所调用时继承事务上下文的方法,所述方法包括:
由第一托管环境中的本机应用服务器的接口接收用于由第二托管环境中的主应用服务器处的所述主应用调用所述本机应用服务器处的所述本机应用的唯一事务上下文标识符;
响应于在所述第一托管环境中的本地应用服务器执行的所述本机应用遇到SQL语句,由所述本机应用服务器的所述接口从所述本机应用接收所述SQL语句;
由所述本机应用服务器的所述接口将所述SQL语句和所述唯一事务上下文标识符发送到所述主应用服务器以便执行;
由所述本机应用服务器的所述接口从所述主应用服务器接收所述SQL语句的执行结果和所述唯一事务上下文标识符;以及
由所述本机应用服务器的所述接口将所述结果发送到所述本机应用。
2.如权利要求1中所述的方法,其中由所述本机应用服务器的所述接口从所述本机应用接收SQL语句的步骤进一步包括:
由所述本机应用服务器的所述接口将所述SQL语句转换为所述第二托管环境的格式。
3.如权利要求1中所述的方法,其中由所述本机应用服务器的所述接口从所述主应用服务器接收所述SQL语句的执行结果和所述唯一事务上下文标识符的步骤进一步包括:
由所述本机应用服务器的所述接口将所述结果转换为所述第一托管环境的格式。
4.如权利要求1中所述的方法,其中由第一托管环境中的本机应用服务器的接口接收用于由第二托管环境中的主应用服务器处的所述主应用调用所述本机应用服务器处的所述本机应用的唯一事务上下文标识符的步骤进一步包括:
由所述主应用服务器处的所述主应用调用所述本机应用;
由所述主应用服务器将程序控制转移到所述第一托管环境;以及
由所述主应用服务器将用于所述调用的所述唯一事务上下文标识符发送到所述本机应用服务器的所述接口。
5.如权利要求1中所述的方法,其中由所述本机应用服务器的所述接口将所述SQL语句和所述唯一事务上下文标识符发送到所述主应用服务器以便执行的步骤进一步包括:
由所述主应用服务器的第二接口从所述本机应用服务器的所述接口接收所述SQL语句;
由所述主应用服务器的所述第二接口将所述SQL语句的执行委托给所述主应用服务器的线程;
由所述主应用服务器的所述线程在数据库上执行所述SQL语句并将执行结果返回到所述第二接口;以及
由所述主应用服务器的所述第二接口将所述SQL语句的所述执行结果和所述唯一事务上下文标识符返回到所述本机应用服务器的所述接口。
6.如权利要求1中所述的方法,其中由所述本机应用服务器的所述接口从所述主应用服务器接收所述SQL语句的执行结果和所述唯一事务上下文标识符的步骤进一步包括:
由所述本机应用服务器的所述接口判定所述结果是否包括所述SQL语句的执行错误;以及
响应于判定所述结果包括所述错误,由所述本机应用服务器的所述接口将所述错误转换为所述第一托管环境的格式。
7.如权利要求1中所述的方法,还包括:
由所述本机应用服务器的所述接口判定所述本机应用的执行是否已终止;
响应于判定所述本机应用的执行已终止,由所述本机应用服务器的所述接口判定所述本机应用的执行终止是否正常;以及
响应于判定所述本机应用的执行终止不正常,由所述本机应用服务器的所述接口向所述主应用服务器通知异常终止。
8.一种用于使本机应用继承事务上下文的系统,所述系统包括:
被配置为接收用于由第二托管环境中的主应用服务器处的主应用调用第一托管环境中的本机应用服务器处的本机应用的唯一事务上下文标识符的装置;
被配置为响应于在所述第一托管环境中的本地应用服务器执行的所述本机应用遇到SQL语句、从所述本机应用接收所述SQL语句的装置;
被配置为将所述SQL语句和所述唯一事务上下文标识符发送到所述主应用服务器以便执行的装置;
被配置为从所述主应用服务器接收所述SQL语句的执行结果和所述唯一事务上下文标识符的装置;以及
被配置为将所述结果发送到所述本机应用的装置。
9.如权利要求8中所述的系统,其中被配置为从所述本机应用接收SQL语句的装置进一步被配置为:
将所述SQL语句转换为所述第二托管环境的格式。
10.如权利要求8中所述的系统,其中被配置为从所述主应用服务器接收所述SQL语句的执行结果和所述唯一事务上下文标识符的装置进一步被配置为:
将所述结果转换为所述第一托管环境的格式。
11.如权利要求8中所述的系统,还包括:
被配置为由主应用服务器处的主应用调用所述本机应用的装置;
被配置为将程序控制转移到所述第一托管环境的装置;以及
被配置为将用于所述调用的所述唯一事务上下文标识符发送到所述第一托管环境的装置。
12.如权利要求11中所述的系统,还包括:
被配置为接收所述SQL语句的装置;
被配置为将所述SQL语句的执行委托给线程的装置;
被配置为由所述线程在数据库上执行所述SQL语句的装置;以及
被配置为将所述SQL语句的执行结果和所述唯一事务上下文标识符返回到所述本机应用服务器的装置。
13.如权利要求8中所述的系统,其中被配置为从所述主应用服务器接收所述SQL语句的执行结果和所述唯一事务上下文标识符的装置进一步被配置为:
判定所述结果是否包括所述SQL语句的执行错误;以及
响应于判定所述结果包括所述错误,将所述错误转换为所述第一托管环境的格式。
14.如权利要求8中所述的系统,还包括:
被配置为判定所述本机应用的执行是否已终止的装置;
被配置为响应于判定所述本机应用的所述执行已终止,判定所述本机应用执行的终止是否正常的装置;以及
被配置为响应于判定所述本机应用执行的终止不正常,向所述主应用服务器通知异常终止的装置。
15.一种用于使本机应用在被单独托管环境中运行的主应用所调用时继承事务上下文的方法,所述方法包括:
由第一托管环境中的本机应用服务器的接口接收用于由第二托管环境中的主应用服务器处的所述主应用调用所述本机应用服务器处的所述本机应用的唯一事务上下文标识符;
响应于在所述第一托管环境中的本地应用服务器执行的所述本机应用遇到SQL语句,由所述本机应用服务器的所述接口从所述本机应用接收所述SQL语句;
由所述本机应用服务器的所述接口将所述SQL语句和所述唯一事务上下文标识符发送到所述主应用服务器以便执行;
响应于所述主应用服务器的第二接口从所述本机应用服务器的所述接口接收到所述SQL语句,由所述主应用服务器的所述第二接口将所述SQL语句的执行委托给所述主应用服务器的线程;
由所述主应用服务器的所述线程在数据库上执行所述SQL语句并将执行结果返回到所述第二接口;
由所述主应用服务器的所述第二接口将所述SQL语句的执行结果和所述唯一事务上下文标识符返回到所述本机应用服务器的所述接口;以及
响应于所述本机应用服务器的所述接口从所述主应用服务器接收到所述SQL语句的执行结果和所述唯一事务上下文标识符,由所述本机应用服务器的所述接口将所述结果发送到所述本机应用。
16.如权利要求15中所述的方法,其中由第一托管环境中的本机应用服务器的接口接收用于由第二托管环境中的主应用服务器处的所述主应用调用所述本机应用服务器处的所述本机应用的唯一事务上下文标识符的步骤进一步包括:
由所述主应用服务器处的所述主应用调用所述本机应用;
由所述主应用服务器将程序控制转移到所述第一托管环境;以及
由所述主应用服务器将用于所述调用的所述唯一事务上下文标识符发送到所述本机应用服务器的所述接口。
17.如权利要求15中所述的方法,其中由所述本机应用服务器的所述接口从所述主应用服务器接收所述SQL语句的执行结果和所述唯一事务上下文标识符的步骤进一步包括:
由所述本机应用服务器的所述接口判定所述结果是否包括所述SQL语句的执行错误;以及
响应于判定所述结果包括所述错误,由所述本机应用服务器的所述接口将所述错误转换为所述第一托管环境的格式。
18.如权利要求15中所述的方法,还包括:
由所述本机应用服务器的所述接口判定所述本机应用的执行是否已终止;
响应于判定所述本机应用的执行已终止,由所述本机应用服务器的所述接口判定所述本机应用的执行终止是否正常;以及
响应于判定所述本机应用的执行终止不正常,由所述本机应用服务器的所述接口向所述主应用服务器通知异常终止。
CN201210222095.2A 2011-06-30 2012-06-28 使本机程序被主程序调用时继承事务上下文的方法和系统 Expired - Fee Related CN102968333B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/172,825 2011-06-30
US13/172,825 US9449030B2 (en) 2011-06-30 2011-06-30 Method for native program to inherit same transaction content when invoked by primary program running in separate environment

Publications (2)

Publication Number Publication Date
CN102968333A CN102968333A (zh) 2013-03-13
CN102968333B true CN102968333B (zh) 2016-02-17

Family

ID=46458835

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210222095.2A Expired - Fee Related CN102968333B (zh) 2011-06-30 2012-06-28 使本机程序被主程序调用时继承事务上下文的方法和系统

Country Status (4)

Country Link
US (2) US9449030B2 (zh)
CN (1) CN102968333B (zh)
DE (1) DE102012210420A1 (zh)
GB (1) GB2491694B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US11288277B2 (en) 2012-09-28 2022-03-29 Oracle International Corporation Operator sharing for continuous queries over archived relations
US10956422B2 (en) 2012-12-05 2021-03-23 Oracle International Corporation Integrating event processing with map-reduce
US10298444B2 (en) 2013-01-15 2019-05-21 Oracle International Corporation Variable duration windows on continuous data streams
CN103279382B (zh) * 2013-04-27 2016-12-28 北京微云即趣科技有限公司 原生方式访问资源的方法、Java端、原生端及系统
US9715405B2 (en) 2013-09-23 2017-07-25 International Business Machines Corporation Efficient coordination across distributed computing systems
AU2014360106B2 (en) 2013-12-06 2019-05-23 Ab Initio Technology Llc Source code translation
US20160078008A1 (en) * 2014-09-11 2016-03-17 Microsoft Corporation Integrating user interface experiences from multiple applications
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
JP6620511B2 (ja) * 2015-10-22 2019-12-18 京三電機株式会社 燃料タンク用通気制御弁
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
CN111367937B (zh) * 2020-02-28 2023-09-19 艾普阳科技(深圳)有限公司 一种数据处理方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1877579A (zh) * 2005-06-07 2006-12-13 三星电子株式会社 在确保软件模块独立的同时实现数据库应用的系统和方法
CN101331489A (zh) * 2005-12-17 2008-12-24 国际商业机器公司 用于部署sql进程的系统和方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5617568A (en) * 1994-12-14 1997-04-01 International Business Machines Corporation System and method for supporting file attributes on a distributed file system without native support therefor
US6226649B1 (en) * 1997-06-23 2001-05-01 Oracle Corporation Apparatus and method for transparent access of foreign databases in a heterogeneous database system
GB2339036A (en) * 1998-07-03 2000-01-12 Ibm Set of objects for extracting data from a database, and visual builder
US6742015B1 (en) 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
US20020188727A1 (en) * 2001-06-08 2002-12-12 Lessard Michael R. Method for processing external data for access and manipulation through a host operating environment
US20050114285A1 (en) * 2001-11-16 2005-05-26 Cincotta Frank A. Data replication system and method
US7305386B2 (en) * 2002-09-13 2007-12-04 Netezza Corporation Controlling visibility in multi-version database systems
US7210121B2 (en) * 2003-02-07 2007-04-24 Sun Microsystems, Inc. Method and system for generating first class citizen application implementing native software application wrapper
US20050033726A1 (en) * 2003-05-19 2005-02-10 Ju Wu Apparatus and method for accessing diverse native data sources through a metadata interface
US7774762B2 (en) * 2003-09-15 2010-08-10 Trigence Corp. System including run-time software to enable a software application to execute on an incompatible computer platform
WO2008056438A1 (fr) * 2006-11-06 2008-05-15 Nec Corporation Système informatique
US20100241731A1 (en) * 2009-03-17 2010-09-23 Gladinet, Inc. Method for virtualizing internet resources as a virtual computer
US8826269B2 (en) * 2009-06-15 2014-09-02 Microsoft Corporation Annotating virtual application processes
US8954955B2 (en) * 2009-06-16 2015-02-10 Google Inc. Standard commands for native commands
US8260757B1 (en) * 2010-04-22 2012-09-04 Wal-Mart Stores, Inc. Data access layer
US8468172B2 (en) * 2010-05-14 2013-06-18 Sap Ag Integrated application server and data server processes with matching data formats
US8972438B2 (en) * 2010-12-06 2015-03-03 International Business Machines Corporation Database access for native applications in a virtualized environment
JP5329589B2 (ja) * 2011-03-17 2013-10-30 株式会社三菱東京Ufj銀行 トランザクション処理システム及びトランザクション処理システムの動作方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1877579A (zh) * 2005-06-07 2006-12-13 三星电子株式会社 在确保软件模块独立的同时实现数据库应用的系统和方法
CN101331489A (zh) * 2005-12-17 2008-12-24 国际商业机器公司 用于部署sql进程的系统和方法

Also Published As

Publication number Publication date
CN102968333A (zh) 2013-03-13
GB2491694A (en) 2012-12-12
US9760583B2 (en) 2017-09-12
DE102012210420A1 (de) 2013-01-03
GB2491694B (en) 2013-05-08
US20130007539A1 (en) 2013-01-03
US9449030B2 (en) 2016-09-20
US20130246864A1 (en) 2013-09-19
GB201208495D0 (en) 2012-06-27

Similar Documents

Publication Publication Date Title
CN102968333B (zh) 使本机程序被主程序调用时继承事务上下文的方法和系统
US10216490B2 (en) Systems and methods for computing applications
US8887154B2 (en) Systems and methods for partitioning computing applications to optimize deployment resources
US8645973B2 (en) Mobile applications
WO2018072626A1 (zh) 组件调用的方法和装置、组件数据处理的方法和装置
US10114861B2 (en) Expandable ad hoc domain specific query for system management
US20130104100A1 (en) Scripting Language for Business Applications
CN110865889B (zh) 组件间传递事件的方法和装置
WO2020063252A1 (zh) 一种实现多版本依赖隔离的方法和装置
US20120089960A1 (en) Extensible collaborative software modeling
US10133766B2 (en) Accessing and editing virtually-indexed message flows using structured query langauge (SQL)
CN101976199A (zh) 面向对象的中间件分布式系统开发平台
US8756258B2 (en) Generating references to reusable code in a schema
US8738755B2 (en) Providing external access to service versions via a bundle framework
CN115794219A (zh) 数据源动态控制方法、装置、电子设备及介质
CN108509553A (zh) 一种项目文件生成方法及平台
CN110262841A (zh) 一种对字节码进行增强的方法和装置
CN109960499A (zh) 一种smg-pdc万能接口协议裂变解析引擎技术
WO2021102616A1 (zh) 一种智能合约开发方法、装置及电子设备和存储介质
US20210042321A1 (en) Data synchronization in a micro services environment
US20190244145A1 (en) Workflow integration
CN109388401A (zh) 一种服务分发方法及系统
US20130067500A1 (en) Legacy application integration within a bundle framework
CN117056317B (zh) 数据处理方法、装置、设备及计算机可读存储介质
US11385876B1 (en) Infrastructure control interface for database systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160217

CF01 Termination of patent right due to non-payment of annual fee