首页> 中国专利> 面向SOA的快速构建JavaWeb应用的系统框架

面向SOA的快速构建JavaWeb应用的系统框架

摘要

本发明涉及计算机技术领域,特别涉及一种面向SOA的快速构建JavaWeb应用的系统框架。本发明所提供的面向SOA的快速构建JavaWeb应用的系统框架,提供了一部分大多数Web应用开发过程中都需要的通用模块,如:单点登录、用户密码加密、用户管理、权限控制、数据访问、远程调用、数据封装、单元测试、集成测试等功能,并可以与任何标准化的ESB(Enterprise Service Bus企业服务总线)组件集成,以实现SOA(Service?Oriented Architecture面向服务的架构)架构的企业级的应用系统集成。解决JavaWeb应用开发时的重复劳作、复用率低的问题,更大地提高了开发效率。

著录项

  • 公开/公告号CN105739987A

    专利类型发明专利

  • 公开/公告日2016-07-06

    原文格式PDF

  • 申请/专利权人 成都四方伟业软件股份有限公司;

    申请/专利号CN201610078295.3

  • 发明设计人 张艳;尹浩;黄升国;徐祥;刘俊良;

    申请日2016-02-03

  • 分类号G06F9/44(20060101);

  • 代理机构51221 四川力久律师事务所;

  • 代理人韩洋

  • 地址 610041 四川省成都市高新区科园三路4号1栋2层

  • 入库时间 2023-06-19 00:00:55

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-12-11

    授权

    授权

  • 2016-08-03

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20160203

    实质审查的生效

  • 2016-07-06

    公开

    公开

说明书

技术领域

本发明涉及计算机软件技术领域,特别涉及一种面向SOA架构的快速构建JavaWeb应用的系统开发框架。

背景技术

随着社会各行各业越来越重视信息化建设,Java语言的应用也越来越广泛。前软件企业在进行JAVA项目开发时,大多采用SSH框架或SSM集成框架;应用这些框架进行Web应用的开发时,开发人员依然需要针对大多数Web应用都会用到的通用模块(如用户登录模块、权限控制模块、日志记录模块、异常捕获模块等)进行底层开发,这无疑对对Java开发人员的个人技术能力、整合能力要求较高,一些新手甚至不能独立完成一个完整功能模块的开发,导致应用开发效率极低,代码复用低、成本浪费严重。

另一方面,随着信息技术的不断发展,企业、政府部门等在信息化建设上投入了大量的资金、人力,逐步形成了适合自身某些部门或某些业务需要的管理信息系统,如办公自动化、客户关系管理CRM、企业资源计划ERP、生产制造系统、人力资源计划HR等,这些管理信息系统。但是,这些系统,投入的时间、使用的部门、生产的厂家及实现技术等各不相同,这就要求新的系统需要具备能与其他系统进行数据共享和交换的集成能力。传统的点到点集成模式,使得构成的应用环境接口复杂,同一个数据需要为不同的系统开发不同的接口,通信状况混乱,维护代价昂贵,也不利于整个应用系统的扩充;基于HUB/SPOKE的集成模式中,在进行信息交互时,每次都需要经过中心节点,导致整个系统的效率严重依赖于中心节点,造成效率瓶颈,并且也不能解决对方系统差异化问题。

发明内容

本发明的目的在于克服现有技术中的开发框架需要开发人员对Java底层开发熟悉,需要对通用模块进行重复性开发的问题,提供一种面向SOA架构集成模式的,包含通用模块,适用于新手使用的,能快速构建JavaWeb应用的系统开发框架。

支撑SOA的关键是其消息传递架构-企业服务总线(ESB)。ESB是传统中间件技术与XML、Web服务等技术相互结合的产物,用于实现企业应用不同消息和信息的准确、高效和安全传递。ESB的出现改变了传统的软件架构,消除不同应用之间的技术差异,让不同的应用服务协调运作,实现不同服务之间的通信与整合。

为了实现上述发明目的,本发明提供了以下技术方案:

一种面向SOA快速构建JavaWeb应用的系统框架,包括Java底层模块,基础框架模块以及扩展层模块的三层框架结构;其中,

基础框架模块包括定制Spring模块、定制MyBatis模块及定制SpringMVC模块;

扩展层模块包括日志体系模块、异常体系模块、远程调用模块、安全集成模块、规则引擎模块、测试集成模块、消息驱动模块、事务体系模块、数据库适配模块及单点登录模块。中的一种或多种。

所述日志体系模块包括用户操作拦截器模块、手动添加日志模块及日志收集模块;

所述用户操作拦截器模块用于自动记录用户操作并同时自动拦截异常信息;

所述手动添加日志模块用于用户通过手动方式添加系统运行日志;

所述日志收集模块用于接收来自用户操作拦截器模块或手动添加日志模块的系统日志,并判断该日志的类型及级别后存入数据库和/或存入日志文件。

进一步的,所述异常体系模块采用如下流程工作:

(1-1)Action接收用户在客户端页面请求的操作;该操作依次调用Service服务层函数、DAO(DataAccessObjects)数据库操作层函数(DAO数据库操作成函数又称DAO接口函数);并请求建立与数据库的连接;

(1-2)如数据库连接失败,返回异常信息;所述异常信息依次从DAO数据库操作层函数、Service服务层函数返回至Action;

(1-3)所述异常信息被异常拦截器连接;异常拦截器对异常信息进行处理,并将该异常信息记录至日志;同时,异常拦截器返回该异常信息中的错误内容至客户端,客户端弹出错误信息提示。

进一步的,所述远程调用模块满足SOA架构模式,服务的调用采用ESB方式,采用如下流程工作:

(2-1)Action接收用户在客户端页面请求操作,该操作调用Service服务层函数并调用外部系统API;

(2-2)如成功,则通过ESB(EnterpriseServiceBus,即企业服务总线)调用外部系统具体的功能,Service服务层不需要知道外部系统API采用哪种开发语言实现,也不需要知道怎么实现

(2-3)如成功,返回的数据结果依次通过ESB及外部系统API至Service服务层函数;

(2-4)Service服务层函数根据返回的数据结果将处理结果返回至Action;Action将该结果发送至用户界面。

进一步的,所述安全集成模块包含一组在Spring应用上下文中配置的Bean,利用了SpringIoC,DI和AOP功能为应用系统提供声明式的安全访问控制功能。

进一步的,所述规则引擎模块包括规则配置模块、框架规则引擎器及框架规则接口模块;

所述规则配置模块用于根据用户的选择形成规则库并供应用系统运行调用;

所述框架规则接口模块用于接收业务数据并进行规则过滤后将其传送至框架规则引擎器;

所述框架规则引擎器根据形成的规则库生成框架运行规则服务,同时,所述框架规则引擎器还将框架规则接口模块发送的业务数据结合框架运行规则服务产生运行结果。

进一步的,所述测试集成模块包括业务接口模块、框架测试器模块及至少一个测试单元;

所述测试单元用于触发单元测试命令至所述框架测试器模块;

所述框架测试器模块用于根据测试命令模拟运行上下文并向业务接口模块调用测试对象;

所述业务接口模块通过调用相关业务并接收该业务的处理结果,所述业务接口模块还将该处理结果直接返回至测试单元模块。

进一步的,所述消息驱动模块满足SOA架构模式,采用如下流程工作:

(3-1)Action接收用户在客户端页面请求操作,该操作调用Service服务层函数;所述Service服务层函数调用消息中心的消息发送器将消息发送至ESB;ESB中消息服务中心对消息进行解析后将该消息发送至外部系统;

(3-2)消息中心通过ESB接收来自该外部系统返回的消息;同时消息中心筛选出属于本系统的消息,并将该消息处理后返回至Service服务层函数;

(3-3)Service服务层函数根据返回的消息进行处理,并将处理结果返回至Action;Action将该结果发送至用户界面。

进一步的,所述事务体系模块采用如下流程工作:

(4-1)Action接收用户在客户端页面请求操作,该操作依次调用Service服务层函数及DAO数据库操作层函数,DAO数据库操作层函数调用数据库;

(4-2)数据库根据返回实务控制规则至Service服务层函数;Service服务层函数根据该实务控制规则将处理结果返回至事务控制器模块;实务处理器按照指定实务隔离级别处理实务并将结果发送至数据库;

(4-3)数据库将处理结果依次通过DAO数据库操作层函数、Service服务层函数返回至Action;Action将该结果发送至用户界面。

与现有技术相比,本发明的有益效果:本发明所提供的面向SOA的快速构建JavaWeb应用的系统框架及方法,提供了一部分大多数Web应用开发过程中都需要的通用模块,如:单点登录、用户密码加密、用户管理、权限控制、数据访问、远程调用、数据封装、单元测试、集成测试等功能,并可以与任何标准化的ESB(企业服务总线)工具集成,以实现SOA(面向服务的架构)架构的企业级的应用系统集成。解决JavaWeb应用开发时的重复劳作、复用率低的问题,更大地提高了开发效率。

应用本发明提供的Java开发架构不需要开发人员具备非常全面、深入的Java开发技术,开发人员只需要了解本发明框架提供的功能和使用方法,在不需要知道底层实现细节的情况下就能独立地完成一个模块甚至一个系统。同时,对于应用本发明提供的架构的项目组来说,不需要再为不同的技术需要不同的开发人员而烦恼,也不需要从基础的SSH、SSM等框架从头来过,大大地提高了开发效率、节省开发资源、加快了开发周期。而对于应用本发明提供的开发架构的企业来说,有了统一的框架,就能解决各项目组各自为战、相同的技术重复开发、软件复用度低、难以形成积累的问题,增加了软件开发框架的层次化、并行化,大大提升企业的IT集成实施能力。

附图说明:

图1为本发明提供的快速构建JavaWeb应用的系统框架的架构图。

图2a为本发明中日志收集模块结构框图。

图2b为本发明中日志收集模块工作流程图。

图3为本发明中异常体系模块工作流程示意图。

图4为本发明中远程调用模块工作流程示意图。

图5a为本发明中规则引擎模块结构框图;

图5b为本发明中规则引擎模块工作流程示意图。

图6为本发明中测试集成模块工作流程示意图。

图7为本发明中消息驱动模块工作流程示意图。

图8为本发明中事务体系模块工作流程示意图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。

如图1所示,一种面向SOA的快速构建JavaWeb应用的系统框架,包括Java底层模块3,基础框架模块2以及扩展层模块1的三层框架结构;其中,

基础框架模块2包括定制Spring模块、定制MyBatis模块及定制SpringMVC模块;

扩展层模块1包括日志体系模块11、异常体系模块12、远程调用模块13、安全集成模块14、规则引擎模块15、测试集成模块16、消息驱动模块17、事务体系模块18、数据库适配模块19及单点登录模块10

如图2a、图2b所示,所述日志体系模块11包括用户操作拦截器模块111、手动添加日志模块112及日志收集模块113;

所述用户操作拦截器111模块用于自动记录用户操作并同时自动拦截异常信息;

所述手动添加日志模块112用于用户通过手动方式添加系统运行日志;

所述日志收集模块113用于接收来自用户操作拦截器模块或手动添加日志模块的系统日志,并判断该日志的类型及级别后存入数据库和/或存入日志文件。

本实施例中,日志体系模块11为基于Java标准的Slf4j日志规范,具体采用Logback实现。允许用户非常便捷地自定义日志格式和日志等级,方便全方位地掌控日志信息。用户可根据需要选择将日志信息输出到控制台、文件、用户界面中的一个活多个,也可以输出到操作系统的事件记录器和一些系统常驻进程。

异常体系模块12采用如下流程工作:

(1-1)Action接收用户在客户端页面请求的操作;该操作依次调用Service服务层函数、DAO数据库操作层函数;并请求建立与数据库的连接;

(1-2)如数据库连接失败,返回异常信息;异常信息依次从DAO数据库操作层函数、Service服务层函数返回至Action;

(1-3)所述异常信息被异常拦截器连接;异常拦截器对异常信息进行处理,并将该异常信息记录至日志;同时,异常拦截器返回该异常信息中的错误内容至客户端,客户端弹出错误信息提示。

具体的,异常体系模块12的工作流程中还可以如图3所示细分:

S111:Action接收用户在客户端页面请求;S112:Action调用Service服务层函数;S113:Service服务层函数调用DAO数据库操作层函数;S114:DAO数据库操作层函数请求与数据库连接;

S121:如数据库连接失败,返回异常信息至DAO数据库操作层函数;S122:DAO数据库操作层函数将连接异常信息返回至Service服务层函数;S123:Service服务层函数将连接异常信息返回至Action;

S131:始终对Acion进行监视的异常拦截器拦截到该异常信息,对异常信息进行处理;S132:异常拦截器将该异常信息记录至日志;同时,S132:异常拦截器将该异常信息反馈至客户端用户界面;S133:用户界面向用户弹出或展示错误信息。

远程调用模块13采用如下流程工作:

(2-1)Action接收用户在客户端页面请求操作,该操作调用Service服务层函数并调用外部系统API在本系统的映射;

(2-2)如成功,则通过ESB调用外部系统,

(2-3)如成功,返回的数据结果依次通过ESB及外部系统API在本系统的映射至Service服务层函数;

(2-4)Service服务层函数根据返回的数据结果将处理结果返回至Action;Action将该结果发送至用户界面。

具体的,远程调用模块13的工作流程中还可以如图4所示细分:

S211:Action接收用户在客户端页面请求操作;S212:该操作调用Service服务层函数;S213:Service服务层函数调用外部系统API在本系统的映射;

S221:如成功,则通过ESB调用外部系统;具体的,S222:ESB启动路由功能寻找外部系统;S233:寻找成功后进行协议转换并执行调用;

S231:如成功,外部系统返回的数据结果至ESB;S232:ESB对该数据结果进行协议转换;S233:ESB将进行过协议转换的外部接口数据返回至外部系统API在本系统映射;S234:外部系统API在本系统映射将该外部接口数据返回至Service服务层函数;

S241:Service服务层函数根据返回的数据结果进行数据处理,并将处理结果返回至Action;S242:Action将该结果发送至用户界面;S243:用户界面弹出或展示信息。

本实施例中的远程调用模块13采用ApacheCXF以WebService(JAX-WS)与Restful(JAX-RS)两种方式共同提供,为分布式系统数据传输共享提供数据依据,其能适配任意的标准的ESB企业服务总线。

进一步的,所述安全集成模块14包含一组在Spring应用上下文中配置的Bean,利用了SpringIoC,DI和AOP功能为应用系统提供声明式的安全访问控制功能。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了SpringIoC,DI(控制反转InversionofControl,DI:DependencyInjection依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。并且提供了一整套的认证技术:

HTTPBASICauthenticationheaders(一个基于IEFTRFC的标准);

HTTPDigestauthenticationheaders(一个基于IEFTRFC的标准);

HTTPX.509clientcertificateexchange(一个基于IEFTRFC的标准);

LDAP(一个非常常见的跨平台认证需要做法,特别是在大环境);

Form-basedauthentication(提供简单用户接口的需求);

OpenIDauthentication;

ComputerAssociatesSiteminder;

JA-SIGCentralAuthenticationService(CAS,这是一个流行的开源单点登录系统);

TransparentauthenticationcontextpropagationforRemoteMethodInvocationandHttpInvoker(一个Spring远程调用协议)。

如图5a、图5b所示,规则引擎模块15包括规则配置模块151、框架规则引擎器153及框架规则接口模块152;

所述规则配置模块151用于根据用户的选择形成规则库并供应用系统运行调用;

所述框架规则接口模块152用于接收业务数据并进行规则过滤后将其传送至框架规则引擎器;

所述框架规则引擎器153根据形成的规则库生成框架运行规则服务,同时,所述框架规则引擎器153还将框架规则接口模块152发送的业务数据结合框架运行规则服务产生运行结果。

具体的,规则引擎模块15采用Drools规则引擎,解决(或者至少降低)应用程序业务逻辑的开发和维护中固有的问题和困难。其包括以下功能:(1)完整规则管理:规则引擎以规则库为基础,规则编辑器为规则录入窗口,规则引擎为动力,辅以规则协同管理等功能模块;(2)数据对象动态可变:规则引擎采用map的方式来传递规则包的数据对象,这样就保证了对象结构的可变性;一般的规则引擎采用类对象的方式来传递需要处理的数据,这样如果改变对象的类型或者结构,就需要改动变量传递类的结构;而本发明中的规则引擎模块15采用map方式规避了这方面的问题,使得数据对象的结构也是可变的。(3)修改、测试自行完成:可以直接对规则包进行整体测试,测试时只需输入所需的参数的值,就可以查看到输出结果,以及可以看到整个规则执行路径以及对应的数据变化情况,这样就可以非常方便的对规则包进行测试检查,或者对下面的某个规则或者规则集单独进行检查。当规则包被调用时,可以将所有当次运行的这些规则执行轨迹记录下来,供用户进行查阅,或者存储在数据库中,供以后查阅。这在用户进行规则的查错时非常有用,可以马上定位到底是运行到那个规则时,发生了错误;(4)多种样式决策表:规则引擎针对国内决策表的特殊情况,设计了多种决策表,包括表格类决策表、多维决策表、关联决策表。当然也可以根据业务系统的实际需要进行扩展。这些不同类型的决策表,使得更加简单方便的表述业务逻辑。

测试集成模块16包括业务接口模块、框架测试器模块及至少一个测试单元;

所述测试单元用于触发单元测试命令至所述框架测试器模块;

所述框架测试器模块用于根据测试命令模拟运行上下文并向业务接口模块调用测试对象;

所述业务接口模块通过调用相关业务并接收该业务的处理结果,所述业务接口模块还将该处理结果直接返回至测试单元模块。

具体的,测试集成模块16采用基于Spring-Test的TestContext作为测试部分的基础框架,不但可以整合到JUnit测试框架上,还可以整合到TestNG等测试框架上。在整个测试过程中,可以自动注入容器中的对象,在不需要Tomcat等应用服务器的前提下,完全摆脱对显示层开发进度的依赖,而专注快速的开发业务层。针对数据库操作,可以手动设置测试事务回滚,不破坏数据现场。图6为测试集成模块16典型的工作流程示意。

消息驱动模块17采用如下流程工作:

(3-1)Action接收用户在客户端页面请求操作,该操作调用Service服务层函数;所述Service服务层函数调用消息中心的消息发送器将消息发送至ESB;ESB中消息服务中心对消息进行解析后将该消息发送至外部系统;

(3-2)消息中心通过ESB接收来自该外部系统返回的消息;同时消息中心筛选出属于本系统的消息,并将该消息处理后返回至Service服务层函数;

(3-3)Service服务层函数根据返回的消息进行处理,并将处理结果返回至Action;Action将该结果发送至用户界面。

具体的,消息驱动模块17的工作流程中还可以如图7所示的方式细分:

S311:Action接收用户在客户端页面请求操作;S312:该操作调用Service服务层函数;S313:Service服务层函数将消息传送至消息中心;S314:消息中心的消息发送器将消息发送至ESB;S315:ESB将该消息发送至外部系统;

S321:消息中心通过ESB接收来自该外部系统的消息;S322:从中筛选出发送到本系统的消息;S323:并将该消息返回至Service服务层函数;

S331:Service服务层函数根据返回的消息进行相关业务处理;S332:Service服务层函数将处理结果返回至Action;S333:Action将该结果发送至用户界面;S334:用户界面弹出或展示信息。

具体的,消息驱动模块17内嵌SpringIntegration作为事件框架基础实现,面向企业集成(EAI)。SpringIntegration扩展了Spring的编程模型到消息领域,在Spring已经存在的企业集成支持的基础上,提供了更高级别的抽象。它将控制反转添加到关注点,支持消息驱动架构,例如当特定业务逻辑应该执行时,响应也应该被发送。它支持路由和消息转换,所以不同的传输协议和不同的数据格式能在不影响易测试性的前提下被集成。换句话说,消息和集成关注点都被框架处理,所以业务组件能更好地与基础设施隔离,从而降低开发者所要面对的复杂的集成职责。框架提供了各种的配置选项,包括注解,支持命名空间的XML,通用bean元素的XML,当然也包括直接使用底层API。这些API基于定义好的策略接口和非侵略性的代理适配器。

进一步的,事务体系模块18采用如下流程工作:

((4-1)Action接收用户在客户端页面请求操作,该操作依次调用Service服务层函数及DAO数据库操作层函数,DAO数据库操作层函数调用数据库;

(4-2)数据库根据返回实务控制规则至Service服务层函数;Service服务层函数根据该实务控制规则将处理结果返回至事务控制器模块;实务处理器按照指定实务隔离级别处理实务并将结果发送至数据库;

(4-3)数据库将处理结果依次通过DAO数据库操作层函数、Service服务层函数返回至Action;Action将该结果发送至用户界面。

具体的,事务体系模块18的工作流程中还可以如图8所示的方式细分:

S411:Action接收用户在客户端页面请求操作;S412:该操作调用Service服务层函数;S413:Service服务层函数调用DAO数据库操作层函数;S414:DAO数据库操作层函数调用数据库;

S421:数据库根据返回实务控制规则至Service服务层函数;S422:Service服务层函数根据该实务控制规则将处理结果返回至事务控制器模块;S423:实务处理器按照指定实务隔离级别处理实务并将结果发送至数据库;

S431:数据库将处理结果返回至DAO数据库操作层函数;S432:DAO数据库操作层函数将处理结果返回至Service服务层函数;S433:至Service服务层函数将处理结果返回至Action;S434:Action将该结果发送至用户界面;S435:用户界面弹出或展示信息。

具体的,事务体系模块18采用基于Spring托管事务管理,解决了全局事务和本地事务的缺陷,允许应用开发者在任何环境下使用一致的编程模型,同时支持编程式事务管理和声明式事务管理。当使用编程式事务管理时,开发者直接使用框架的抽象事务(不同具体事务策略的统一抽象接口,面向接口编程),使应用程序可以运行在任何具体的底层事务基础之上。然而声明式事务管理更加简单易用,当使用声明式事务管理时,只需编写少量和事务相关的代码即可(只需编写一些配置文件),这些代码和框架中的事务API或任何其他的事务API都没有耦合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号