掌桥专利:专业的专利平台
掌桥专利
首页

发布网络服务的方法、装置、存储介质及处理器

文献发布时间:2023-06-19 18:37:28


发布网络服务的方法、装置、存储介质及处理器

技术领域

本申请涉及网络通信技术领域,具体涉及一种发布网络服务的方法、装置、存储介质及处理器。

背景技术

现有发布WebService服务,一般是根据WebService接口调用请求生成源代码Java文件,并对源代码Java文件编译部署后再进行发布。且每当更新或这增加一个WebService服务,都需要根据WebService接口调用请求解析的配置文件重新拼接源代码Java文件,在生成新的源代码Java文件之后,还需要对Java源代码再次进行编译部署后才能成功发布,这种需要反复编译后才能发布WebService服务的方式效率很低。此外,如果在接口配置发生变化的情况下,因为Java自带的类加载器不能多次加载同一目录的同一个类,导致源代码Java文件发生变化之后,需要重启整个程序才能对新的源代码Java文件进行编译、加载,并发布更新后的WebService服务。这种发布WebService服务的方式,需要耗费大量时间反复重新编译java源文件,并反复重启java程序以对编译后的文件进行部署和发布,灵活性极低,无法满足现有对WebService服务快速发布的需求。

发明内容

本申请实施例的目的是提供一种发布网络服务的方法、装置、存储介质及处理器。

为了实现上述目的,本申请第一方面提供一种发布网络服务的方法,包括:

接收第一业务需求;解析第一业务需求,以得到第一业务需求的配置数据,配置数据包括待发布的网络服务;确定与配置数据对应的数据协议字节码生成器以及数据传输协议字节码生成器;根据数据协议字节码生成器、数据传输协议字节码生成器以及配置数据生成字节码文件,其中,字节码文件包括注册网络接口时所需的文件、请求类集合运行时所需的文件,以及响应类集合运行时所需的文件;通过预设类加载器加载字节码文件,以得到类实例;运行类实例,以将网络接口注册到总线;通过总线发布网络服务。

在一个实施例中,通过预设类加载器加载字节码文件,以得到类实例包括:预设类加载器生成预设类加载器实例;通过预设类加载实例加载字节码文件,以创建类实例。

在一个实施例中,方法还包括:在网络服务存在更新需求的情况下,卸载发布的网络服务;接收基于更新后的网络服务对应的第二业务需求,以发布更新后的网络服务。

在一个实施例中,卸载发布的网络服务包括:清理字节码文件;将类加载器实例设置为无效引用;卸载类实例和预设类加载器。

在一个实施例中,卸载发布的网络服务还包括:预设类加载系统配置预设卸载类加载器,以使网络服务通过预设卸载类加载器卸载。

在一个实施例中,方法还包括:预设类加载系统根据字节码文件配置预设类加载器,以使字节码文件通过预设类加载器生成类实例。

在一个实施例中,运行类实例,以将网络接口注册到总线包括:将类实例与网络服务的服务地址绑定,以将网络接口注册到总线。

本申请第二方面提供一种处理器,被配置成执行上述的发布网络服务的方法。

本申请第三方面提供一种发布网络服务的装置,包括被配置成执行上述的发布网络服务的方法的处理器。

本申请第四方面提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被处理器执行时使得所述处理器被配置成执行上述的发布网络服务的方法。

通过上述技术方案,能够使网络服务在发布之前,无需再经过复杂且效率低的源代码Java文件编译过程,引入字节码生成器直接生成编译后的字节码文件,并通过与字节码文件对应的预设类加载器进行加载后直接发布。该方案省去了编译步骤,同时减小了源代码的大小,能够有效地提高网络服务的发布效率。

本申请实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本申请实施例,但并不构成对本申请实施例的限制。在附图中:

图1示意性示出了根据本申请实施例的发布网络服务的方法的应用环境示意图;

图2示意性示出了根据本申请实施例的发布网络服务的方法的流程示意图;

图3示意性示出了根据本申请实施例的类加载系统流程图;

图4示意性示出了根据本申请实施例的发布webservice服务的流程图;

图5示意性示出了根据本申请实施例的发布网络服务的装置的结构框图;

图6示意性示出了根据本申请实施例的计算机设备的内部结构图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解的是,此处所描述的具体实施方式仅用于说明和解释本申请实施例,并不用于限制本申请实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请提供的发布网络服务的方法,可以应用于如图1所示的应用环境中。其中,客户端102通过网络与服务器104通过网络进行通信。其中,客户端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。客户端102用于发起网络服务请求。服务器104,用于接收和响应客户端102发布的网络服务请求并发布相应的网络服务。

图2示意性示出了根据本申请实施例的发布网络服务的方法的流程示意图。如图2所示,在本申请一实施例中,提供了一种发布网络服务的方法,本实施例主要以该方法应用于上述图1中的服务器104来举例说明,包括以下步骤:

步骤201,接收第一业务需求。

步骤202,解析第一业务需求,以得到第一业务需求的配置数据,配置数据包括待发布的网络服务。

步骤203,确定与配置数据对应的数据协议字节码生成器以及数据传输协议字节码生成器。

步骤204,根据数据协议字节码生成器、数据传输协议字节码生成器以及配置数据生成字节码文件,其中,字节码文件包括注册网络接口时所需的文件、请求类集合运行时所需的文件,以及响应类集合运行时所需的文件。

步骤205,通过预设类加载器加载字节码文件,以得到类实例。

步骤206,运行类实例,以将网络接口注册到总线。

步骤207,通过总线发布网络服务。

网络接口是指两个终端用于通信的工具,在本技术方案中,网络接口可以是指webservice接口。webservice接口是服务器系统对外的接口,例如用户需要从一些网站或者服务器上获取资源或信息,网站或者服务器不会直接将数据库共享给用户,网站或者服务器指挥给用户提供一个编写好的方法以帮助用户获取数据,用户通过调用网站或者服务器提供的webservice接口就能使用他们编写好的方法,从而达到数据共享的目的。接收针对网络接口的第一调用请求可以是指接收webservice接口调用请求,具体地,客户端102想要获取服务器104的资源或信息,于是发布网络服务请求,服务器104接收客户端发起的第一业务需求,请求调用webservice接口。在接收webservice接口调用请求后,对第一业务需求进行解析,为第一业务需求配置配置数据,配置数据包括待发布的网络服务,待发布的网络服务可以是指webservice服务,解析得到配置数据后同时将配置数据储存在数据库中。

数据协议可以是指xml协议或json协议,其中,xml协议是一种最早的网络传输协议,xml具有可扩展性、自描述性、简洁性。具体地,xml易于充分利用数据,xml具有跨平台且易于数据交换和共享的特点,数据可以被更多的用户和设备所利用。json协议是一种简单的数据交换格式,相比于xml,json更具有结构简单、生成和解析都更方便的特点。数据传输协议可以是指soap协议或http协议,soap一种简单对象访问协议,用来描述传递信息的格式,是一种轻量的、简单的、基于xml的协议。http超文本传输协议,一种基于json的协议。解析第一业务需求,为第一业务需求配置配置数据后,根据配置数据中的数据协议类型确定与数据协议类型对应的数据协议字节码生成器以及数据传输协议字节码生成器。具体地,配置数据中的数据协议为xml时,选择xml字节码生成器和soap字节码生成器。配置数据中的数据协议为json时,选择json字节码生成器和http字节码生成器。

在确定数据协议字节码生成器和数据传输协议字节码生成器后,根据选择的数据协议字节码生成器和数据传输协议字节码生成器以及配置数据生成字节码文件。其中,字节码是指一种包含执行程序,由一序列op代码或数据对组成的二进制文件,是一种中间码。字节码文件可以是指class文件,class文件全名为java class文件,是编译后的java文件,java文件只有在编译成class文件之后才可以发布运行。具体地,可以是指在确定选择xml字节码生成器和soap字节码生成器后,根据配置数据以及xml字节码生成器和soap字节码生成器生成class文件。在确定选择json字节码生成器和http字节码生成器后,根据配置数据以及json字节码生成器和http字节码生成器生成class文件。其中,生成的class文件中包括注册网络接口时所需的class文件、请求类集合运行时所需的class文件,以及响应类集合运行时所需的class文件。

在根据配置数据和字节码生成器生成字节码文件后,通过预设类加载器加载字节码文件,以得到类实例。其中,类加载器是指一种实现通过类的权限定名获取该类的二进制字节流的代码块,同时是java程序运行时不可或缺的一部分,负责把java源程序编译成class文件加载至java虚拟机的内存空间中,把class文件静态数据转换成方法区运行时的数据结构。类是指具有相同的属性和功能的对象的抽象的集合,实例是指一个类的真实对象。具体地,可以是指通过预设类加载器加载class文件,以得到class文件的类实例。

在得到类实例之后,运行类实例,以将网络接口注册到总线。其中,总线可以是指地址总线,地址总线是一种计算机总线,是CPU或有DMA能力的单元,用来沟通这些单元想要访问(读取/写入)计算机内存组件/地方的物理地址。具体地,可以是指在得到类实例后,运行类实例,将webservcie接口注册到总线。将接口注册到总线后,通过总线发布网络服务。具体地,可以是指将webservcie接口注册到总线,并发布webservcie服务。

上述技术方案,能够使webservcie服务在发布之前,无需再经过复杂且效率低的源代码Java文件编译过程,引入字节码生成器直接生成编译后的class文件,并通过与class文件对应的预设类加载器进行加载后直接发布。该方案省去了编译步骤,同时减小了源代码的大小,能够有效地提高webservcie服务的发布效率。

在一个实施例中,通过预设类加载器加载字节码文件得到类实例包括,预设类加载器生成预设类加载器实例,通过预设类加载实例加载字节码文件,以创建类实例。具体地,可以是指通过预设类加载器加载class文件得到class文件的类实例包括,首先预设类加载器生成预设类加载器实例,预设类加载器实例再加载class文件,以创建class文件的类实例。

在一个实施例中,在网络服务存在更新需求的情况下,卸载发布的网络服务,可以是指在客户端102修改或者更新发起的网络服务请求时,服务器104卸载已经发布的网络服务。接收基于更新后的网络服务对应的第二业务需求,以发布更新后的网络服务,可以是指服务器104针对修改或者更新后的网络服务请求,接收新的业务需求,并请求调用接口,并发布更新后的网络服务。具体地,客户端102修改或者更新webservice服务后,重新发起业务需求,并请求调用webservice接口,服务器104接收后并重新进行解析,配置配置数据,根据配置数据重新选择字节码生成器并生成新的class文件,再通过加载器加载class文件创建新的class文件类实例,运行类实例将webservice接口重新注册到总线以发布更新后的webservice服务。

在一个实施例中,卸载发布的网络服务包括:清理字节码文件,将类加载器实例设置为无效引用,卸载类实例和预设类加载器。其中,无效引用可以是指置为null,null即为空指针,是指不引用有效对象。具体地,可以是指,客户端102修改或者更新webservice服务后,重新发起业务需求,并请求调用webservice接口,服务器104接收新业务需求后,在发布更新的webservice服务前,需要先将已经发布的webservice服务进行卸载。卸载已发布的webservice服务即清理与其相关的class文件,并将加载class文件的类加载器实例置为null,同时将创建的class文件的类实例和类加载器都卸载。在将已经发布的webservice服务进行卸载后,服务器104再针对新的webservice接口调用请求重新发布更新后的webservice服务。

在一个实施例中,如图3所示,提供了一种类加载系统流程图,包括:

在卸载webservice服务时,需要将与其相关的类加载器卸载,而卸载类加载器需要使用卸载类加载器,在本技术方案中,服务器104中设置有类加载系统,类加载系统能够根据类加载器配置卸载类加载器。同时,类加载系统还能够根据字节码文件配置相应的类加载器,即类加载器能够根据class文件配置相应的类加载器。例如,如图3所示,在服务器需要发布A服务、B服务版本一以及B服务版本二时,类加载系统会根据A服务对应的A服务class集合、B服务版本一对应的B服务版本一class集合以及B服务版本二对应的B服务版本二class集合,配置对应的类加载器A、类加载器B以及类加载器C,来加载A服务class集合、B服务版本一class集合以及B服务版本二class集合,并创建对应的类实例。此外,如果需要将发布A服务、B服务版本一以及B服务版本二卸载时,类加载系统也会根据其对应的类加载器A、类加载器B以及类加载器C,配置对应的卸载类加载器A、卸载类加载器B以及卸载类加载器C,并通过卸载类加载器A、卸载类加载器B以及卸载类加载器C,分别卸载类加载器A、类加载器B以及类加载器C。

在一个实施例中,运行类实例,以将网络接口注册到总线包括,将类实例与网络服务的服务地址绑定,以将网络接口注册到总线。具体地,可以是指客户端102向服务器104发起业务需求,并请求调用webservice接口,服务器104接收业务需求,为业务需求配置配置数据,同时将配置数据存储在数据库中,以便调用,服务器10根据配置数据选择相应的字节码生成器生成运行的class文件,生成的class文件通过类加载系统配置的类加载器进行加载,类加载器生成类加载实例并对class文件进行加载,创建class文件相应的类实例,运行类实例,服务器104将webservice接口注册到地址总线,通过地址总线将类实例与客户端地址进行绑定,从而成功向客户端102发布webservice服务。

在一个实施例中,如图4所示,提供了发布webservice服务的流程图,包括:

客户端102存在webservice服务需求,向服务器104发起业务需求,并请求webservice接口调用。服务器104接收业务需求,为业务需求配置配置数据。服务器104根据配置数据选择对应的xml字节码生成器和soap字节码生成器,或json字节码生成器和http字节码生成器。再根据选择的数据协议字节码生成器和数据传输协议字节码生成器生成java编译后的class文件,服务器104中的类加载系统根据生成的class文件配置合适的专有类加载器,类加载器生成类加载实例并对class文件进行加载,以创建class文件的类实例。将webservice接口注册到总线,类实例通过总线与客户端102地址绑定,websevice服务成功发布。

在客户端102更新webservice服务需求的情况下,服务器104先将已经发布的webservice服务进行卸载。服务器104将已经发布的webservice服务对应的class文件清理掉,将类加载实例置为null,类加载系统根据类加载器配置相应的卸载类加载器,通过卸载类加载器对类加载器进行卸载。服务器在将已发布的webservice服务卸载后,重新接收客户端102发起的业务需求,并根据更新后的业务需求发布更新后的webservice服务。

本技术方案,能够使webservcie服务在发布之前,无需再经过复杂且效率低的源代码Java文件编译过程,引入字节码生成器直接生成java编译后的class文件,并设计了一套类加载系统,能够根据需要发布或卸载的webservcie服务对应的class文件集合,配置与之相应的类加载器。本技术方案省去了编译步骤,同时减小了源代码的大小,能够实时动态更新webservcie服务,有效地提高webservcie服务的发布效率。

在一个实施例中,如图5所示,提供了一种发布网络服务的装置,包括:

业务需求接收模块502,用于第一业务需求。

业务需求解析模块504,用于解析第一业务需求,以得到第一业务需求的配置数据,配置数据包括待发布的网络服务。

服务配置模块506,用于确定与配置数据对应的数据协议字节码生成器以及数据传输协议字节码生成器,根据数据协议字节码生成器、数据传输协议字节码生成器以及配置数据生成字节码文件,其中,字节码文件包括注册网络接口时所需的文件、请求类集合运行时所需的文件,以及响应类集合运行时所需的文件。

服务加载模块508,用于通过预设类加载器加载字节码文件,以得到类实例。

服务发布模块510,运行类实例,以将网络接口注册到总线,通过总线发布网络服务。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现对发布网络服务的方法。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

本申请实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现上述发布网络服务的方法。

本申请实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述发布网络服务的方法。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器A01、网络接口A02、存储器(图中未示出)和数据库(图中未示出)。其中,该计算机设备的处理器A01用于提供计算和控制能力。该计算机设备的存储器包括内存储器A03和非易失性存储介质A04。该非易失性存储介质A04存储有操作系统B01、计算机程序B02和数据库(图中未示出)。该内存储器A03为非易失性存储介质A04中的操作系统B01和计算机程序B02的运行提供环境。该计算机设备的数据库用于存储发布网络服务的数据。该计算机设备的网络接口A02用于与外部的终端通过网络连接通信。该计算机程序B02被处理器A01执行时以实现一种发布网络服务的方法。

本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本申请实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:

接收第一业务需求;解析第一业务需求,以得到第一业务需求的配置数据,配置数据包括待发布的网络服务;确定与配置数据对应的数据协议字节码生成器以及数据传输协议字节码生成器;根据数据协议字节码生成器、数据传输协议字节码生成器以及配置数据生成字节码文件,其中,字节码文件包括注册网络接口时所需的文件、请求类集合运行时所需的文件,以及响应类集合运行时所需的文件;通过预设类加载器加载字节码文件,以得到类实例;运行类实例,以将网络接口注册到总线;通过总线发布网络服务。

在一个实施例中,通过预设类加载器加载字节码文件,以得到类实例包括:预设类加载器生成预设类加载器实例;通过预设类加载实例加载字节码文件,以创建类实例。

在一个实施例中,方法还包括:在网络服务存在更新需求的情况下,卸载发布的网络服务;接收基于更新后的网络服务对应的第二业务需求,以发布更新后的网络服务。

在一个实施例中,卸载发布的网络服务包括:清理字节码文件;将类加载器实例设置为无效引用;卸载类实例和预设类加载器。

在一个实施例中,卸载发布的网络服务还包括:预设类加载系统配置预设卸载类加载器,以使网络服务通过预设卸载类加载器卸载。

在一个实施例中,方法还包括:预设类加载系统根据字节码文件配置预设类加载器,以使字节码文件通过预设类加载器生成类实例。

在一个实施例中,运行类实例,以将网络接口注册到总线包括:将类实例与网络服务的服务地址绑定,以将网络接口注册到总线。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:接收第一业务需求;解析第一业务需求,以得到第一业务需求的配置数据,配置数据包括待发布的网络服务;确定与配置数据对应的数据协议字节码生成器以及数据传输协议字节码生成器;根据数据协议字节码生成器、数据传输协议字节码生成器以及配置数据生成字节码文件,其中,字节码文件包括注册网络接口时所需的文件、请求类集合运行时所需的文件,以及响应类集合运行时所需的文件;通过预设类加载器加载字节码文件,以得到类实例;运行类实例,以将网络接口注册到总线;通过总线发布网络服务。

在一个实施例中,通过预设类加载器加载字节码文件,以得到类实例包括:预设类加载器生成预设类加载器实例;通过预设类加载实例加载字节码文件,以创建类实例。

在一个实施例中,方法还包括:在网络服务存在更新需求的情况下,卸载发布的网络服务;接收基于更新后的网络服务对应的第二业务需求,以发布更新后的网络服务。

在一个实施例中,卸载发布的网络服务包括:清理字节码文件;将类加载器实例设置为无效引用;卸载类实例和预设类加载器。

在一个实施例中,卸载发布的网络服务还包括:预设类加载系统配置预设卸载类加载器,以使网络服务通过预设卸载类加载器卸载。

在一个实施例中,方法还包括:预设类加载系统根据字节码文件配置预设类加载器,以使字节码文件通过预设类加载器生成类实例。

在一个实施例中,运行类实例,以将网络接口注册到总线包括:将类实例与网络服务的服务地址绑定,以将网络接口注册到总线。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

技术分类

06120115635877