CN109726021A - 一种微服务接口定义类自发现的实现方法 - Google Patents
一种微服务接口定义类自发现的实现方法 Download PDFInfo
- Publication number
- CN109726021A CN109726021A CN201811445135.3A CN201811445135A CN109726021A CN 109726021 A CN109726021 A CN 109726021A CN 201811445135 A CN201811445135 A CN 201811445135A CN 109726021 A CN109726021 A CN 109726021A
- Authority
- CN
- China
- Prior art keywords
- class
- loader
- jar
- file
- interface
- 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.)
- Withdrawn
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及软件开发技术领域,特别是一种微服务接口定义类自发现的实现方法。本发明的方法是先获取当前类的类加载器,再遍历其父加载器;然后通过判断系统加载器获取组件前缀配置,通过加载器类加载顺序获取有序JAR包的URL地址,遍历其JAR包内的类文件,最后通过反射获取类注解发现服务接口类并存入内存以备用。本发明方法具有灵活可扩展、可定制化高的特点,可以很好的集成到各种基于JAVA开发的微服务框架或普通JAVA应用框架中使用。
Description
技术领域
本发明涉及软件开发技术领域,特别是一种微服务接口定义类自发现的实现方法。
背景技术
随着信息系统的复杂性日益增大,使用微服务框架设计的系统也越来越多。根据不同的业务需要选择不同微服务框架来搭建满足当前业务的微服务环境。一般的框架有两种:第一种是基于Spring Cloud的Web Restful服务接口的框架,第二种是基于RPC协议的基础服务框架。这两种框架常用的方法都是通过配置文件进行服务提供者信息配置或在业务代码配置,然后再根据其配置信息调用服务,在业务复杂性较大的时候配置的方式就显得不够灵活,不易于扩展和可维护性差。
发明内容
本发明解决的技术问题在于提出了一种基于类加载器的微服务接口定义类自发现的实现方法,通过类加载器的加载内容来自动发现服务接口定义类,从而实现自动服务注册或服务代理。
本发明解决上述技术问题的技术方案是:
所述的方法是在微服务框架中先获取当前启动类的类加载器,通过系统加载器发现在主启动文件中的Jar Manifest,通过Jar Manifest发现组件前缀过滤配置,通过遍历加载器并过滤查找到组件JAR包的URL,再遍历JAR包并通过注解找到其服务接口类信息,最后实现服务接口类的自发现。
所述的方法包括以下具体步骤:
获取当前类加载器;
遍历获取加载器的父加载器;
遍历获取加载器加载资源的URL;
如当前加载器为系统加载器,则通过Jar Manifest获取组件发现前缀,然后判定资源是否组件资源JAR包;如当前加载器不是系统加载器,则直接判定资源是否组件资源JAR包;
遍历JAR包的类文件信息;
通过注解判定是否服务接口类;
将服务接口类信息存入内存备用。
所述的类加载器在Java程序启动时加载程序的class类到JVM中。
所述的主启动文件,是指在Java程序启动时包含主入口main方法的类所在的JAR文件,即通过命令行执行启动命令的jar。
所述的Jar Manifest,是指主启动文件中的Manifest信息,基于框架的应用在编译打包时将相关信息写入。
所述的URL是定位这个资源在操作系统的文件路径或jar包中的路径,是资源的定位路径。
所述的注解,是指Java程序中的@interface类型所定义的类文件,其注解文件本身是额外定义的。
所述的服务接口类,是指微服务框架中服务提供者所定义的该服务所能提供的供其他服务调用者调用的方法组成的接口文件,服务调用者使用此接口类注入后直接调用。
所述的接口文件,是指Java程序中的interface类型所定义的类文件,文件中定义所提供的方法;
所述的服务调用者,是指需要使用服务的程序;
所述的注入,是指使用Spring框架中的@Autowired注解后,框架自动生成基于接口的实现Bean,在微服务框架中也提供类似的注解。
本发明通过类加载器的加载内容来自动发现服务接口定义类,从而实现自动服务注册或服务代理。本发明方法具有灵活可扩展、可定制化高的特点,可以很好的集成到各种基于JAVA开发的微服务框架或普通JAVA应用框架中使用。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图。
具体实施方式
请参见图1,为本发明实施所提供的一种基于类加载器的微服务接口定义类自发现的实现方法流程图。下面分别对其各个流程具体实现进行描述。
1)框架启动时自动执行发现方法
框架启动的主方法中调用服务类发现的doDiscovery()方法开始执行发现过程。
2)获取当前类加载器
获取当前类的类加载器,并递归调用解析父加载器,并且优先解析其
父加载器。
3)解析JAR Manifest获取应用信息
4)过滤非组件Jar包并解析JAR文件
5)将解析的类文件存入内存
6)根据微服务注解发现服务接口定义类
7)至此服务接口类发现完成,存入对内静态字段,后续随业务进行服务注册或代理等操作。
故此基于此发明方法可以高灵活的满足各种需求的微服务发现以及其他类发现,以达到各种各样业务的需要。
以上描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出实质性创造所获得的方案,都属于本发明保护的范围。
Claims (9)
1.一种微服务接口定义类自发现的方法,其特征在于,所述的方法是在微服务框架中先获取当前启动类的类加载器,通过系统加载器发现在主启动文件中的Jar Manifest,通过Jar Manifest发现组件前缀过滤配置,通过遍历加载器并过滤查找到组件JAR包的URL,再遍历JAR包并通过注解找到其服务接口类信息,最后实现服务接口类的自发现。
2.根据权利要求1所述的方法,其特征在于,所述的方法包括以下具体步骤:
获取当前类加载器;
遍历获取加载器的父加载器;
遍历获取加载器加载资源的URL;
如当前加载器为系统加载器,则通过Jar Manifest获取组件发现前缀,然后判定资源是否组件资源JAR包;如当前加载器不是系统加载器,则直接判定资源是否组件资源JAR包;
遍历JAR包的类文件信息;
通过注解判定是否服务接口类;
将服务接口类信息存入内存备用。
3.根据权利要求1或2所述的方法,其特征在于,所述的类加载器在Java程序启动时加载程序的class类到JVM中。
4.根据权利要求1所述的方法,其特征在于,
所述的主启动文件,是指在Java程序启动时包含主入口main方法的类所在的JAR文件,即通过命令行执行启动命令的jar。
5.根据权利要求1或2所述的方法,其特征在于,
所述的Jar Manifest,是指主启动文件中的Manifest信息,基于框架的应用在编译打包时将相关信息写入。
6.根据权利要求1所述的方法,其特征在于,
所述的URL是定位这个资源在操作系统的文件路径或jar包中的路径,是资源的定位路径。
7.根据权利要求1或2所述的方法,其特征在于,
所述的注解,是指Java程序中的@interface类型所定义的类文件,其注解文件本身是额外定义的。
8.根据权利要求1或2所述的方法,其特征在于,
所述的服务接口类,是指微服务框架中服务提供者所定义的该服务所能提供的供其他服务调用者调用的方法组成的接口文件,服务调用者使用此接口类注入后直接调用。
9.根据权利要求8所述的方法,其特征在于,
所述的接口文件,是指Java程序中的interface类型所定义的类文件,文件中定义所提供的方法;
所述的服务调用者,是指需要使用服务的程序;
所述的注入,是指使用Spring框架中的@Autowired注解后,框架自动生成基于接口的实现Bean,在微服务框架中也提供类似的注解。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811445135.3A CN109726021A (zh) | 2018-11-29 | 2018-11-29 | 一种微服务接口定义类自发现的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811445135.3A CN109726021A (zh) | 2018-11-29 | 2018-11-29 | 一种微服务接口定义类自发现的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109726021A true CN109726021A (zh) | 2019-05-07 |
Family
ID=66294770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811445135.3A Withdrawn CN109726021A (zh) | 2018-11-29 | 2018-11-29 | 一种微服务接口定义类自发现的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109726021A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110673890A (zh) * | 2019-09-11 | 2020-01-10 | 天翼电子商务有限公司 | 插件调用方法、系统、介质及装置 |
CN111414194A (zh) * | 2020-03-19 | 2020-07-14 | 政采云有限公司 | 一种接口信息生成方法、系统、电子设备及存储介质 |
CN112732364A (zh) * | 2021-01-21 | 2021-04-30 | 浪潮软件股份有限公司 | 一种同时发布web service与rest服务的方法 |
CN112748915A (zh) * | 2020-12-30 | 2021-05-04 | 山东浪潮通软信息科技有限公司 | 一种基于StimulSoft的动态扩展业务函数的方法及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070106694A1 (en) * | 2005-10-31 | 2007-05-10 | Masami Mori | Structuralized document, contents delivery server apparatus, and contents delivery system |
US7484224B2 (en) * | 2002-05-02 | 2009-01-27 | Bae Systems, Inc. | Adapter deployment without recycle |
CN106453288A (zh) * | 2016-09-29 | 2017-02-22 | 上海和付信息技术有限公司 | 一种支持异步模式的分布式微服务框架系统及其实现方法 |
CN107102847A (zh) * | 2016-02-23 | 2017-08-29 | 中国水电工程顾问集团有限公司 | 基于微服务的软件开发方法、装置及系统 |
CN108446111A (zh) * | 2018-03-26 | 2018-08-24 | 国家电网公司客户服务中心 | 一种基于Spring cloud的微服务构建方法 |
-
2018
- 2018-11-29 CN CN201811445135.3A patent/CN109726021A/zh not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7484224B2 (en) * | 2002-05-02 | 2009-01-27 | Bae Systems, Inc. | Adapter deployment without recycle |
US20070106694A1 (en) * | 2005-10-31 | 2007-05-10 | Masami Mori | Structuralized document, contents delivery server apparatus, and contents delivery system |
CN107102847A (zh) * | 2016-02-23 | 2017-08-29 | 中国水电工程顾问集团有限公司 | 基于微服务的软件开发方法、装置及系统 |
CN106453288A (zh) * | 2016-09-29 | 2017-02-22 | 上海和付信息技术有限公司 | 一种支持异步模式的分布式微服务框架系统及其实现方法 |
CN108446111A (zh) * | 2018-03-26 | 2018-08-24 | 国家电网公司客户服务中心 | 一种基于Spring cloud的微服务构建方法 |
Non-Patent Citations (2)
Title |
---|
许晓东,等;: "校园移动应用集成模式研究", 《软件导刊》 * |
郭俊刚,: "基于Eclipse的自动化测试工具的研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110673890A (zh) * | 2019-09-11 | 2020-01-10 | 天翼电子商务有限公司 | 插件调用方法、系统、介质及装置 |
CN110673890B (zh) * | 2019-09-11 | 2023-06-16 | 天翼电子商务有限公司 | 插件调用方法、系统、介质及装置 |
CN111414194A (zh) * | 2020-03-19 | 2020-07-14 | 政采云有限公司 | 一种接口信息生成方法、系统、电子设备及存储介质 |
CN111414194B (zh) * | 2020-03-19 | 2023-08-11 | 政采云有限公司 | 一种接口信息生成方法、系统、电子设备及存储介质 |
CN112748915A (zh) * | 2020-12-30 | 2021-05-04 | 山东浪潮通软信息科技有限公司 | 一种基于StimulSoft的动态扩展业务函数的方法及设备 |
CN112748915B (zh) * | 2020-12-30 | 2022-10-25 | 浪潮通用软件有限公司 | 一种基于StimulSoft的动态扩展业务函数的方法及设备 |
CN112732364A (zh) * | 2021-01-21 | 2021-04-30 | 浪潮软件股份有限公司 | 一种同时发布web service与rest服务的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109726021A (zh) | 一种微服务接口定义类自发现的实现方法 | |
Carzaniga et al. | Designing distributed applications with mobile code paradigms | |
CN102413022B (zh) | 一种应用调试方法和系统 | |
CN101378324B (zh) | 组合业务处理、替换、具体业务调用的方法和装置及系统 | |
US9158510B2 (en) | System and computer program product for creating a telecommunications application | |
CN109729149A (zh) | 一种基于注解的微服务框架实现方法 | |
EP1978758B1 (en) | Technique for controlling a service composition process in a telecommunication network | |
TWI354900B (en) | Method, system, and computer program product for a | |
CN104618437B (zh) | 一种与android终端设备系统设置接口的适配方法 | |
CN105051687B (zh) | 应用部署方法和设备 | |
CN103744669A (zh) | 安卓系统Activity插件的创建、调用方法及系统 | |
US20090285382A1 (en) | Method, device and system for routing | |
CN106953746A (zh) | 集群节点升级系统及方法 | |
CN105677397B (zh) | 通过本地网关程序优化php远程调用的方法 | |
CN103246657A (zh) | 生成浏览器书签的方法和装置、网页浏览方法和装置 | |
CN112035090B (zh) | 基于容器化技术实现智能合约智慧化管理系统及方法 | |
CN106372250A (zh) | 通过url协议启动本地应用的参数传递方法及装置 | |
CN109614247A (zh) | 一种声明式远程服务调用系统及其执行方法 | |
CN111045668A (zh) | 一种跨平台的移动端系统开发方法及装置 | |
CN101115180B (zh) | 一种电子节目菜单系统及其功能模块动态加载运行方法 | |
Alliance | Service-based architecture in 5G | |
US20110161911A1 (en) | Composite service refactoring | |
CN114489614A (zh) | 一种saas平台定制化ui解决方法 | |
CN104717184B (zh) | 一种终端应用会话五元组的获取方法及装置 | |
CN104346144B (zh) | Eclipse RCP扩展点配置方法及装置 |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190507 |
|
WW01 | Invention patent application withdrawn after publication |