CN103294455A - 一种软件服务实现方法、系统及Java平台 - Google Patents
一种软件服务实现方法、系统及Java平台 Download PDFInfo
- Publication number
- CN103294455A CN103294455A CN 201210046061 CN201210046061A CN103294455A CN 103294455 A CN103294455 A CN 103294455A CN 201210046061 CN201210046061 CN 201210046061 CN 201210046061 A CN201210046061 A CN 201210046061A CN 103294455 A CN103294455 A CN 103294455A
- Authority
- CN
- China
- Prior art keywords
- service
- assembly
- realizes
- component
- module
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种软件服务实现方法及系统,基于Java平台,将应用软件依据开放服务OSGi规范标准封装成服务实现组件及远程服务组件,所述远程服务组件包括所述服务实现组件注册信息,所述方法包括:远程接收用户端输入的软件服务请求信息,所述软件服务请求信息中携带有服务实现组件信息;在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,依据匹配结果,调用与所述匹配结果相对应的服务实现组件,并执行所述服务实现组件;获取所述服务实现组件的执行结果,并返回至用户端。通过本发明提供的一种软件服务系统能够实现在低成本开发的前提下,实现软件服务的动态化及跨平台操作。
Description
技术领域
本申请涉及软件服务领域,特别涉及一种软件服务实现方法、系统及Java平台。
背景技术
软件服务是指通过网络向用户提供应用软件,即厂商将应用软件统一部署在服务平台上,用户可以根据自己实际需求,通过互联网向厂商订购所需的应用软件,按订购的应用软件的数量多少和时间长短向厂商支付费用。
所述软件服务的实现过程为:用户发送软件服务请求至服务平台,服务平台接收到软件服务请求后,调用与服务请求相对应的应用软件对软件服务请求中需处理的数据进行处理,将处理结果返回给用户。目前常用的软件服务为基于Java平台的RMI(Remote Method Invocation,远程方法调用)远程服务。
上述基于Java平台的RMI远程服务为基于JMX(Java ManagementExtensions,Java管理扩展)实现服务动态化及跨平台操作性能,相对于现有基于Python动态语言的WEB Service远程服务有丰富的类库支撑,但JMX在实现服务动态化时的开发较为繁琐复杂,成本较高。此外,用户端在使用基于Java平台的RMI远程服务时,其平台必须为Java平台,方可完成远程调用。
综上所述,目前没有一种在低成本开发的前提下,实现软件服务动态化及跨平台操作的方案。
发明内容
本申请所要解决的技术问题是提供一种软件服务实现方法、系统及Java平台,用以解决现有技术中无法在低成本开发的前提下,实现软件服务动态化及跨平台操作的技术问题。
为解决上述技术问题,本发明提供的一种软件服务实现方法,基于Java平台,将应用软件依据开放服务OSGi规范标准封装成服务实现组件及远程服务组件,所述远程服务组件包括所述服务实现组件注册信息,所述方法包括:
远程接收用户端输入的软件服务请求信息,所述软件服务请求信息中携带有服务实现组件信息;
在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,依据匹配结果,调用与所述匹配结果相对应的服务实现组件,并执行所述服务实现组件;
获取所述服务实现组件的执行结果,并返回至用户端。
上述方法,优选地,为所述服务实现组件设置各自的组件类加载器,所述依据匹配结果调用与所述匹配结果相对应的服务实现组件包括:
依据匹配结果启动与所述匹配结果相对应的组件类加载器,由所述组件类加载器加载其对应的服务实现组件进行调用。
上述方法,优选地,所述执行所述服务实现组件还包括:
接收正在执行的所述服务实现组件的组件类加载器生成的组件调用请求信息,所述组件调用请求信息包括所述正在执行的服务实现组件需调用的其他服务实现组件信息;
启动与所述需调用的其他服务实现组件信息自身对应的组件类加载器,由该组件类加载器加载其对应的服务实现组件进行调用执行。
上述方法,优选地,在所述远程接收用户端输入的软件服务请求信息之后,在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息之前,还包括:
将所述用户端输入的软件服务请求信息依据远程过程调用协议RPC规范转换为可扩展标记语言XML数据格式或Java脚本对象标记JSON数据格式;
将所述XML数据格式或JSON数据格式的软件服务请求信息转换为Java数据格式的软件服务请求信息;
在所述获取所述服务实现组件的执行结果之后,返回至用户端之前,还包括:
将所述执行结果转换为XML数据格式或JSON数据格式;
将所述XML或JSON数据格式的执行结果依据所述RPC规范转换为用户端数据格式。
本发明还提供了一种软件服务实现系统,用于实现上述方法,所述方法基于Java平台,将应用软件依据开放服务OSGi规范标准封装成服务实现组件及远程服务组件,所述远程服务组件包括所述服务实现组件注册信息,所述系统包括请求信息接收模块、组件执行模块及结果反馈模块,其中:
所述请求信息接收模块,用于远程接收用户端输入的软件服务请求信息,所述软件服务请求信息中携带有服务实现组件信息;
所述组件执行模块,用于在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,依据匹配结果,调用与所述匹配结果相对应的服务实现组件,并执行所述服务实现组件;
所述结果反馈模块,用于获取所述组件执行模块发送的所述服务实现组件的执行结果,并返回至用户端。
上述系统,优选地,所述组件执行模块包括信息匹配子模块和组件类加载器:
所述信息匹配子模块,用于在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,依据所述匹配结果启动与所述匹配结果相对应的组件类加载器;
所述组件类加载器加载其对应的服务实现组件进行调用。
上述系统,优选地,所述组件执行模块还包括OSGi容器类加载器;
所述OSGi容器类加载器,用于接收正在执行的所述服务实现组件的组件类加载器生成的组件调用请求信息,所述组件调用请求信息包括所述正在执行的服务实现组件需调用的其他服务实现组件信息,并触发所述信息匹配子模块,由所述信息匹配子模块启动与所述需调用的其他服务实现组件信息自身对应的组件类加载器。
上述系统,优选地,所述系统还包括数据转换模块;
所述数据转换模块,用于将所述请求信息接收模块接收到的所述软件服务请求信息依据RPC规范转换为XML数据格式或JSON数据格式,并将所述XML数据格式或JSON数据格式的软件服务请求信息转换为Java数据格式的软件服务请求信息发送至所述组件执行模块,以及用于将所述组件执行模块产生的执行结果转换为XML数据格式或JSON数据格式,并将所述XML数据格式或JSON数据格式的执行结果依据所述RPC规范转换为用户端数据格式发送至所述执行结果反馈模块。
本发明还提供了一种Java平台,包括如上述任意一项所述的软件服务实现系统。
由上述可知,本发明提供的一种软件服务方法、系统及Java平台,基于Java平台,依据OSGi标准规范将向用户提供服务的应用软件封装成服务实现组件及远程服务组件,由于组件的独立性实现服务的动态化,并通过远程服务组件记录服务实现组件的注册信息,以供与服务实现组件不处于同一物理机器的用户端远程调用,实现了低成本开发的前提下,实现软件服务动态化及跨平台操作。
更进一步地,本发明提供的一种软件服务方法、系统及JAVA平台通过RPC协议实现远程软件服务,从而用户端在非基于JAVA平台的基础上,也可以实现远程调用,提高了通用性。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种软件服务实现方法实施例一的流程图;
图2为本发明提供的一种软件服务实现方法实施例一的部分流程图;
图3为本发明提供的一种软件服务实现方法实施例一的部分流程图;
图4为本发明提供的一种软件服务实现方法实施例二的流程图;
图5为本发明提供的一种软件服务实现系统实施例一的结构示意图;
图6为本发明提供的一种软件服务实现系统实施例一的另一种结构示意图;
图7为本发明提供的一种软件服务实现系统实施例一的再一种结构示意图;
图8为本发明提供的一种软件服务实现系统实施例二的结构示意图;
图9为本发明提供的一种Java平台实施例的逻辑架构图;
图10为本发明提供的一种Java平台实施例的组件容器的逻辑架构图;
图11为本发明提供的一种Java平台实施例的组件生命周期示意图;
图12为本发明提供的一种Java平台实施例的组件内部结构示意图;
图13为本发明提供的一种Java平台实施例中系统类加载器、容器类加载器及组件类加载器关系结构示意图;
图14为本发明提供的一种Java平台实施例的组件加载时序图;
图15为本发明提供的一种Java平台实施例进行对远程用户实现远程动态服务的运行时序图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,其示出了所示为本发明提供的一种软件服务实现方法实施例一的方法流程图,基于Java平台,其特征在于,将应用软件依据开放服务OSGi规范标准封装成服务实现组件及远程服务组件,所述远程服务组件包括所述服务实现组件注册信息,所述方法可以包括以下步骤:
步骤101:远程接收用户端输入的软件服务请求信息,所述软件服务请求信息中携带有服务实现组件信息。
其中,用户端与本发明基于的Java平台不处于同一物理机器上,因此,用户端对于软件服务的调用及Java平台对用户端输入的软件服务请求的接收通过远程服务实现。
本实施例所阐述的软件服务实现方法基于Java平台,Java平台包括Java虚拟机。本发明采用Java虚拟机后,由于Java语言在不同的平台上运行时不需要重新编译,所以Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成字节码,即可以在多种平台上不加修改地运行,而Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。其中,字节码为Java虚拟机上运行的目标代码。
在本实施例中,将应用软件依据OSGi规范标准封装成服务实现组件及远程服务组件,所述远程服务组件包括所述服务实现组件注册信息。
上述OSGi规范标准也称为OSGi服务平台。OSGi服务平台面向Java平台提供服务和组件封装的标准化原语,将应用软件统一封装成独立的、隔离的服务实现组件或远程服务组件,并对各个组件进行启动、停止、部署、卸载或重部署操作的管理。
每个服务实现组件或远程服务组件中包括组件头信息、组件类及组件资源,其中,组件头信息相当于组件的身份证,用于唯一标识组件以将自身与其他组件区分。组件头信息可以包括组件版本号、别名、类路径、启动类、导入类和导出类信息,组件类中包括具体实现组件的代码,组件资源中包括资源文件,辅助组件类中代码实现。
需要说明的是,所述服务实现组件依据其属性可以分为基础服务组件及业务逻辑组件。其中,基础服务组件提供软件服务的基础服务,为业务逻辑组件提供支撑。这类组件比较稳定,启动后一直运行。基础服务组件可以包括日志、数据库访问、定时任务、报表、用户权限及缓存组件。而业务逻辑组件是具体的业务服务,这些组件会被高频率的启动、停止、部署、卸载和/或重部署。
上述远程服务组件相当于接口组件,连接于用户端及软件服务平台之间,即远程服务组件可以将各种服务实现组件的启动信息进行保存,对所有的组件进行转换,从而将转换后的服务实现组件对用户端远程动态发布。
步骤102:在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,依据匹配结果,调用与所述匹配结果相对应的服务实现组件,并执行所述服务实现组件。
在本实施例中,远程服务组件采用OSGi规范标准的事件监听机制,监听所述服务实现组件的启动及停止操作,当所述服务实现组件启动后,将自身的启动信息作为服务实现组件注册信息保存到所述远程服务组件中进行注册。当用户端进行组件的调用时,由所述远程服务组件从其所保存的服务实现组件注册信息中查找与用户端输入的软件服务请求信息中携带的服务实现组件信息相匹配的信息,在查找到匹配的服务实现组件信息后,调用并执行与其对应的服务实现组件。
本步骤的具体实施过程请参阅图2,可以包括以下步骤:
步骤201:在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息。
步骤202:依据匹配结果启动与所述匹配结果相对应的组件类加载器,由所述组件类加载器加载其对应的服务实现组件进行调用。
在本实施例中,为每个服务实现组件设置各自的组件类加载器,由所述组件类加载器对各自组件进行启动、停止、部署、加载、卸载或重部署操作。
步骤203:组件类加载器执行所述服务实现组件。
在实际应用过程中,部分服务实现组件在执行过程中,可能还需要调用其他服务实现组件,因此组件类加载器在执行自身的服务实现组件时,还需要对其他服务实现组件进行调用。其具体实施过程请参阅图3所示。图3所示的流程图可以包括以下步骤:
步骤301:接收正在执行的服务实现组件的组件类加载器生成的组件调用请求信息,所述组件调用请求信息包括所述服务实现组件需调用的其他服务实现组件信息。
步骤302:启动与所述需调用的其他服务实现组件信息相对应的组件类加载器,由所述其他服务实现组件类加载器加载其对应的服务实现组件进行调用执行。
在基于Java平台实现软件服务时,当所述服务实现组件在执行过程中,组件类加载器需要调用其他服务实现组件时,生成包括需调用的其他组件信息的组件调用请求信息。远程服务组件接收组件调用请求信息,启动与所述需调用的组件调用请求信息相对应的组件类加载器,由其加载并执行其对应的组件。
需要说明的是,OSGi规范标准还定义了组件间的通信机制和事件机制,实现各个组件间的通信及控制。
此外,在所述服务实现组件执行过程中,也会调用Java平台的基础组件,此时组件类加载器生成基础组件调用请求信息发送至Java平台,由与所述组件调用请求信息对应的Java平台类加载器加载并执行其自身对应的基础组件。
步骤103:获取所述服务实现组件的执行结果,并返回至用户端。
由上述可知,相对于现有技术中,通过JMX实现软件服务动态化而言,本发明实施例中基于Java平台将向用户提供软件服务的应用软件依据OSGi规范标准封装成独立且隔离的组件,由这些组件实现用户的远程调用,由此在低成本开发的前提下,实现软件服务的动态化及跨平台操作。
请参考图4,其示出了本发明提供的一种软件服务实现方法实施例二的方法流程图,可以包括以下步骤:
步骤401:远程接收用户端输入的软件服务请求信息,所述软件服务请求信息中携带有服务实现组件信息。
步骤402:将所述用户端的软件服务请求信息依据远程过程调用协议RPC规范转换为可扩展标记语言XML数据格式或Java脚本对象标记JSON数据格式。
在本实施例中,相对于采用RMI实现的远程服务,本发明在实现远程服务时,基于Java平台采用RPC规范的数据进行格式转换,从而使得用户端使用的平台不限于Java平台。
步骤403:将所述XML数据格式或JSON数据格式的软件服务请求信息转换为Java数据格式的软件服务请求信息。
步骤404:在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,依据匹配结果,调用与所述匹配结果相对应的服务实现组件,并执行所述服务实现组件。
步骤405:获取所述服务实现组件的执行结果,将所述执行结果转换为XML数据格式或JSON数据格式。
步骤406:将所述XML或JSON数据格式的执行结果依据所述RPC规范转换为用户端数据格式。
步骤407:将转换为用户端数据格式的执行结果返回至用户端。
需要说明的是,步骤401、步骤404及步骤407分别与步骤101、步骤102及步骤103所述一致,对此不再加以阐述。
应用上述技术方案,在低成本开发的前提下实现软件服务的动态化及跨平台操作同时,采用RPC协议使得不限定Java平台的用户端可以远程调用执行软件服务,提高了通用性。
与上述本发明提供的一种软件服务实现方法实施例一的方法相对应,请参考图5,其示出了本发明提供的一种软件服务实现系统实施例一的结构示意图,在本实施例中,基于Java平台,将应用软件依据OSGi规范标准封装成服务实现组件及远程服务组件,所述远程服务组件包括所述服务实现组件注册信息,所述系统包括请求信息接收模块501、组件执行模块502及结果反馈模块503。
其中,所述请求信息接收模块501,用于远程接收用户端输入的软件服务请求信息,所述软件服务请求信息中携带有服务实现组件信息。
所述组件执行模块502,用于在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,依据匹配结果,调用与所述匹配结果相对应的服务实现组件,并执行所述服务实现组件。
在本实施例中,组件执行模块502可以集成至远程服务组件中。其中,所述组件执行模块502可以包括信息匹配子模块521和组件类加载器522,实现上述功能,如图6所示。其中,图6是以图5为基础,本发明提供的一种软件服务实现系统实施例一的另一种结构示意图。
所述信息匹配子模块521,用于在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,依据所述匹配结果启动与所述匹配结果相对应的组件类加载器522。
所述组件类加载器522加载其对应的服务实现组件进行调用。
由上述可知,通过设置所述组件类加载器522实现上述各组件的加载执行。所述信息匹配子模块521在进行完信息匹配后,依据匹配结果对与其相对应的组件类加载器进行调用,并由该组件类加载器实现其自身的服务实现组件的加载调用,并执行所述服务实现组件。
在实际应用过程中,所述组件类加载器522在执行其自身服务实现组件过程中,可能还需要调用其他服务实现组件,因此所述组件类加载器522在执行自身服务实现组件时还需要对其他服务实现组件进行调用。本发明提供的一种软件服务实现系统实施例一的再一种结构示意图请参阅图7。其中,图7以图6为基础,所述组件执行模块502还可以设置OSGi容器类加载器523。
所述OSGi容器类加载器523,用于接收所述正在执行的服务实现组件的组件类加载器522生成的组件调用请求信息,所述组件调用请求信息包括所述服务实现组件需调用的其他服务实现组件信息,并触发所述信息匹配子模块521,由所述信息匹配子模块521启动与所述需调用的其他服务实现组件信息相对应的组件类加载器。
此外,在所述服务实现组件执行过程中,也会调用Java平台的基础组件,此时组件类加载器522生成基础组件调用请求信息发送至Java平台,由与所述组件调用请求信息对应的Java平台类加载器加载并执行其自身对应的基础组件。
所述结果反馈模块503,用于获取所述组件执行模块502发送的所述服务实现组件的执行结果,并返回至用户端。
需要说明的是,本发明实施例基于Java平台,将应用软件依据OSGi规范标准封装成所述服务实现组件及所述远程服务组件后,将上述组件置于OSGi容器中。其中,所述OSGi容器可以为组件提供基础的运行环境,还可以实现组件间监听,即监听器监听运行环境中软件服务的执行过程中,是否需要调用服务实现组件和基础组件,以实现组件间调用。此外,OSGi容器还定义了组件的接口,且规定了组件封装规则。
应用上述技术方案,当所述请求信息接受模块501接收到用户端输入的携带有服务实现组件信息的软件服务请求信息后,发送至所述组件执行模块502,由所述组件执行模块502在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,并依据匹配结果调用与所述匹配结果相对应的位于OSGi容器中的服务实现组件,执行完所述服务实现组件后由所述结果反馈模块503将执行结果返回至用户端,完成软件服务。
由上述可知,相对于现有技术中,通过JMX实现软件服务动态化而言,本发明实施例中基于Java平台将向用户提供软件服务的应用软件依据OSGi规范标准封装成独立且隔离的组件,由这些组件实现用户的远程调用,由此在低成本开发的前提下,实现软件服务的动态化及跨平台操作。
与上述本发明提供的一种软件服务实现方法实施例二的方法相对应,参考图8所示为本发明提供的一种软件服务实现系统实施例二的结构示意图,基于本发明的系统实施例一,所述系统还包括数据转换模块504。
所述数据转换模块504,用于将所述请求信息接收模块501接收到的所述软件服务请求信息依据RPC规范转换为XML数据格式或JSON数据格式,并将所述XML数据格式或JSON数据格式的软件服务请求信息转换为Java数据格式的软件服务请求信息发送至所述组件执行模块,以及用于将所述组件执行模块502产生的执行结果转换为XML数据格式或JSON数据格式,并将所述XML数据格式或JSON数据格式的执行结果依据所述RPC规范转换为用户端数据格式发送至所述执行结果反馈模块503。
在本实施例中,请求信息接收模块501、组件执行模块502及结果反馈模块503的功能与系统实施例一中的相同,且组件执行模块502的结构可以参阅图6和图7,对此不再加以说明。
相对于现有技术中的采用RMI实现的远程服务,本发明实施例在实现远程服务时,基于Java平台由所述数据转换模块504采用RPC规范实现不同于Java平台的用户端平台与本发明Java平台之间数据转换,使得用户端的语言不限于Java,实现软件服务。
应用上述技术方案,本发明系统实施例二在低成本开发的前提下实现软件服务的动态化及跨平台操作同时,采用RPC协议使得不限定Java平台的用户端可以远程调用执行软件服务,提高了通用性。
与上述本发明系统实施例二相对应,参考图9所示为本发明提供的一种Java平台实施例的逻辑架构图,所述Java平台包括Java虚拟机、OSGi容器和软件服务实现系统。其中,软件服务实现系统集成到远程服务组件中,该系统的功能请参阅系统实施例的具体说明,对此不再加以阐述。
本发明实施例基于所述Java平台,将应用软件依据OSGi规范标准封装成服务实现组件及远程服务组件,并置于所述OSGi容器,所述远程服务组件集成有软件服务实现系统,且包括所述服务实现组件注册信息,所述服务实现组件包括基础服务组件及业务逻辑组件。
所述OSGi容器管理其内部各个组件的整个生命周期,同时为每个组件设置各自的组件类加载器,从而实现软件服务的动态性。另外所述OSGi容器定义了组件间的通信机制和事件机制,实现组件调用功能。所述OSGi容器的逻辑架构图如图10所示。
底层是本地的操作系统和Java虚拟机,本发明实施例基于Java虚拟机开发,使得软件服务实现跨平台操作。
执行环境、模块、生命周期、服务和安全是OSGi容器提供的5个基本功能。其中,执行环境(Execution Enviroment),用于为组件提供基础的运行环境,还可以实现组件间监听,即监听器监听运行环境中软件服务的执行过程中,是否需要调用服务实现组件和基础组件,以实现组件间调用。
模块(Modules)用于定义组件的接口以及规定组件开发的规则。
生命周期(Life Cycle)用于规定各个组件的生命周期及其生命周期的变化规则。
服务(Service)用于定义与软件服务相关的内容,例如:如何将组件发布为服务,如何注销服务。
安全(Security)用于定义软件服务安全性相关的内容。
所述OSGi容器内部各个组件均可以称为Bundle,一个Bundel可以发布为一个或者多个服务。组件的生命周期示意图如图11所示,其中:
已安装(INTALLED)表示组件已被安装,但是没有被解析;已解析(RESOLED)表示组件已被解析,但是没有被启动;已卸载(UNINSTALLED)表示组件已经被卸载;启动中(STARTING)表示组件已被启动;运行中(ACTIVE)表示组件处于运行状态;已停止(STOPPING)表示组件处于停止状态。
组件的内部结构示意图如图12所示,包括组件头信息、组件类及组件资源,其中:所述组件头信息包括版本号、别名、类路径、启动器类、导入类及导出类;所述组件类包括启动器类、服务类;所述组件资源包括资源文件。
本发明实施例基于Java平台,通过设置组件类加载器、容器类加载器及系统类加载器,使得各个所述服务实现组件间相互独立并能够进行通信和相互调用,由此实现软件服务的动态化,上述三个类加载器关系结构示意图如图13所示。
其中,所述系统类加载器,包括Java平台提供的基础组件的类加载器,用于系统类组件调用。所述容器类加载器,用于OSGi容器内部各个组件间通信及相互调用;所述组件类加载器,用于将各个组件独立,实现其自身组件的加载调用或执行。
在启动所述服务实现组件的组件类加载器之后,在执行所述组件类加载器的服务实现组件之前,还包括判断所述服务实现组件是否有依赖组件共同完成对用户的软件服务,如果是,依据实际情况由所述服务实现组件的依赖组件的组件类加载器对所述服务实现组件进行加载。
请参阅图14,其示出了本发明实施例的组件加载时序图,其中:
1401、远程服务组件接收到服务实现组件请求信息,依据所述请求信息启动与所述请求信息中组件信息相对应的组件类加载器,启动所述组件类加载器。
1402、组件类加载器生成对其他服务实现组件调用的请求信息。
1403、组件类加载器发送所述其他服务实现组件调用的请求信息至容器类加载器。
1404、容器类加载器判断是否需要调用系统类基础组件,如果是,则进入1406,如果否,进入1409。
1405、组件类加载器判断是否将所述服务实现组件交给其依赖组件进行加载,如果是,由所述服务实现组件的依赖组件的组件类加载器加载所述服务实现组件,如果否,进入1408。
1406、系统类加载器接收到调用系统类基础组件的信息。
1407、系统类加载器对其对应的系统类基础组件进行加载,进入1411。
1408、组件类加载器返回判断结果。
1409、容器类加载器启动所述请求信息中需调用的其他服务实现组件的组件类加载器,由组件类加载器加载其自身对应的服务实现组件。
1410、容器类加载器返回加载结果。
1411、系统类加载器返回所述系统类基础组件的加载结果至容器类加载器。
1412、容器类加载器返回所述系统类基础组件的加载结果至所述服务实现组件的组件类加载器。
1413、组件类加载器加载服务实现组件。该组件类加载器为步骤1401中远程服务组件启动的组件类加载器。
1414、组件类加载器返回加载结果。
需要说明的是,步骤1404及步骤1405同时进行。
在组件的加载过程中,各种类加载器在不停机情况下,可以调用其他组件,实现软件服务的动态性。
参考图15所示为,本发明实现动态远程软件服务的运行时序图,其中调用者为用户端,以python语言平台为例,其中:
1501、安装服务实现组件。
1502、接收所述服务实现组件的启动事件。
1503、依据Java反射机制,触发并启动所述服务实现组件对应的远程服务组件。
1504、调用所述远程服务组件的注册函数。
1505、将所述已启动的服务实现组件的信息保存至远程服务组件以完成注册。
1506、更新所述远程服务组件的注册表。
1507、发布所述远程服务组件的注册表信息。
1508、接收到用户端输入的软件服务请求信息。
1509、将所述软件服务请求信息依据RPC协议转换成XML数据格式或JSON数据格式。
1510、将XML数据格式或JSON数据格式的请求信息进行传输。
1511、将XML数据格式或JSON数据格式的请求信息转换成Java数据格式的请求信息。
1512、所述远程服务组件在其注册表中对所述请求信息进行匹配。
1513、依据匹配信息调用与所述匹配信息相对应的服务实现组件。
1514、执行所述服务实现组件。
1515、将执行结果返回。
1516、将所述返回的执行结果转换为XML数据格式或JSON数据格式。
1517、将XML数据格式或JSON数据格式的执行结果进行传输。
1518、将XML数据格式或JSON数据格式的执行结果转换为用户端数据格式的执行结果。
1519、所述服务实现组件停止。
1520、监听到所述服务实现组件的停止信息。
1521、将与所述服务实现组件对应的注册信息删除。
1522、将删除注册信息的事件信息发送至所述远程服务组件的注册表。
1523、更新所述远程服务组件的注册表。
在本实施例中,相对应SOAP协议及RMI协议,RPC协议更具实用性及轻量级特征,性能更好。
综上所述,本发明提供的一种Java平台不仅低成本的实现软件服务动态化及跨平台操作,同时使得调用软件服务的用户端不限于Java平台。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
以上对本发明所提供的一种软件服务实现方法、系统及一种Java平台进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种软件服务实现方法,基于Java平台,其特征在于,将应用软件依据开放服务OSGi规范标准封装成服务实现组件及远程服务组件,所述远程服务组件包括所述服务实现组件注册信息,所述方法包括:
远程接收用户端输入的软件服务请求信息,所述软件服务请求信息中携带有服务实现组件信息;
在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,依据匹配结果,调用与所述匹配结果相对应的服务实现组件,并执行所述服务实现组件;
获取所述服务实现组件的执行结果,并返回至用户端。
2.根据权利要求1所述的方法,其特征在于,为所述服务实现组件设置各自的组件类加载器,所述依据匹配结果,调用与所述匹配结果相对应的服务实现组件包括:
依据匹配结果启动与所述匹配结果相对应的组件类加载器,由所述组件类加载器加载其对应的服务实现组件进行调用。
3.根据权利要求2所述的方法,其特征在于,所述执行所述服务实现组件还包括:
接收正在执行的所述服务实现组件的组件类加载器生成的组件调用请求信息,所述组件调用请求信息包括所述正在执行的服务实现组件需调用的其他服务实现组件信息;
启动与所述需调用的其他服务实现组件信息自身对应的组件类加载器,由该组件类加载器加载其对应的服务实现组件进行调用执行。
4.根据权利要求1所述的方法,其特征在于,在所述远程接收用户端输入的软件服务请求信息之后,在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息之前,还包括:
将所述用户端输入的软件服务请求信息依据远程过程调用协议RPC规范转换为可扩展标记语言XML数据格式或Java脚本对象标记JSON数据格式;
将所述XML数据格式或JSON数据格式的软件服务请求信息转换为Java数据格式的软件服务请求信息;
在所述获取所述服务实现组件的执行结果之后,返回至用户端之前,还包括:
将所述执行结果转换为XML数据格式或JSON数据格式;
将所述XML或JSON数据格式的执行结果依据所述RPC规范转换为用户端数据格式。
5.一种软件服务实现系统,用于实现上述方法,所述方法基于Java平台,其特征在于,将应用软件依据OSGi规范标准封装成服务实现组件及远程服务组件,所述远程服务组件包括所述服务实现组件注册信息,所述系统包括请求信息接收模块、组件执行模块及结果反馈模块,其中:
所述请求信息接收模块,用于远程接收用户端输入的软件服务请求信息,所述软件服务请求信息中携带有服务实现组件信息;
所述组件执行模块,用于在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,依据匹配结果,调用与所述匹配结果相对应的服务实现组件,并执行所述服务实现组件;
所述结果反馈模块,用于获取所述组件执行模块发送的所述服务实现组件的执行结果,并返回至用户端。
6.根据权利要求5所述的系统,其特征在于,所述组件执行模块包括信息匹配子模块和组件类加载器,其中:
所述信息匹配子模块,用于在所述远程服务组件中匹配与所述服务实现组件信息相对应的服务实现组件注册信息,依据所述匹配结果启动与所述匹配结果相对应的组件类加载器;
所述组件类加载器加载其对应的服务实现组件进行调用。
7.根据权利要求6所述的系统,其特征在于,所述组件执行模块还包括OSGi容器类加载器;
所述OSGi容器类加载器,用于接收正在执行的所述服务实现组件的组件类加载器生成的组件调用请求信息,所述组件调用请求信息包括所述正在执行的服务实现组件需调用的其他服务实现组件信息,并触发所述信息匹配子模块,由所述信息匹配子模块启动与所述需调用的其他服务实现组件信息自身对应的组件类加载器。
8.根据权利要求5所述的系统,其特征在于,所述系统还包括数据转换模块;
所述数据转换模块,用于将所述请求信息接收模块接收到的所述软件服务请求信息依据RPC规范转换为XML数据格式或JSON数据格式,并将所述XML数据格式或JSON数据格式的软件服务请求信息转换为Java数据格式的软件服务请求信息发送至所述组件执行模块,以及用于将所述组件执行模块产生的执行结果转换为XML数据格式或JSON数据格式,并将所述XML数据格式或JSON数据格式的执行结果依据所述RPC规范转换为用户端数据格式发送至所述执行结果反馈模块。
9.一种Java平台,其特征在于,包括如权利要求5至8任意一项所述的软件服务实现系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210046061 CN103294455A (zh) | 2012-02-27 | 2012-02-27 | 一种软件服务实现方法、系统及Java平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210046061 CN103294455A (zh) | 2012-02-27 | 2012-02-27 | 一种软件服务实现方法、系统及Java平台 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103294455A true CN103294455A (zh) | 2013-09-11 |
Family
ID=49095399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201210046061 Pending CN103294455A (zh) | 2012-02-27 | 2012-02-27 | 一种软件服务实现方法、系统及Java平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103294455A (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514026A (zh) * | 2013-09-27 | 2014-01-15 | 摩卡软件(天津)有限公司 | 一种通过javascript直接调用java api的方法 |
CN103677819A (zh) * | 2013-12-05 | 2014-03-26 | 深圳中兴网信科技有限公司 | 基于osgi的代码正向工程的实现方法和实现装置 |
CN103713902A (zh) * | 2013-12-26 | 2014-04-09 | Tcl集团股份有限公司 | 一种基于Android系统的BOA编译方法和系统 |
CN103984567A (zh) * | 2014-04-22 | 2014-08-13 | 世纪禾光科技发展(北京)有限公司 | 开放平台模块化的方法和装置 |
CN104298512A (zh) * | 2014-10-10 | 2015-01-21 | 南京莱斯信息技术股份有限公司 | 一种基于OSGi标准的功能组件式集成开发系统 |
CN105245439A (zh) * | 2015-10-15 | 2016-01-13 | 浪潮软件股份有限公司 | 一种浏览器与硬件设备进行交互的方法及装置 |
CN105589688A (zh) * | 2014-12-11 | 2016-05-18 | 中国银联股份有限公司 | 应用服务程序发布方法及装置 |
CN105610952A (zh) * | 2015-12-31 | 2016-05-25 | 西安航天动力研究所 | 一种基于通用组件的远程应用程序调用系统及方法 |
CN105867964A (zh) * | 2015-12-15 | 2016-08-17 | 乐视网信息技术(北京)股份有限公司 | 安卓平台开放服务接入系统及其生成系统和生成方法以及接入方法 |
CN106095423A (zh) * | 2016-06-02 | 2016-11-09 | 腾讯科技(深圳)有限公司 | 提供浏览服务的方法、终端及服务器 |
CN106598585A (zh) * | 2016-12-08 | 2017-04-26 | 长沙学院 | 云环境下计分驱动的服务快速匹配和聚合方法 |
CN106663013A (zh) * | 2014-06-11 | 2017-05-10 | 微软技术许可有限责任公司 | 针对服务升级的动态调整步调 |
CN106846431A (zh) * | 2016-12-27 | 2017-06-13 | 中国电子科技网络信息安全有限公司 | 一种支持多表现形式的统一Web图形绘制系统 |
CN107526605A (zh) * | 2016-06-20 | 2017-12-29 | 腾讯科技(深圳)有限公司 | 实现应用程序加载服务组件的方法和装置 |
CN107645521A (zh) * | 2016-07-21 | 2018-01-30 | 平安科技(深圳)有限公司 | 功能组件安装方法、终端及服务器 |
CN108595246A (zh) * | 2018-03-15 | 2018-09-28 | 阿里巴巴集团控股有限公司 | 一种运行应用的方法、装置及设备 |
CN109274773A (zh) * | 2018-11-14 | 2019-01-25 | 四川长虹电器股份有限公司 | 一种实现远程服务调用方法、装置和系统 |
CN110442406A (zh) * | 2018-05-02 | 2019-11-12 | 天津京东深拓机器人科技有限公司 | 分页控件处理数据的方法及分页控件、电子设备 |
CN110888633A (zh) * | 2019-10-18 | 2020-03-17 | 福建天晴数码有限公司 | 一种Unity与H5组件同步方法及系统 |
CN112445850A (zh) * | 2019-08-16 | 2021-03-05 | 北京京东尚科信息技术有限公司 | 数据转换方法、装置、电子设备及可读介质 |
CN113590187A (zh) * | 2021-07-13 | 2021-11-02 | 青岛海尔科技有限公司 | 用于获取代码的方法及装置、电子设备 |
-
2012
- 2012-02-27 CN CN 201210046061 patent/CN103294455A/zh active Pending
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514026A (zh) * | 2013-09-27 | 2014-01-15 | 摩卡软件(天津)有限公司 | 一种通过javascript直接调用java api的方法 |
CN103677819A (zh) * | 2013-12-05 | 2014-03-26 | 深圳中兴网信科技有限公司 | 基于osgi的代码正向工程的实现方法和实现装置 |
CN103677819B (zh) * | 2013-12-05 | 2017-12-05 | 深圳中兴网信科技有限公司 | 基于osgi的代码正向工程的实现方法和实现装置 |
CN103713902A (zh) * | 2013-12-26 | 2014-04-09 | Tcl集团股份有限公司 | 一种基于Android系统的BOA编译方法和系统 |
CN103713902B (zh) * | 2013-12-26 | 2017-10-24 | Tcl集团股份有限公司 | 一种基于Android系统的BOA编译方法和系统 |
CN103984567A (zh) * | 2014-04-22 | 2014-08-13 | 世纪禾光科技发展(北京)有限公司 | 开放平台模块化的方法和装置 |
CN103984567B (zh) * | 2014-04-22 | 2017-12-26 | 世纪禾光科技发展(北京)有限公司 | 开放平台模块化的方法和装置 |
CN106663013A (zh) * | 2014-06-11 | 2017-05-10 | 微软技术许可有限责任公司 | 针对服务升级的动态调整步调 |
CN106663013B (zh) * | 2014-06-11 | 2019-12-03 | 微软技术许可有限责任公司 | 针对服务升级的动态调整步调 |
CN104298512A (zh) * | 2014-10-10 | 2015-01-21 | 南京莱斯信息技术股份有限公司 | 一种基于OSGi标准的功能组件式集成开发系统 |
CN104298512B (zh) * | 2014-10-10 | 2018-02-16 | 南京莱斯信息技术股份有限公司 | 一种基于OSGi标准的功能组件式集成开发系统 |
CN105589688B (zh) * | 2014-12-11 | 2019-04-09 | 中国银联股份有限公司 | 应用服务程序发布方法及装置 |
CN105589688A (zh) * | 2014-12-11 | 2016-05-18 | 中国银联股份有限公司 | 应用服务程序发布方法及装置 |
CN105245439A (zh) * | 2015-10-15 | 2016-01-13 | 浪潮软件股份有限公司 | 一种浏览器与硬件设备进行交互的方法及装置 |
CN105867964A (zh) * | 2015-12-15 | 2016-08-17 | 乐视网信息技术(北京)股份有限公司 | 安卓平台开放服务接入系统及其生成系统和生成方法以及接入方法 |
CN105610952A (zh) * | 2015-12-31 | 2016-05-25 | 西安航天动力研究所 | 一种基于通用组件的远程应用程序调用系统及方法 |
CN106095423A (zh) * | 2016-06-02 | 2016-11-09 | 腾讯科技(深圳)有限公司 | 提供浏览服务的方法、终端及服务器 |
CN107526605A (zh) * | 2016-06-20 | 2017-12-29 | 腾讯科技(深圳)有限公司 | 实现应用程序加载服务组件的方法和装置 |
CN107526605B (zh) * | 2016-06-20 | 2020-03-06 | 腾讯科技(深圳)有限公司 | 实现应用程序加载服务组件的方法和装置 |
CN107645521A (zh) * | 2016-07-21 | 2018-01-30 | 平安科技(深圳)有限公司 | 功能组件安装方法、终端及服务器 |
CN106598585A (zh) * | 2016-12-08 | 2017-04-26 | 长沙学院 | 云环境下计分驱动的服务快速匹配和聚合方法 |
CN106846431A (zh) * | 2016-12-27 | 2017-06-13 | 中国电子科技网络信息安全有限公司 | 一种支持多表现形式的统一Web图形绘制系统 |
CN106846431B (zh) * | 2016-12-27 | 2020-12-29 | 中国电子科技网络信息安全有限公司 | 一种支持多表现形式的统一Web图形绘制系统 |
CN108595246A (zh) * | 2018-03-15 | 2018-09-28 | 阿里巴巴集团控股有限公司 | 一种运行应用的方法、装置及设备 |
CN110442406A (zh) * | 2018-05-02 | 2019-11-12 | 天津京东深拓机器人科技有限公司 | 分页控件处理数据的方法及分页控件、电子设备 |
CN109274773A (zh) * | 2018-11-14 | 2019-01-25 | 四川长虹电器股份有限公司 | 一种实现远程服务调用方法、装置和系统 |
CN109274773B (zh) * | 2018-11-14 | 2021-01-26 | 四川长虹电器股份有限公司 | 一种实现远程服务调用方法、装置和系统 |
CN112445850A (zh) * | 2019-08-16 | 2021-03-05 | 北京京东尚科信息技术有限公司 | 数据转换方法、装置、电子设备及可读介质 |
CN110888633A (zh) * | 2019-10-18 | 2020-03-17 | 福建天晴数码有限公司 | 一种Unity与H5组件同步方法及系统 |
CN110888633B (zh) * | 2019-10-18 | 2023-04-11 | 福建天晴数码有限公司 | 一种Unity与H5组件同步方法及系统 |
CN113590187A (zh) * | 2021-07-13 | 2021-11-02 | 青岛海尔科技有限公司 | 用于获取代码的方法及装置、电子设备 |
CN113590187B (zh) * | 2021-07-13 | 2023-11-17 | 青岛海尔科技有限公司 | 用于获取代码的方法及装置、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103294455A (zh) | 一种软件服务实现方法、系统及Java平台 | |
US10175957B1 (en) | System and method for pervasive software platform-based model driven architecture application generator | |
US7836439B2 (en) | System and method for extending a component-based application platform with custom services | |
CN101192937B (zh) | 一种可热部署的方法及其系统 | |
WO2022016848A1 (zh) | 一种根据服务角色的进行应用部署的方法及装置 | |
US20070201655A1 (en) | System and method for installing custom services on a component-based application platform | |
US20080282222A1 (en) | Xml push and remote execution of a wireless applications | |
CN102790781B (zh) | 一种中间件、带行业应用中间件的m2m系统及其应用方法 | |
CN109918061B (zh) | 基于安卓系统的跨平台接口中间件实现方法和装置 | |
CN111858101B (zh) | 面向云架构系统的适配方法、装置、设备及存储介质 | |
CN102053860A (zh) | 基于CORBA的OSGi分布式扩展系统及方法 | |
US7191232B2 (en) | Extendable provisioning mechanism for a service gateway | |
CN114125028A (zh) | 微应用的运行方法、装置、设备、存储介质及程序产品 | |
EP1542404B1 (en) | Sharing services on a network | |
CN103677983A (zh) | 应用的调度方法及装置 | |
CN103026338A (zh) | 用于执行综合服务的系统、方法和设备 | |
CN113064737B (zh) | 使软件通信体系结构的组件在多核处理器并行运行的方法 | |
EP2216962B1 (en) | A method for deploying and managing the sip servlet application and the osgi service platform thereof | |
CN113448655B (zh) | C标准动态库的调用方法与装置 | |
CN101179414A (zh) | 一种在上级网管中集成下级网管功能的方法 | |
WO2021093671A1 (zh) | 任务处理方法、系统、装置、设备及计算机可读存储介质 | |
US20020069257A1 (en) | Provisioning mechanism for a service gateway | |
CN109669793B (zh) | 中间件进程内对象调用方法 | |
CN102196010A (zh) | 一种终端侧应用开放接口的实现系统及方法 | |
CN114390097A (zh) | 基于消息队列的区块链运行方法、系统及其应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130911 |