CN100464312C - 构件化软件系统中实现非Java构件的调试的方法 - Google Patents

构件化软件系统中实现非Java构件的调试的方法 Download PDF

Info

Publication number
CN100464312C
CN100464312C CNB2006100304816A CN200610030481A CN100464312C CN 100464312 C CN100464312 C CN 100464312C CN B2006100304816 A CNB2006100304816 A CN B2006100304816A CN 200610030481 A CN200610030481 A CN 200610030481A CN 100464312 C CN100464312 C CN 100464312C
Authority
CN
China
Prior art keywords
breakpoint
java
application server
jsp
pel
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.)
Active
Application number
CNB2006100304816A
Other languages
English (en)
Other versions
CN1987818A (zh
Inventor
黄柳青
焦列焱
王葱权
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.)
PRIMETON INFORMATION TECHNOLOGY CO., LTD.
Original Assignee
SHANGHAI PRIMETON INFORMATION TECHNOLOGY Co Ltd
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 SHANGHAI PRIMETON INFORMATION TECHNOLOGY Co Ltd filed Critical SHANGHAI PRIMETON INFORMATION TECHNOLOGY Co Ltd
Priority to CNB2006100304816A priority Critical patent/CN100464312C/zh
Publication of CN1987818A publication Critical patent/CN1987818A/zh
Application granted granted Critical
Publication of CN100464312C publication Critical patent/CN100464312C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种构件化软件系统中实现非Java构件的调试的方法,其中断点配置操作包括调试平台创建构件断点标记并注册于断点管理器、生成图元断点信息并记录在配置文件或者断点管理器生成对应的断点请求通知应用服务器更新断点状态信息;运行时断点源代码查找定位操作包括应用服务器判断该构件的类型、应用服务器生成Java代码并产生其与构件间的对应关系、在代码中配置断点、应用服务器将代码断点处的图元/JSP断点信息传送至调试平台、调试平台进行图元/JSP断点的展现。采用该种构件化软件系统中实现非Java构件的调试的方法,操作简单,直观形象,快捷方便,运行效率较高,性能稳定可靠,降低了开发维护的成本,适用范围较为广泛。

Description

构件化软件系统中实现非Java构件的调试的方法
技术领域
本发明涉及计算机软件领域,特别涉及构件化软件系统领域,具体是指一种构件化软件系统中实现非Java构件的调试的方法。
背景技术
随着现代社会科学技术的发展,计算机系统已经成为各行各业所不可缺少的工具,而在其中起着核心作用的,则是计算机软件系统。随着软件系统在各行各业的日益渗透,商业系统的日益庞大,其自身的问题也是越来越严重。现在的一个企业应用,常常会涉及企业的每一个部分,会由几十人编写几十万到几百万行代码来完成。另一方面,现代企业是在一个不断变化的动态环境中生存和发展的,因此,企业应用就需要不断地维护——即部分地改写一些现有软件。由几十万上百万的代码式变化因子,组成的不断变化的系统,其复杂度是人类历史上没有见过的。软件的安全性和质量可靠性,常常成为现代无所不在、无所不能的信息化系统的一个严重问题。
构件技术整合了传统的构件技术、模型驱动技术和面向服务技术,是解决现有软件系统结构弊端的一种有效手段。所谓构件,是指某种自成一体、并有一个(或一组)清晰接口的软件。同时,构件还应具有清晰的运行时和上线内涵。也就是说,该构件具备可供运行时访问的接口;并且,在软件开发生命周期的某个时间点,该构件可独立交付和安装。另外,一个构件还能方便地跟其他构件合并或组合,从而提供有用的功能——通常情况下,单个构件只有跟别的构件协同工作才能达到其功效。
同时,目前已经出现了JSR-45(Debugging Support for Other Languages为其它类型语言提供的调试支持)规范,它是专门为那些非Java语言写成、却需要编译成Java代码并运行在JVM中的程序而设计的,提供了一个进行调试的标准机制。对于基于扩展标记语言的构件技术来说,JSR-45规范为构件调试提供了支持。构件编译到Java应用服务器之后,被Java应用服务器编译成Java代码,同时生成一份构件文件名和图元ID与Java行号之间的对应表(SMAP),而对于JSP构件,SMAP对应表则是反映了JSP文件名和行号与JAVA行号之间的对应关系。
在构件开发的整个生命周期中,调试是重要的一个阶段,但是,现有技术中并没有非常方便直观的集成化构件调试手段,特别是对于采用非Java语言编写的构件来说,缺乏方便通用、直观灵活的调试工具,从而使得错误和缺陷经常发生,软件整体的开发效率无法得到根本的改善,同时这样的构件软件开发中存在着开发、实施、维护成本过高,管理不便的问题。在这种情况下,便给现代计算机软件构件化程序设计及调试技术的发展带来了一定的阻碍。
发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种能够对非Java语言的构件提供调试支持、直观形象、使用快捷方便、运行效率较高、系统性能稳定可靠、适用范围较为广泛的构件化软件系统中实现非Java构件的调试的方法。
为了实现上述的目的,本发明的构件化软件系统中实现非Java构件的调试的方法如下:
该构件化软件系统中实现非Java构件的调试的方法,该系统包括图形化构件调试平台和通过计算机通信网络相连接的后台Java应用服务器,其主要特点是,所述的方法包括断点配置操作和运行时断点源代码查找定位操作,所述的断点配置操作包括以下步骤:
(A1)系统进行初始化操作;
(A2)根据用户的操作,图形化构件调试平台创建构件的断点标记,并注册在断点管理器中;
(A3)该调试平台判断该断点为图元断点还是JSP断点;
(A4)如果该断点为图元断点,则生成对应的图元断点信息并记录在配置文件中,并通过计算机通信网络进行通知后台Java应用服务器更新图元断点状态信息的处理操作;
(A5)如果该断点为JSP断点,则所述的断点管理器生成对应的断点请求,并通过计算机通信网络通知后台Java应用服务器更新JSP断点状态信息;
所述的运行时断点源代码查找定位操作包括以下步骤:
(B1)将构件部署在后台Java应用服务器上;
(B2)该应用服务器判断该构件是符合XML规范并由图元构成的展现构件或者业务构件,还是符合JSP规范的页面构件;
(B3)如果该构件为展现构件或者业务构件,则应用服务器为该构件生成对应的Java代码,并产生该构件和Java代码之间的对应关系;并执行以下步骤:
(B31)该应用服务器根据所述的图元断点状态信息在相应的Java代码中配置相应的断点;
(B32)当系统运行到Java代码的断点处时,应用服务器通过该构件和Java代码之间的对应关系得到相应的图元断点信息,并通过计算机通信网络传送至所述的图形化构件调试平台;
(B33)图形化构件调试平台根据该图元断点信息进行图元断点的展现操作;
(B4)如果该构件为页面构件,则应用服务器为该构件生成对应的Java代码,并产生该构件和Java代码之间的对应关系;并执行以下步骤:
(B41)系统判断应用服务器的类型,并根据相应类型和JSP断点状态信息在相应的Java代码中配置相应的断点;
(B42)当系统运行到Java代码的断点处时,应用服务器通过该构件和Java代码之间的对应关系得到相应的JSP断点信息,并通过计算机通信网络传送至所述的图形化构件调试平台;
(B43)图形化构件调试平台根据该JSP断点信息进行JSP断点的展现操作。
所述的图元断点信息格式为:
项目名称.包名称.构件文件夹名称.构件文件名称.扩展名称.图元标识ID=断点状态,
其中,断点状态为“设置”或者“取消”。
所述的通知后台Java应用服务器更新图元断点状态信息的处理操作包括以下步骤:
(11)图形化构件调试平台和后台Java应用服务器之间建立socket通信连接;
(12)如果后台Java应用服务器的状态是启动过程中,则所述的调试平台向该应用服务器发送“加载”请求,将所述的图元断点状态信息送至该应用服务器上;
(13)如果后台Java应用服务器的状态是启动完毕,则判断该图元断点信息中的断点状态是“设置”还是“取消”;
(14)如果是“设置”,则所述的调试平台向该应用服务器发送“添加”请求,该应用服务器读取配置文件并添加图元断点状态信息;
(15)如果是“取消”,则所述的调试平台向该应用服务器发送“删除”请求,该应用服务器读取配置文件并更新图元断点状态信息。
所述的“添加”请求和“删除”请求均为HTTP请求。
所述的断点管理器通知后台Java应用服务器更新JSP断点状态信息为:
断点管理器生成对应的JSP断点请求,并通过计算机通信网络通知后台Java应用服务器上的Java虚拟机JVM更新断点状态信息。
所述的应用服务器为该展现构件或者业务构件生成对应的Java代码并产生该构件和Java代码之间的对应关系包括以下步骤:
(21)应用服务器为该构件生成Java代码,且其中Java方法与该构件中的图元相对应;
(22)对上述Java代码进行编译生成class文件;
(23)应用服务器生成构件文件名、图元标识ID与Java代码的行号之间的对应关系表SMAP;
(24)将上述的对应关系表SMAP加入到相应class文件的源调试扩展属性中。
所述的对应关系表SMAP的格式为:
图元标识ID#源文件代号,重复次数:Java代码的行号,Java代码的行号每次增加的数量。
所述的应用服务器通过该构件和Java代码之间的对应关系得到相应的图元断点信息并传送至图形化构件调试平台包括以下步骤:
(31)应用服务器的调试线程在Java代码的断点处挂起;
(32)通过该Java代码的断点的行号查询所述的对应关系表SMAP得到对应图元断点的构件文件名与图元标识ID;
(33)将构件文件名、图元标识ID及所述调试线程的状态送至图形化构件调试平台。
所述的图形化构件调试平台根据该图元断点信息进行图元断点的展现操作包括以下步骤:
(41)图形化构件调试平台打开调试构件编辑器;
(42)根据所述的构件文件名和图元ID定位到构件的图元断点;
(43)对该图元断点进行渲染显示处理。
所述的应用服务器为该页面构件生成对应的Java代码并产生该构件和Java代码之间的对应关系包括以下步骤:
(51)应用服务器为该构件的JSP代码生成Java代码;
(52)对上述Java代码进行编译生成class文件;
(53)应用服务器生成构件JSP文件名、JSP代码的行号与Java代码的行号之间的对应关系表SMAP;
(54)将上述的对应关系表SMAP加入到相应class文件的源调试扩展属性中。
所述的对应关系表SMAP的格式为:
JSP代码行号#源文件代号,重复次数:Java代码的行号,Java代码的行号每次增加的数量。
所述的应用服务器通过该构件和Java代码之间的对应关系得到相应的JSP断点信息并传送至图形化构件调试平台包括以下步骤:
(61)应用服务器的调试线程在Java代码的断点处挂起;
(62)通过该Java代码的断点的行号查询所述的对应关系表SMAP得到对应JSP断点的JSP文件名与JSP代码的行号;
(63)将JSP文件名、JSP代码的行号及所述调试线程的状态送至图形化构件调试平台。
所述的图形化构件调试平台根据该JSP断点信息进行JSP断点的展现操作包括以下步骤:
(71)图形化构件调试平台打开调试构件编辑器;
(72)根据所述的JSP文件名和JSP代码的行号定位到构件的JSP断点;
(73)显示该JSP断点处的代码信息。
所述的判断应用服务器的类型为:
通过应用服务器启动Java虚拟机JVM时的目标字符串的名称来判断应用服务器类型。
采用了该发明的构件化软件系统中实现非Java构件的调试的方法,由于在图形化构件调试平台中根据用户操作分别对图元断点和JSP断点进行记录,并通过计算机通信网络将相应的断点状态信息通知给后台Java应用服务器,该应用服务器为该构件生成相对应的Java代码,并建立该构件与该Java代码之间的对应关系,然后在该Java代码中配置相应的断点,当系统运行到Java代码的断点处时,应用服务器通过该构件和Java代码之间的对应关系得到相应的断点信息,并通过计算机通信网络传送至所述的图形化构件调试平台,最后图形化构件调试平台根据该断点信息进行断点的展现操作,从而实现了非Java语言的构件的基于断点的图形化集成环境调试,增强了调试的直观效果,提高了调试的效率,不仅操作简单形象,而且快捷方便,整个调试环境的运行效率较高,系统性能稳定可靠,降低了开发维护的成本;同时增强了系统可移植性和可扩展性;不仅如此,该方法还能够快速回应业务需求的变化和技术变化,能够支撑建立高度模块化而且又高度整合的软件系统,适用范围较为广泛,为计算机构件化软件技术的进一步发展打下了坚实的基础。
附图说明
图1为本发明的业务构件实现示意图。
图2为本发明的展现构件实现示意图。
图3为本发明的页面构件实现示意图。
图4为本发明的Eclipse调试框架中的启动框架模型的类图。
图5为本发明的Eclipse调试框架中的调试模块模型的类图。
图6为本发明的Eclipse调试框架中的断点模型的类图。
图7为本发明的Eclipse环境下展现构件test.prg中的各图元标识示意图。
具体实施方式
为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。
在设计JSP的构件中,通常包括:业务构件、展现构件以及页面构件。
●  业务构件——用于完成多个运算逻辑的逻辑流程的相关构件称为业务构件,是通过EOS开发环境开发的多个运算逻辑的图形化逻辑流程,请参阅图1所示。
■  依赖接口—依赖运算构件与业务构件
■  提供接口—对特定业务进行操作的业务服务,比如客户管理类,会提供对客户进行管理的多个业务服务接口
●  展现构件——用于控制业务流转与页面交互的构件称为展现构件,展现构件是通过EOS开发环境开发的图形化组装业务构件、页面构件,来表达一个完整的功能,请参阅图2所示。
■  依赖接口—依赖业务构件,页面构件,展现构件自身
■  提供接口—提供功能级服务接口,可以完成一组完整的功能操作。
●  页面构件——用于完成用户交互界面生成及页面集成的相关构件称为页面构件,页面构件可以是标准J2EE展现层的构件,如Jsp,Tag等,请参阅图3所示。
■  依赖接口—依赖展现构件
■  提供接口—提供一组页面展现服务
对于Eclipse调试框架包括以下几个基本模块:
(1)启动框架(Launch Framework)
图4表示Launch Framework中的模型类图,其中:
●  Launch configuration types——可用的Launch类型
●  Launch configurations——Launch方式和内容的描述
●  Launch manager——负责存储Launch类型,配置及Launch对象
●  Launch delegates——执行Launch
●  Launch objects——Launched process进程/debug targets目标的容器
●  Tab groups——编辑Launch配置信息的UI界面
(2)调试模块(Debug Model)
图5表示DebugModel的模型类图,其中:
●  Debug Model Elements——被调试的程序元素
●  Capabilities——对stepping、resuming、terminating的支持
●  Debug Events——在执行目标或进程时发生的事件
●  Views——显示调试会话信息的视图-threads、frames、variables等
●  Actions——与被调试程序之间交互动作的菜单-step、resume等
●  Debug Model Presentation——为debug model elements提供标签和图片
(3)断点(Breakpoint)
图6表示断点模型的类图,断点Breakpoint是在某位置或者满足某种条件下挂起(suspend)程序的一种方式。断点模型提供Add、Remove和Change断点的通知机制,并提供跨工作台调用断点的持久化机制。其中:
●  Breakpoint extension——扩展断点的扩展点
●  Breakpoint——代表断点实例的模型对象
●  Marker——用于持久化断点属性以及在编辑器中显示断点
●  Breakpoint Manager——断点仓库,提供断点变化的事件通知
●  Debug Target——安装断点的底层运行
另一方面,利用JSR-45规范,为这些非Java语言写成,却需要编译成Java代码,运行在JVM中的程序,提供了一个进行调试的标准机制。在调试单个展现构件或者业务构件时,Java应用服务器的JVM接收到调试客户端平台的请求,根据对应表(SMAP),从构件文件名和图元标识ID转换到Java代码的行号,或者是从JSP文件名和行号转换到Java代码的行号;Java应用服务器的JVM发出suspend事件通知时,根据对应表(SMAP),将Java代码行号转换为构件文件名和图元标识ID,或者JSP文件名和行号,将此信息告知调试客户端平台,对于展现构件、业务构件,客户端平台渲染构件编辑器中的图元断点,而对于JSP来说,调试线程会停在JSP文件对应的代码行上。
该构件化软件系统中实现非Java构件的调试的方法,包括图形化构件调试平台和通过计算机通信网络相连接的后台Java应用服务器,其中,所述的方法包括断点配置操作和运行时断点源代码查找定位操作,所述的断点配置操作包括以下步骤:
(1)系统进行初始化操作;
(2)根据用户的操作,图形化构件调试平台创建构件的断点标记,并注册在断点管理器中;
(3)该调试平台判断该断点为图元断点还是JSP断点;
(4)如果该断点为图元断点,则生成对应的图元断点信息并记录在配置文件中,并通过计算机通信网络进行通知后台Java应用服务器更新图元断点状态信息的处理操作,所述的图元断点信息格式为:
项目名称.包名称.构件文件夹名称.构件文件名称.扩展名称.图元标识ID=断点状态,其中,断点状态为“设置”或者“取消”;
上述的处理操作包括以下步骤:
(a)图形化构件调试平台和后台Java应用服务器之间建立socket通信连接;
(b)如果后台Java应用服务器的状态是启动过程中,则所述的调试平台向该应用服务器发送“加载”请求,将所述的图元断点状态信息送至该应用服务器上;
(c)如果后台Java应用服务器的状态是启动完毕,则判断该图元断点信息中的断点状态是“设置”还是“取消”;
(d)如果是“设置”,则所述的调试平台向该应用服务器发送“添加”请求,该应用服务器读取配置文件并添加图元断点状态信息;
(e)如果是“取消”,则所述的调试平台向该应用服务器发送“删除”请求,该应用服务器读取配置文件并更新图元断点状态信息;
其中的“添加”请求和“删除”请求均为HTTP请求;
(5)如果该断点为JSP断点,则所述的断点管理器生成对应的断点请求,并通过计算机通信网络通知后台Java应用服务器更新断点状态信息,该操作为:
断点管理器生成对应的JSP断点请求,并通过计算机通信网络通知后台Java应用服务器上的Java虚拟机JVM更新断点状态信息;
所述的运行时断点源代码查找定位操作包括以下步骤:
(1)将构件部署在后台Java应用服务器上;
(2)该应用服务器判断该构件是符合XML规范并由图元构成的展现构件或者业务构件,还是符合JSP规范的页面构件;
(3)如果该构件为展现构件或者业务构件,则应用服务器为该构件生成对应的Java代码,并产生该构件和Java代码之间的对应关系,包括以下步骤:
(a)应用服务器为该构件生成Java代码,且其中Java方法与该构件中的图元相对应;
(b)对上述Java代码进行编译生成class文件;
(c)应用服务器生成构件文件名、图元标识ID与Java代码的行号之间的对应关系表SMAP,该对应关系表SMAP的格式为:
图元标识ID#源文件代号,重复次数:Java代码的行号,Java代码的行号每次增加的数量;
(d)将上述的对应关系表SMAP加入到相应class文件的源调试扩展属性中;
(4)该应用服务器根据所述的断点状态信息在相应的Java代码中配置相应的断点;
(5)当系统运行到Java代码的断点处时,应用服务器通过该构件和Java代码之间的对应关系得到相应的图元断点信息,并通过计算机通信网络传送至所述的图形化构件调试平台,包括以下步骤:
(a)应用服务器的调试线程在Java代码的断点处挂起;
(b)通过该Java代码的断点的行号查询所述的对应关系表SMAP得到对应图元断点的构件文件名与图元标识ID;
(c)将构件文件名、图元标识ID及所述调试线程的状态送至图形化构件调试平台;
(6)图形化构件调试平台根据该图元断点信息进行图元断点的展现操作,该展现操作包括以下步骤:
(a)图形化构件调试平台打开调试构件编辑器;
(b)根据所述的构件文件名和图元ID定位到构件的图元断点;
(c)对该图元断点进行渲染显示处理;
(7)如果该构件为页面构件,则应用服务器为该构件生成对应的Java代码,并产生该构件和Java代码之间的对应关系,包括以下步骤:
(a)应用服务器为该构件的JSP代码生成Java代码;
(b)对上述Java代码进行编译生成class文件;
(c)应用服务器生成构件JSP文件名、JSP代码的行号与Java代码的行号之间的对应关系表SMAP,该对应关系表SMAP的格式为:
JSP代码行号#源文件代号,重复次数:Java代码的行号,Java代码的行号每次增加的数量;
(d)将上述的对应关系表SMAP加入到相应class文件的源调试扩展属性中;
(8)系统判断应用服务器的类型,并根据相应类型和断点状态信息在相应的Java代码中配置相应的断点,该判断应用服务器的类型的操作为:
通过应用服务器启动Java虚拟机JVM时的目标字符串的名称来判断应用服务器类型;
(9)当系统运行到Java代码的断点处时,应用服务器通过该构件和Java代码之间的对应关系得到相应的JSP断点信息,并通过计算机通信网络传送至所述的图形化构件调试平台,包括以下步骤:
(a)应用服务器的调试线程在Java代码的断点处挂起;
(b)通过该Java代码的断点的行号查询所述的对应关系表SMAP得到对应JSP断点的JSP文件名与JSP代码的行号;
(c)将JSP文件名、JSP代码的行号及所述调试线程的状态送至图形化构件调试平台;
(10)图形化构件调试平台根据该JSP断点信息进行JSP断点的展现操作,该展现操作包括以下步骤:
(a)图形化构件调试平台打开调试构件编辑器;
(b)根据所述的JSP文件名和JSP代码的行号定位到构件的JSP断点;
(c)显示该JSP断点处的代码信息。
在实际应用当中,本发明方法中的展现构件和业务构件符合XML规范,由许多不同类型的图元构成,每个图元都是一个XML元素,用户可以设置某些图元为图元断点,图元ID是此图元的唯一标识;而页面构件JSP是符合JSP规范的文本文件,JSP断点对应JSP文件的源代码行。
1、创建断点
在图形化构件调试平台的实现中,添加断点实际上就是为构件文件对应的IFile添加一个marker,并且设置了marker的属性resource.createMarker(marker Type);将断点注册到断点管理器DebugPlugin.getDefault().getBreakpointManager().addBreakpoint(this)。
2、添加断点
添加断点是指将创建的图元断点和JSP断点上传或添加到后台Java应用服务器端。图形化构件调试平台调试客户端将项目内的图元断点信息记录在breakpoint.cfg文件中,后台Java应用服务器启动过程中和启动结束后通过读取此文件获得图元断点的请求信息,记录格式如下:
项目名称.包名称.构件文件夹名称.构件文件名称.扩展名称.图元标识ID=ENABLE
其中,ENABLE为“设置”。例如:project.pkg.biz.bizBANNERDATAQuery.bzg.29=ENABLE。
以调试模式来启动后台Java应用服务器的过程中,在调试客户端图形化构件调试平台与后台Java应用服务器之间的socket通信已建立后,图形化构件调试平台向后台Java应用服务器发出Load的HTTP请求,将当前项目内展现构件、业务构件的图元断点及其有效状态上传到后台Java应用服务器上。后台Java应用服务器启动完成后,添加断点的操作是通过发出Add的HTTP请求完成,断点状态为ENABLE。
JSP断点在断点管理器注册后,断点管理器负责产生BreakpointRequest,通知正在运行的JVM Target如果此时还没有启动JVM,会在JVM启动的时候,将所有断点一起通知JVM Target。
3、删除断点
后台Java应用服务器启动完成后,失效或删除展现构件和业务构件上的图元断点,breakpoint.cfg文件中记录此图元断点格式如下:
项目名称.包名称.构件文件夹名称.构件文件名称.扩展名称.图元标识ID=DISABLE
其中,DISABLE为“取消”。如:project.pkg.biz.bizBANNERDATAQuery.bzg.29=DISABLE。
图形化构件调试平台调试客户端向后台Java应用服务器发出Del的HTTP请求,后台Java应用服务器读取breakpoint.cfg文件,更新对应java代码行中的断点状态。
对于JSP断点,通过点击源代码行的JSP断点,断点管理器产生BreakpointRequest,通知运行的JVM Target,更新断点的有效状态。
在进行构件调试过程中,运行时的构件断点处的源代码的查找过程如下:
1、调试展现构件、业务构件,定位图元断点
展现构件、业务构件的编译结果被部署到后台Java应用服务器上,调试单个展现构件或者业务构件时,定位图元断点的过程是:
(1)后台Java应用服务器为每个构件生成java文件,其中图元对应java method,编译生成java类的class文件,并生成了构件文件名和图元标识ID与java行号的对应SMAP,将SMAP加入class文件的SourceDebugExtenstion属性,规范格式如下:
源文件行号#源文件代号,重复次数:目标文件开始行号,目标文件行号每次增加的数量
例如:
InputStartLine # LineFileID,RepeatCount:OutputStartLine,OutputLineIncrement。
其中源文件行号就是图元ID,目标文件开始行号是JAVA代码的行号,这两个行号是必须的。
请参阅图7所示,由此分析一个展现构件test.prg中的图元ID是如何与Java代码行对应的。
对于展现构件test.prg来说,生成Java代码TestDebugjava,子流程test2.prg生成Java代码TestDebug2.java,那么SMAP如下:
TestDebug.java 代码名称
*S prg         源文件后缀
*F
+0 test.prg    对应的第一个源文件名称
/pkg/pr/test.prg 项目中的相对路径
*L
8:3,4
9:8,2
10:9,2
11:11,2
6:13,2
*E
(2)添加断点javaStratumLineBreakpoint;
(3)后台Java应用服务器的调试线程suspend在java断点上,通过java断点的行号查询SMAP得到对应图元断点的构件文件名与图元ID,将图元ID及调试线程状态传给图形化构件调试平台调试客户端;
(4)图形化构件调试平台根据构件文件名和图元ID打开调试构件编辑器,定位到图元断点,渲染图元断点;
2、调试页面构件JSP,定位JSP断点
将页面构件JSP部署到后台Java应用服务器上,调试JSP时,定位JSP断点的过程是:
(1)后台Java应用服务器将JSP编译成JAVA代码、JAVA class文件以及JSP文件名/行号和JAVA行号之间的对应表(SMAP),将SMAP加入class文件的SourceDebugExtenstion属性,JSR-45规范定义其格式如下:
源文件行号#源文件代号,重复次数:目标文件开始行号,目标文件行号每次增加的数量
例如:
InputStartLine # LineFileID,RepeatCount:OutputStartLine,OutputLineIncrement。
其中源文件行号即是JSP代码的行号,目标文件开始行号是JAVA代码行号,这两个行号是必须的,SMAP示例:
首先注明Java代码的名称:Hello_jsp.java,然后是stratum名称:JSP。随后是两个JSP文件的名称:Hello.jsp、greeting.jsp。两个JSP文件共10行,产生的Hello_jsp共69行代码。最后也是最重要的内容就是源文件文件名/行号和目标文件行号的对应关系(*L与*E之间的部分)。
SMAP
E:\Primeton\eclipse\workspace\test\pkg\page\Hello.jsp
JSP
*S JSP
*F
+0 Hello.jsp
/Hello.jsp
+1 greeting.jsp
/greeting.jsp
*L
1:45
2:46
3:47
3:48
4:49
5:50
1#1:51
1:52
2:53
7#0:56
8:57
*E
(2)添加断点JavaStratumLineBreakpoint
JSPBreakpoint重载了父类的addToTarget(JDIDebugTarget target)方法。重载这个方法的目的是根据不同的应用服务器,设置不同的referenceTypeName和sourcePath。每种应用服务器编译JSP产生Java Class名称的规则都不相同,例如Tomcat编译Hello.jsp产生的Java类名为org.apache.jsp.Hello_jsp,而WebSphere6.0却是com.ibm._jsp._Hello。只有确定服务器类型,才能知道referenceTypeName和souecePath应该是什么。目前通过启动JVM时target名称来判断应用服务器类型:
String targetString=target.getLaunch().getLaunchConfiguration().getName();
如果targetString包含Tomcat,就认为是Tomcat。产生referenceTypeName后首先创建一ClassPrepareRequest通知,然后从JVM中取出所有的classes,如果是当前的Class,再创建一个添加断点通知。之所以这样做,是因为有可能这个Class还没有被JVM加载,直接通知JVM没有任何意义。在Class被加载的时候,JVM会通知图形化构件调试平台,这个时候,就会产生添加断点通知。
(3)从浏览器访问Hello.jsp,后台Java应用服务器在JAVA断点处挂起,查询SMAP得到对应JSP文件名以及对应的源文件行号,通知图形化构件调试平台调试客户端,调试线程在源代码行处挂起。
采用了上述的构件化软件系统中实现非Java构件的调试的方法,由于在图形化构件调试平台中根据用户操作分别对图元断点和JSP断点进行记录,并通过计算机通信网络将相应的断点状态信息通知给后台Java应用服务器,该应用服务器为该构件生成相对应的Java代码,并建立该构件与该Java代码之间的对应关系,然后在该Java代码中配置相应的断点,当系统运行到Java代码的断点处时,应用服务器通过该构件和Java代码之间的对应关系得到相应的断点信息,并通过计算机通信网络传送至所述的图形化构件调试平台,最后图形化构件调试平台根据该断点信息进行断点的展现操作,从而实现了非Java语言的构件的基于断点的图形化集成环境调试,增强了调试的直观效果,提高了调试的效率,不仅操作简单形象,而且快捷方便,整个调试环境的运行效率较高,系统性能稳定可靠,降低了开发维护的成本;同时增强了系统可移植性和可扩展性;不仅如此,该方法还能够快速回应业务需求的变化和技术变化,能够支撑建立高度模块化而且又高度整合的软件系统,适用范围较为广泛,为计算机构件化软件技术的进一步发展打下了坚实的基础。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。

Claims (14)

1.一种构件化软件系统中实现非Java构件的调试的方法,该系统包括图形化构件调试平台和通过计算机通信网络相连接的后台Java应用服务器,其特征在于,所述的方法包括断点配置操作和运行时断点源代码查找定位操作,所述的断点配置操作包括以下步骤:
(A1)系统进行初始化操作;
(A2)根据用户的操作,图形化构件调试平台创建构件的断点标记,并注册在断点管理器中;
(A3)该调试平台判断该断点为图元断点还是JSP断点;
(A4)如果该断点为图元断点,则生成对应的图元断点信息并记录在配置文件中,并通过计算机通信网络进行通知后台Java应用服务器更新图元断点状态信息的处理操作;
(A5)如果该断点为JSP断点,则所述的断点管理器生成对应的断点请求,并通过计算机通信网络通知后台Java应用服务器更新JSP断点状态信息;
所述的运行时断点源代码查找定位操作包括以下步骤:
(B1)将构件部署在后台Java应用服务器上;
(B2)该应用服务器判断该构件是符合XML规范并由图元构成的展现构件或者业务构件,还是符合JSP规范的页面构件;
(B3)如果该构件为展现构件或者业务构件,则应用服务器为该构件生成对应的Java代码,并产生该构件和Java代码之间的对应关系;并执行以下步骤:
(B31)该应用服务器根据所述的图元断点状态信息在相应的Java代码中配置相应的断点;
(B32)当系统运行到Java代码的断点处时,应用服务器通过该构件和Java代码之间的对应关系得到相应的图元断点信息,并通过计算机通信网络传送至所述的图形化构件调试平台;
(B33)图形化构件调试平台根据该图元断点信息进行图元断点的展现操作;
(B4)如果该构件为页面构件,则应用服务器为该构件生成对应的Java代码,并产生该构件和Java代码之间的对应关系;并执行以下步骤:
(B41)系统判断应用服务器的类型,并根据相应类型和JSP断点状态信息在相应的Java代码中配置相应的断点;
(B42)当系统运行到Java代码的断点处时,应用服务器通过该构件和Java代码之间的对应关系得到相应的JSP断点信息,并通过计算机通信网络传送至所述的图形化构件调试平台;
(B43)图形化构件调试平台根据该JSP断点信息进行JSP断点的展现操作。
2.根据权利要求1所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的图元断点信息格式为:
项目名称.包名称.构件文件夹名称.构件文件名称.扩展名称.图元标识ID=断点状态,其中,断点状态为“设置”或者“取消”。
3.根据权利要求2所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的通知后台Java应用服务器更新图元断点状态信息的处理操作包括以下步骤:
(11)图形化构件调试平台和后台Java应用服务器之间建立socket通信连接;
(12)如果后台Java应用服务器的状态是启动过程中,则所述的调试平台向该应用服务器发送“加载”请求,将所述的图元断点状态信息送至该应用服务器上;
(13)如果后台Java应用服务器的状态是启动完毕,则判断该图元断点信息中的断点状态是“设置”还是“取消”;
(14)如果是“设置”,则所述的调试平台向该应用服务器发送“添加”请求,该应用服务器读取配置文件并添加图元断点状态信息;
(15)如果是“取消”,则所述的调试平台向该应用服务器发送“删除”请求,该应用服务器读取配置文件并更新图元断点状态信息。
4.根据权利要求3所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的“添加”请求和“删除”请求均为HTTP请求。
5.根据权利要求1所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的断点管理器通知后台Java应用服务器更新JSP断点状态信息为:
断点管理器生成对应的JSP断点请求,并通过计算机通信网络通知后台Java应用服务器上的Java虚拟机JVM更新断点状态信息。
6.根据权利要求1至5中任一项所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的应用服务器为该展现构件或者业务构件生成对应的Java代码并产生该构件和Java代码之间的对应关系包括以下步骤:
(21)应用服务器为该构件生成Java代码,且其中Java方法与该构件中的图元相对应;
(22)对上述Java代码进行编译生成class文件;
(23)应用服务器生成构件文件名、图元标识ID与Java代码的行号之间的对应关系表SMAP;
(24)将上述的对应关系表SMAP加入到相应class文件的源调试扩展属性中。
7.根据权利要求6所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的对应关系表SMAP的格式为:
图元标识ID#源文件代号,重复次数:Java代码的行号,Java代码的行号每次增加的数量。
8.根据权利要求6所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的应用服务器通过该构件和Java代码之间的对应关系得到相应的图元断点信息并传送至图形化构件调试平台包括以下步骤:
(31)应用服务器的调试线程在Java代码的断点处挂起;
(32)通过该Java代码的断点的行号查询所述的对应关系表SMAP得到对应图元断点的构件文件名与图元标识ID;
(33)将构件文件名、图元标识ID及所述调试线程的状态送至图形化构件调试平台。
9.根据权利要求8所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的图形化构件调试平台根据该图元断点信息进行图元断点的展现操作包括以下步骤:
(41)图形化构件调试平台打开调试构件编辑器;
(42)根据所述的构件文件名和图元ID定位到构件的图元断点;
(43)对该图元断点进行渲染显示处理。
10.根据权利要求1至5中任一项所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的应用服务器为该页面构件生成对应的Java代码并产生该构件和Java代码之间的对应关系包括以下步骤:
(51)应用服务器为该构件的JSP代码生成Java代码;
(52)对上述Java代码进行编译生成class文件;
(53)应用服务器生成构件JSP文件名、JSP代码的行号与Java代码的行号之间的对应关系表SMAP;
(54)将上述的对应关系表SMAP加入到相应class文件的源调试扩展属性中。
11.根据权利要求10所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的对应关系表SMAP的格式为:
JSP代码行号#源文件代号,重复次数:Java代码的行号,Java代码的行号每次增加的数量。
12.根据权利要求10所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的应用服务器通过该构件和Java代码之间的对应关系得到相应的JSP断点信息并传送至图形化构件调试平台包括以下步骤:
(61)应用服务器的调试线程在Java代码的断点处挂起;
(62)通过该Java代码的断点的行号查询所述的对应关系表SMAP得到对应JSP断点的JSP文件名与JSP代码的行号;
(63)将JSP文件名、JSP代码的行号及所述调试线程的状态送至图形化构件调试平台。
13.根据权利要求12所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的图形化构件调试平台根据该JSP断点信息进行JSP断点的展现操作包括以下步骤:
(71)图形化构件调试平台打开调试构件编辑器;
(72)根据所述的JSP文件名和JSP代码的行号定位到构件的JSP断点;
(73)显示该JSP断点处的代码信息。
14.根据权利要求1至5中任一项所述的构件化软件系统中实现非Java构件的调试的方法,其特征在于,所述的判断应用服务器的类型为:
通过应用服务器启动Java虚拟机JVM时的目标字符串的名称来判断应用服务器类型。
CNB2006100304816A 2006-08-25 2006-08-25 构件化软件系统中实现非Java构件的调试的方法 Active CN100464312C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100304816A CN100464312C (zh) 2006-08-25 2006-08-25 构件化软件系统中实现非Java构件的调试的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100304816A CN100464312C (zh) 2006-08-25 2006-08-25 构件化软件系统中实现非Java构件的调试的方法

Publications (2)

Publication Number Publication Date
CN1987818A CN1987818A (zh) 2007-06-27
CN100464312C true CN100464312C (zh) 2009-02-25

Family

ID=38184621

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100304816A Active CN100464312C (zh) 2006-08-25 2006-08-25 构件化软件系统中实现非Java构件的调试的方法

Country Status (1)

Country Link
CN (1) CN100464312C (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216802B (zh) * 2008-01-16 2010-12-01 中兴通讯股份有限公司 一种交叉调试器中条件断点实现方法
CN103412745B (zh) * 2013-07-18 2016-08-24 中国联合网络通信集团有限公司 一种开发及应用平台
CN105260316A (zh) * 2015-11-16 2016-01-20 浪潮软件股份有限公司 一种软件系统动态测试的方法、装置及系统
CN107015905A (zh) * 2016-06-02 2017-08-04 阿里巴巴集团控股有限公司 查询源代码的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286132B1 (en) * 1998-01-07 2001-09-04 Matsushita Electric Industrial Co., Ltd. Debugging support apparatus, a parallel execution information generation device, a computer-readable recording medium storing a debugging support program, and a computer-readable recording medium storing a parallel execution information generation program
CN1477505A (zh) * 2002-08-24 2004-02-25 深圳市中兴通讯股份有限公司 嵌入式操作系统中异常故障定位方法
CN1499363A (zh) * 2002-10-24 2004-05-26 国际商业机器公司 在调试异构体系结构中的集成可执行程序时设置断点的方法和设备
CN1573713A (zh) * 2003-06-20 2005-02-02 微软公司 可插元件上的断点调试

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286132B1 (en) * 1998-01-07 2001-09-04 Matsushita Electric Industrial Co., Ltd. Debugging support apparatus, a parallel execution information generation device, a computer-readable recording medium storing a debugging support program, and a computer-readable recording medium storing a parallel execution information generation program
CN1477505A (zh) * 2002-08-24 2004-02-25 深圳市中兴通讯股份有限公司 嵌入式操作系统中异常故障定位方法
CN1499363A (zh) * 2002-10-24 2004-05-26 国际商业机器公司 在调试异构体系结构中的集成可执行程序时设置断点的方法和设备
CN1573713A (zh) * 2003-06-20 2005-02-02 微软公司 可插元件上的断点调试

Also Published As

Publication number Publication date
CN1987818A (zh) 2007-06-27

Similar Documents

Publication Publication Date Title
Rademacher et al. Differences between model-driven development of service-oriented and microservice architecture
Kobryn Modeling components and frameworks with UML
Canal et al. Software adaptation.
US7793258B2 (en) Software development using visual interfaces
US8516435B2 (en) System and method for generating implementation artifacts for contextually-aware business applications
US7685604B2 (en) Business process execution language (BPEL) application generator for legacy interfaces
EP2698750A1 (en) Adaptable business objects
US8196089B2 (en) Pattern-based development of computer system solutions
EP2284698B1 (en) Compositional modeling of integrated systems using event-based legacy applications
US20120005603A1 (en) Application development supporting apparatus, program, and recording medium
Bass et al. Fourth product line practice workshop report
Rodríguez-Echeverría et al. Modernization of legacy web applications into rich internet applications
CN100464312C (zh) 构件化软件系统中实现非Java构件的调试的方法
CN106600226B (zh) 用于优化流程管理系统的方法及装置
Ernsting et al. Refining a reference architecture for model-driven business apps
Rademacher et al. Microservice architecture and model-driven development: Yet singles, soon married (?)
Leroy et al. Behavioral interfaces for executable DSLs
US9836282B2 (en) Separation of concerns between information technology services models
Balasubramanian et al. Component-based system integration via (meta) model composition
Voelter A family of languages for architecture description
Wirtz et al. Using UML and Object-Coordination-Nets for workflow specification
Cook Towards computer-supported collaborative software engineering
Kainz et al. Model-to-metamodel transformation for the development of component-based systems
Heider et al. Evolution-driven trace acquisition in eclipse-based product line workspaces
Funk et al. Model-driven instrumentation of graphical user interfaces

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
C56 Change in the name or address of the patentee

Owner name: SHANGHAI PRIMETON INFORMATION AND TECHNOLOGY CO.,

Free format text: FORMER NAME: SHANGHAI PRIMETON INFORMATION TECHNOLOGY CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 201203, Shanghai Zhangjiang hi tech park, No. 456 blue wave road, 4F

Patentee after: Primeton Technologies Ltd.

Address before: 201203, Shanghai Zhangjiang hi tech park, No. 456 blue wave road, 4F

Patentee before: Shanghai Primeton Information Technology Co., Ltd.

C56 Change in the name or address of the patentee

Owner name: PRIMETON INFORMATION TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: PRIMETON TECHNOLOGIES LTD.

CP03 Change of name, title or address

Address after: 201203, Shanghai Zhangjiang hi tech park, Pudong New Area, No. 456 blue wave road, 4F

Patentee after: PRIMETON INFORMATION TECHNOLOGY CO., LTD.

Address before: 201203, Shanghai Zhangjiang hi tech park, No. 456 blue wave road, 4F

Patentee before: Primeton Technologies Ltd.