一种高性能的HTTP接口怎么写作设计与实现

点赞:26857 浏览:121041 近期更新时间:2024-03-07 作者:网友分享原创网站原创

2系统实现

2.1接口动态加载

为方便动态加载接口逻辑,每个接口都使用独立类实现,通过Ja注解和反射机制实现动态加载.注解定义如下,用于描述接口信息:

@Retention(RetentionPolicy.RUNTIME)

public@interfaceInterfaceConfig{

一种高性能的HTTP接口怎么写作设计与实现参考属性评定
有关论文范文主题研究: 关于接口的论文范文文献 大学生适用: 自考毕业论文、大学毕业论文
相关参考文献下载数量: 79 写作解决问题: 写作参考
毕业论文开题报告: 标准论文格式、论文目录 职称论文适用: 刊物发表、职称评副高
所属大学生专业类别: 写作参考 论文题目推荐度: 经典题目

publicStringname();//接口名称

publicintsize()default0;//接口最大并发数

publiclongtimeOut()default30*1000;}//接口执行超时时间

这里通过注解描述了接口名称、最大并发数、超时时间等,然后通过Ja的反射机制动态加载接口信息.代码片断如下:

ConcurrentHashMap>configMap等于newConcurrentHashMap>();

Set>classes等于PackageUtilAdv.getClasses(CLASS_PATH);//获取CLASS_PATH下所有类文件


for(Classclazz:classes){

if(clazz.isAnnotationPresent(InterfaceConfig.class)){//获取接口类对应的注解信息

Annotationannotation等于clazz.getAnnotation(InterfaceConfig.class);

InterfaceConfigdescr等于(InterfaceConfig)annotation;

Mapprop等于newHashMap();

intconcurrentSize等于descr.size();

prop.put("InterfaceConfig",descr);

prop.put("interfaceClass",clazz);

configMap.put(descr.name(),prop);}}

2.2接口调用过程

当用户端请求到达接口写作技巧时,由写作技巧类调用实际的接口逻辑并返回结果,代码如下:

privateJSONObjectinvokeProcess(Mapmap,StringinterfaceName,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//接口对应实际的Class

Classclazz等于(Class)map.get("interfaceClass");

Objectobj等于objectMap.get(interfaceName);

if(obj等于等于null){

obj等于clazz.newInstance();

objectMap.put(interfaceName,obj);}

//调用接口实现的doProcess方法执行接口逻辑

Methodm等于clazz.getMethod("doProcess",newClass[]{HttpServletRequest.class,HttpServletResponse.class});

JSONObjectdata等于(JSONObject)m.invoke(obj,newObject[]{request,response});

returndata;}

3性能测试

在Linux下部署并测试程序,监听8090端口,如图3.1所示.