CN112698930B - 一种获取服务器标识的方法、装置、设备及介质 - Google Patents
一种获取服务器标识的方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN112698930B CN112698930B CN202011637165.1A CN202011637165A CN112698930B CN 112698930 B CN112698930 B CN 112698930B CN 202011637165 A CN202011637165 A CN 202011637165A CN 112698930 B CN112698930 B CN 112698930B
- Authority
- CN
- China
- Prior art keywords
- class
- application
- initialization
- server
- implementation
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 110
- 230000015654 memory Effects 0.000 claims description 9
- 239000003999 initiator Substances 0.000 claims description 8
- 238000012423 maintenance Methods 0.000 abstract description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000011981 development test Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种获取WebSphere服务器标识的方法。该方法在Spring应用容器启动时,加载服务容器初始化类,调用包含指定类对象的服务容器初始化类启动方法,获得指定类的实现类,对这些类对象的实现类进行实例化,将指定类对象的实现类的实例加入队列,调用队列中实例的启动方法,从应用上下文中获取该容器所在服务器的服务器标识,从而能够自动获取服务器标识,减少了人力成本和运行维护成本。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种获取服务器标识的方法、装置、设备以及计算机可读存储介质。
背景技术
WebSphere是业界广泛使用的一种软件平台。该软件平台包括了编写、运行和监视随需应变Web应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。
WebSphere运行架构如图1所示,节点node通常对应一台真实的虚拟机如Linux虚拟机,拥有属于自己的IP,运行于数据中心的物理机上。每个node上又可以建立多个WAS服务器(server),每个server可以独立地管理自己内部的Java应用,每个WAS server拥有自己的Java虚拟机(Java virtual machine,JVM)进程。集群(cluster)是参与工作负载管理的多个WAS server的集合。作为集群成员的服务器可以位于不同的node节点上,实现跨node的server管理,实际应用时通常以集群为单位对server进行分组管理和配置。
每个server中通常部署一个应用,以实现不同应用之间的隔离。随着项目系统的增加,对于WAS资源的需求与日俱增,为了更好的实现资源利用,开发、测试、生产环境中不可避免的出现多server的使用场景,即每个node上存在不止一个server。此时就需要一种方式能够唯一地标识位于不同server的不同应用。
在现有的技术方案中,可以通过在WebSphere控制台在每个服务器中分别设置JVM参数,写入服务器名,作为服务器唯一标识。具体地,在通用JVM参数框中,添加服务器名变量,设置服务器名。至此,在代码中即可通过获取JVM系统属性的方式获取服务器名,作为服务器唯一标识。如果每个server都添加一个JVM参数来设置服务器名,那势必会增加人力成本和运维成本。
发明内容
本申请提供了一种获取服务器标识的方法。该方法通过部署应用的容器加载服务容器初始化类,然后调用包含指定类对象的服务容器初始化类的启动方法,获得指定类的实现类,将指定类对象的实现类的实例加入队列,调用队列中实例的启动方法,从应用上下文中获取该容器所在服务器的标识,从而能够自动获取服务器的标识,减少了人力成本和运行维护成本。本申请还提供了上述方法对应的装置、设备以及介质。
第一方面,本申请提供了一种获取服务器标识的方法。该方法包括:
部署应用的容器在应用启动时,加载服务容器初始化类,服务容器初始化类的注解中包括指定类对象,指定类对象被作为参数传递至服务容器初始化类的启动方法;
调用服务容器初始化类的启动方法,获得指定类对象的实现类;
对指定类对象的实现类进行实例化,将指定类对象的实现类的实例加入队列;
调用队列中实例的启动方法,从应用上下文中获取容器所在服务器的服务器标识。
在一些可能的实现方式中,该方法还包括:
将服务器标识写入虚拟机的系统参数,以便根据系统参数引用服务器标识。
在一些可能的实现方式中,指定类对象包括应用初始化类对象。
在一些可能的实现方式中,对指定类对象的实现类进行实例化,包括:
当应用初始化类集合不为空时,遍历应用初始化类集合;
当应用初始化类集合中的应用初始化类对象的实现类不是接口和抽象类时,通过反射对应用初始化类对象的实现类进行实例化。
在一些可能的实现方式中,调用队列中实例的启动方法,从应用上下文中获取容器所在服务器的服务器标识,包括:
循环调用队列中的启动方法,当调用至自定义的应用初始化类对象的实现类的实例的启动方法时,从应用上下文中获取容器所在服务器的服务器标识。
在一些可能的实现方式中,应用初始化类对象的实现类包括加载顺序注解,加载顺序注解中指定有应用初始化类对象的实现类的优先级,且应用初始化类对象的实现类的优先级高于框架启动器的优先级。
第二方面,本申请提供了一种获取服务器标识的装置。该装置包括:
加载模块,用于在应用启动时,加载服务容器初始化类,服务容器初始化类的注解中包括指定类对象,指定类对象被作为参数传递至服务容器初始化类的启动方法;
调用模块,用于调用服务容器初始化类的启动方法,获得指定类对象的实现类;
实例化模块,用于对指定类对象的实现类进行实例化,将指定类对象的实现类的实例加入队列;
该调用模块,还用于调用队列中实例的启动方法,从应用上下文中获取容器所在服务器的服务器标识。
在一些可能的实现方式中,该装置还包括:
写入模块,用于将服务器标识写入虚拟机的系统参数,以便根据系统参数引用服务器标识。
在一些可能的实现方式中,指定类对象包括应用初始化类对象。
在一些可能的实现方式中,该实例化模块具体用于:
当应用初始化类集合不为空时,遍历应用初始化类集合;
当应用初始化类集合中的应用初始化类对象的实现类不是接口和抽象类时,通过反射对应用初始化类对象的实现类进行实例化。
在一些可能的实现方式中,该调用模块具体用于:
循环调用队列中的启动方法,当调用至自定义的应用初始化类对象的实现类的实例的启动方法时,从应用上下文中获取容器所在服务器的服务器标识。
在一些可能的实现方式中,应用初始化类对象的实现类包括加载顺序注解,加载顺序注解中指定有应用初始化类对象的实现类的优先级,且应用初始化类对象的实现类的优先级高于框架启动器的优先级。
第三方面,本申请提供一种设备,设备包括处理器和存储器。处理器、存储器进行相互的通信。处理器用于执行存储器中存储的指令,以使得设备执行如第一方面或第一方面的任一种实现方式中的获取服务器标识的方法。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,指令指示设备执行上述第一方面或第一方面的任一种实现方式所述的获取服务器标识的方法。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在设备上运行时,使得设备执行上述第一方面或第一方面的任一种实现方式所述的获取服务器标识的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请提供了一种自动获取服务器标识的方法,该方法通过部署应用的容器在应用启动时,加载服务容器初始化类,然后调用服务容器初始化类的启动方法,根据该启动方法中所包含的指定类对象,获得指定类对象的实现类,对该实现类进行实例化,将实例加入队列,最后该容器调用队列中实例的启动方法,从应用上下文中获取容器所在服务器的服务器标识。由此,能够自动获取服务器的唯一标识,减少了人力成本和运行维护成本。
进一步地,部署应用的容器将获取的服务器标识写入虚拟机的系统参数,以便根据系统参数引用服务器标识,使应用可以像使用其他的环境配置项一样使用服务器标识。
附图说明
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种WebSphere运行架构示意图;
图2为本申请实施例提供的一种获取服务器标识方法的流程图;
图3为本申请实施例提供的另一种获取服务器标识的方法的流程图;
图4为本申请实施例提供的一种获取服务器标识的方法的UML类图;
图5为本申请实施例提供的一种获取服务器标识的装置的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请提供的实施例中的方案进行描述。
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
首先对本申请实施例中所涉及到的一些技术术语进行介绍。
WebSphere是包含了编写、运行和监视全天候的工业强度的随需应变Web应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施的软件平台。WebSphere能够提供安全、可伸缩、具有弹性的应用程序基础架构,帮助构建、运行、集成和管理动态、随需应变的业务应用程序。
WebSphere广泛引用于Java应用的开发测试和生产,运行架构包括节点(node)、服务器(server)、集群(cluster)等,如图1所示,node通常对应一台真实的虚拟机(如Linux虚拟机),拥有属于自己的互联网协议地址(Internet protocol address,IP地址),运行于数据中心的物理机上。每个node上又可以建立多个server,每个server可以独立地管理自己内部的Java应用,每个server拥有自己的Java虚拟机(Java virtual machine,JVM)进程。cluster是参与工作负载管理的多个服务器的集合,作为集群成员的服务器可以位于不同的node节点上,实现跨node的server管理,通常以cluster为单位对server进行分组管理和配置。
通常在每个server中部署一个应用,以实现不同应用之间的隔离。随着项目系统的增加,对于WebSphere资源的需求与日俱增,为了更好的实现资源利用,开发、测试、生产环境中不可避免的出现多server的使用场景,即每个node上存在不止一个server。因此就需要一种方式能够唯一地标识位于不同server的不同应用。
通常情况下,可以通过在WebSphere控制台,对每个node中的server分别设置JVM参数,写入服务器名,作为服务器唯一标识。具体为在通用JVM参数框中,添加服务器名变量,设置服务器名,因此,在代码中即可通过获取JVM系统属性的方式获取服务器名,作为服务器唯一标识。
在实际应用中,因为大多数应用都采用多server部署,如果每个server都采用人工的方式添加一个JVM参数来设置服务器名,那么需要巨大的人力成本和运维成本。
有鉴于此,本申请提供了一种能够自动获取服务器标识的方法,该方法由部署应用的容器执行,在应用启动过程中自动获取该容器所在的服务器的唯一标识。
具体地,部署应用的容器在应用启动时,加载服务容器初始化类,然后调用包含指定类对象的服务容器初始化类的启动方法,获得指定类的实现类,对这些类对象的实现类进行实例化,将指定类对象的实现类的实例加入队列,调用队列中实例的启动方法,从应用上下文中获取该容器所在服务器的服务器标识,从而能够自动获取服务器的标识,减少了人力成本和运行维护成本。
为了便于理解,下面结合附图对本申请实施例提供的获取服务器标识的方法进行具体介绍。
参见图2所示的获取服务器标识的方法的流程图,该方法包括:
S202:部署应用的容器在应用启动时,加载服务容器初始化类。
其中,服务容器初始化类的注解中包括指定类对象,指定类对象可以为应用初始化类对象。在本实施例中,指定类对象被作为参数传递至服务容器初始化类的启动方法。
在一些可能的实现方式中,需要预先进行一些初始化操作以实现本方案,例如注册Servlet,在Servlet规范中通过ServletContainerInitializer实现该功能。
其中,应用启动时会创建当前应用里所有jar包的服务容器初始化类ServletContainerInitializer实例,ServletContainerInitializer的实现会被放在jar包的META-INF/services文件夹下。在Servlet规范中,@HandlersTypes注解能够在应用启动的时候加载指定的类。具体可以使用@HandlersTypes指定应用初始化类对象类的前提下,通过实现应用初始化类对象接口来完成服务器名的获取。
以Servlet容器为例,部署应用的Servlet容器在应用启动时,基于服务发现机制(service provider interface,SPI)发现和加载服务容器初始化类ServletContainerInitializer。部署应用的Servlet容器获取ServletContainerInitializer的注解中的指定类对象,并将该指定类对象作为参数传递至ServletContainerInitializer的启动方法。
因为Servlet容器基于SPI机制发现和加载ServletContainerInitializer,因此该ServletContainerInitializer的实现类会在对应的Jar包的META-INF/services/javax.servlet.ServletContainerInitializer文件中写明实现类的全类名,因此,在SpringWeb对应Jar的该文件中可以看到Spring Web提供的实现类为:org.springframework.web.SpringServletContainerInitializer。由此,部署应用的Servlet容器通过Java APIServiceLoader中的加载(load)方法加载所有的ServletContainerInitializer实现类。
服务容器初始化类能够实现服务容器初始化类接口,类上的注解能够将指定的类对象作为参数传递到服务容器初始化类的启动方法中。
以Servlet容器为例,SpringServletContainerInitializer类实现了Servlet的ServletContainerInitializer接口,类上的注解@HandlesTypes可以将指定的类(Class)对象作为参数传递到onStartup方法中。
S204:部署应用的容器调用服务容器初始化类的启动方法,获得指定类对象的实现类。
因为服务容器初始化类的注解包括指定类对象,该指定类对象被作为参数传递至服务容器初始化类的启动方法中,进而部署应用的容器可以调用服务容器初始化类的启动方法,从中获取指定类对象的具体实现类,进而调用实现类中的具体方法。
在实际应用中,部署应用的Servlet容器调用SpringServletContainerInitializer的启动(onStartup)方法,在onStartup方法中获取指定Class对象的具体实现类,进而调用实现类中的具体方法。
SpringServletContainerInitializer类中@HandlerTypes指定的是Class对象为应用初始化类对象(WebApplicationInitializer)。利用该机制,WebApplicationInitializer此时可以看成一个拓展的接口,当实现WebApplicatonInitializer这个接口,用户就可以通过自定义注入Servlet。
S206:部署应用的容器对所指定类对象的实现类进行实例化,将指定类对象的实现类的实例加入队列。
具体地,部署应用的容器检查应用初始化集合是否为空,当应用初始化类集合不为空时,遍历所述应用初始化类集合,当所述应用初始化类集合中的应用初始化类对象的实现类不是接口和抽象类时,部署应用的容器通过反射对所述应用初始化类对象的实现类进行实例化,然后将指定类对象的实现类的实例加入队列。
例如,Servlet容器检查webAppInitializerClasses(所有WebApplicationInitializer的实现类)不为空时,遍历所有WebApplicationInitializer的实现类,判断webAppInitializerClasses是否为接口或抽象类,当WebApplicationInitializer的实现类不是接口和实现类时,Servlet容器通过反射将这些WebApplicationInitializer的实现类进行实例化,然后将WebApplicationInitializer的实现类的实例添加到队列中。
S208:部署应用的容器调用队列中实例的启动方法,从应用上下文中获取容器所在服务器的服务器标识。
上下文(context)是存储键值对集合,通常作为整个工具的信息采集中转站。例如,WebSphere启动时会在ServletContext中写入服务器名,因此可以从ServletContext中获取服务器名。在本实施例中,部署应用的容器调用队列中实例的启动方法,能够从应用上下文中获取该容器所在服务器的服务器标识。
在一些可能的实现方式中,部署应用的容器循环调用队列中的启动方法,当调用至自定义的应用初始化类对象的实现类的实例的启动方法时,从应用上下文中获取该容器所在服务器的服务器标识。
具体地,Servlet容器循环调用WebApplicationInitializer队列中的onStartup方法,当调用自定义WebApplicationInitializer实现类MyWebApplicationInitializer的onStartup方法时,Servlet容器从ServletContext中获取服务器名。因为容器启动时会在ServletContext中写入服务器名,因此能够从ServletContext中获取服务器名。
由此,本申请实施例提供了一种自动获取服务器标识的方法,该方法通过部署应用的容器在应用启动时,加载服务容器初始化类,然后调用包含指定类对象的服务容器初始化类的启动方法,获得指定类的实现类,对这些类对象的实现类进行实例化,将指定类对象的实现类的实例加入队列,调用队列中实例的启动方法,从应用上下文中获取该容器所在服务器的服务器标识,从而能够自动获取服务器的标识,减少了人力成本和运行维护成本。
以上对本申请提供的一种自动获得服务器标识的方法作了具体介绍,下面结合图3对本申请实施例提供的另一种自动获得服务器标识的方法进行介绍。
S302:部署应用的容器在应用启动时,加载服务容器初始化类。
服务容器初始化类的注解中包括指定类对象,指定类对象被作为参数传递至服务容器初始化类的启动方法。
S304:部署应用的容器调用服务容器初始化类的启动方法,获得指定类对象的实现类。
S306:部署应用的容器检查应用初始化集合是否为空,当应用初始化类集合不为空时,遍历应用初始化类集合。
S308:当应用初始化类集合中的应用初始化类对象的实现类不是接口和抽象类时,部署应用的容器通过反射对应用初始化类对象的实现类进行实例化,然后将指定类对象的实现类的实例加入队列。
S310:部署应用的容器对应用初始化类对象队列进行排序。
应用初始化类对象的实现类包括加载顺序注解,加载顺序注解中指定有应用初始化类对象的实现类的优先级,且应用初始化类对象的实现类的优先级高于框架启动器(Sping boot)的优先级。如果希望启动方法被优先加载,需要在应用初始化类对象实现类上加上@Order注解调整加载顺序。
S312:部署应用的容器循环调用队列中的启动方法,当调用至自定义的应用初始化类对象的实现类的实例的启动方法时,从应用上下文中获取该容器所在服务器的服务器标识。
S314:部署应用的容器将该服务器标识写入虚拟机的系统参数,以便根据系统参数引用服务器标识。
具体地,将获取的服务器名写入JVM系统参数中,在判断所有应用初始化类对象的实现类中调用war包应用项目启动类父类(如SpringBootServletInitializer)的启动方法,在该方法中调用createRootApplicationContext方法,通过this.configure(builder)回调重写的configure方法,最后调用run方法进入SpringIOC的启动流程。
以Servlet的具体建模语言参见图4所示,图4为上述涉及的关键类的统一建模语言(unified modeling language,UML)类图。
由此,本方案在自动获取应用的容器所在的服务器的唯一标识的基础上,通过部署应用的容器将获取的服务器标识写入虚拟机的系统参数,以便应用根据系统参数引用服务器标识,使应用可以像使用其他的环境配置项一样使用服务器标识。
与上述方法实施例相对应的,本申请还提供了一种获取服务器标识的装置,参见图5,该装置500包括:加载模块502、调用模块504和实例化模块506。
加载模块502,用于在应用启动时,加载服务容器初始化类,服务容器初始化类的注解中包括指定类对象,指定类对象被作为参数传递至服务容器初始化类的启动方法;
调用模块504,用于调用服务容器初始化类的启动方法,获得指定类对象的实现类;
实例化模块506,用于对指定类对象的实现类进行实例化,将指定类对象的实现类的实例加入队列;
该调用模块504,还用于调用队列中实例的启动方法,从应用上下文中获取容器所在服务器的服务器标识。
在一些可能的实现方式中,该装置500还包括:
写入模块,用于将服务器标识写入虚拟机的系统参数,以便根据系统参数引用服务器标识。
在一些可能的实现方式中,指定类对象包括应用初始化类对象。
在一些可能的实现方式中,该实例化模块506具体用于:
当应用初始化类集合不为空时,遍历应用初始化类集合;
当应用初始化类集合中的应用初始化类对象的实现类不是接口和抽象类时,通过反射对应用初始化类对象的实现类进行实例化。
在一些可能的实现方式中,该调用模块504具体用于:
循环调用队列中的启动方法,当调用至自定义的应用初始化类对象的实现类的实例的启动方法时,从应用上下文中获取容器所在服务器的服务器标识。
在一些可能的实现方式中,应用初始化类对象的实现类包括加载顺序注解,加载顺序注解中指定有应用初始化类对象的实现类的优先级,且应用初始化类对象的实现类的优先级高于框架启动器的优先级。
本申请提供一种设备,用于实现安全校验方法。该设备包括处理器和存储器。处理器、存储器进行相互的通信。该处理器用于执行存储器中存储的指令,以使得设备执行安全校验方法。
本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在设备上运行时,使得设备执行上述安全校验方法。
本申请提供了一种包含指令的计算机程序产品,当其在设备上运行时,使得设备执行上述安全校验方法。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (6)
1.一种获取服务器标识的方法,其特征在于,所述方法包括:
部署应用的容器在所述应用启动时,加载服务容器初始化类,所述服务容器初始化类的注解中包括指定类对象,所述指定类对象被作为参数传递至所述服务容器初始化类的启动方法,所述指定类对象包括应用初始化类对象;
调用所述服务容器初始化类的启动方法,获得所述指定类对象的实现类;
对所述指定类对象的实现类进行实例化,将所述指定类对象的实现类的实例加入队列;
调用所述队列中所述实例的启动方法,从应用上下文中获取所述容器所在服务器的服务器标识;
所述对所述指定类对象的实现类进行实例化,包括:
当应用初始化类集合不为空时,遍历所述应用初始化类集合;
当所述应用初始化类集合中的应用初始化类对象的实现类不是接口和抽象类时,通过反射对所述应用初始化类对象的实现类进行实例化;
所述调用所述队列中所述实例的启动方法,从应用上下文中获取所述容器所在服务器的服务器标识,包括:
循环调用所述队列中的启动方法,当调用至自定义的应用初始化类对象的实现类的实例的启动方法时,从应用上下文中获取所述容器所在服务器的服务器标识。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述服务器标识写入虚拟机的系统参数,以便根据所述系统参数引用所述服务器标识。
3.根据权利要求1所述的方法,其特征在于,所述应用初始化类对象的实现类包括加载顺序注解,所述加载顺序注解中指定有所述应用初始化类对象的实现类的优先级,且所述应用初始化类对象的实现类的优先级高于框架启动器的优先级。
4.一种获取服务器标识的装置,其特征在于,所述装置包括:
加载模块,用于在应用启动时,加载服务容器初始化类,所述服务容器初始化类的注解中包括指定类对象,所述指定类对象被作为参数传递至所述服务容器初始化类的启动方法,所述指定类对象包括应用初始化类对象;
调用模块,用于调用所述服务容器初始化类的启动方法,获得所述指定类对象的实现类;
实例化模块,用于对所述指定类对象的实现类进行实例化,将所述指定类对象的实现类的实例加入队列;
所述调用模块,还用于调用所述队列中所述实例的启动方法,从应用上下文中获取所述容器所在服务器的服务器标识;
所述实例化模块具体用于:
当应用初始化类集合不为空时,遍历所述应用初始化类集合;
当所述应用初始化类集合中的应用初始化类对象的实现类不是接口和抽象类时,通过反射对所述应用初始化类对象的实现类进行实例化;
所述调用模块具体用于:
循环调用所述队列中的启动方法,当调用至自定义的应用初始化类对象的实现类的实例的启动方法时,从应用上下文中获取所述容器所在服务器的服务器标识。
5.一种设备,其特征在于,所述设备包括处理器和存储器;
所述处理器用于执行所述存储器中存储的指令,以使得所述设备执行如权利要求1至3中任一项所述的方法。
6.一种计算机可读存储介质,其特征在于,包括指令,所述指令指示设备执行如权利要求1至3中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011637165.1A CN112698930B (zh) | 2020-12-31 | 2020-12-31 | 一种获取服务器标识的方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011637165.1A CN112698930B (zh) | 2020-12-31 | 2020-12-31 | 一种获取服务器标识的方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112698930A CN112698930A (zh) | 2021-04-23 |
CN112698930B true CN112698930B (zh) | 2023-11-07 |
Family
ID=75513777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011637165.1A Active CN112698930B (zh) | 2020-12-31 | 2020-12-31 | 一种获取服务器标识的方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112698930B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113918235B (zh) * | 2021-09-17 | 2023-11-17 | 贝壳找房(北京)科技有限公司 | 应用加载的方法及装置、存储介质 |
CN114185623B (zh) * | 2021-12-20 | 2024-04-19 | 中国工商银行股份有限公司 | 一种应用启动过程中死锁的处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109155749A (zh) * | 2016-06-21 | 2019-01-04 | 甲骨文国际公司 | 互联网云托管的自然语言交互式消息传送系统会话器 |
CN109491762A (zh) * | 2018-11-09 | 2019-03-19 | 网易(杭州)网络有限公司 | 容器状态控制方法及装置、存储介质、电子设备 |
CN112104715A (zh) * | 2020-08-31 | 2020-12-18 | 银盛支付服务股份有限公司 | 一种基于微服务日志链路跟踪方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1279095A2 (en) * | 1999-08-16 | 2003-01-29 | Z-Force Corporation | System of reusable software parts and methods of use |
US20070174331A1 (en) * | 2006-01-06 | 2007-07-26 | Wolf Robert P | System and method for extending the business data associated with a network-based user collaboration tool to include spatial reference information for collaborative visualization |
WO2017070580A1 (en) * | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Ability to group multiple container databases as a single container database cluster |
-
2020
- 2020-12-31 CN CN202011637165.1A patent/CN112698930B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109155749A (zh) * | 2016-06-21 | 2019-01-04 | 甲骨文国际公司 | 互联网云托管的自然语言交互式消息传送系统会话器 |
CN109491762A (zh) * | 2018-11-09 | 2019-03-19 | 网易(杭州)网络有限公司 | 容器状态控制方法及装置、存储介质、电子设备 |
CN112104715A (zh) * | 2020-08-31 | 2020-12-18 | 银盛支付服务股份有限公司 | 一种基于微服务日志链路跟踪方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112698930A (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20030051029A1 (en) | Dynamic provisioning of sevice components in a distributed system | |
CN110752947A (zh) | 一种k8s集群部署方法及装置,一种部署平台 | |
CN111245634B (zh) | 一种虚拟化管理方法及装置 | |
WO2020177564A1 (zh) | Vnf的生命周期管理方法及装置 | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN112698930B (zh) | 一种获取服务器标识的方法、装置、设备及介质 | |
CN113157339A (zh) | 一种基于osb的应用服务扩展方法、系统、存储介质及装置 | |
CN114443215A (zh) | 业务应用部署方法、装置、计算机设备和存储介质 | |
CN112698838A (zh) | 多云容器部署系统及其容器部署方法 | |
EP2216962B1 (en) | A method for deploying and managing the sip servlet application and the osgi service platform thereof | |
CN116257438A (zh) | 接口测试用例的更新方法及相关设备 | |
CN115086166A (zh) | 计算系统、容器网络配置方法及存储介质 | |
CN113064737B (zh) | 使软件通信体系结构的组件在多核处理器并行运行的方法 | |
CN114938396A (zh) | 服务调用请求的路由方法、创建服务的方法及装置 | |
CN112738181B (zh) | 集群外部ip接入的方法、装置及服务器 | |
CN111324395A (zh) | 调用方法、装置和计算机可读存储介质 | |
CN114726905B (zh) | 一种Tbox网络接入Android系统的方法、装置、设备及存储介质 | |
CN118519793A (zh) | 基于微前端技术的应用界面动态加载方法、系统、介质及设备 | |
CN116962260A (zh) | 一种集群安全检查方法、装置、设备及存储介质 | |
CN112889247B (zh) | Vnf服务实例化方法及装置 | |
US11296929B2 (en) | Methods and network systems for enabling a network service in a visited network | |
CN114385310B (zh) | 一种公共云容器实例创建方法及装置 | |
US20250068406A1 (en) | Export process from cloud environment | |
CN114553866A (zh) | 全量数据的接入方法、装置以及计算机可读存储介质 | |
CN114676034A (zh) | 一种测试方法、装置、及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |