2系统实现
2.1接口动态加载
为方便动态加载接口逻辑,每个接口都使用独立类实现,通过Ja注解和反射机制实现动态加载.注解定义如下,用于描述接口信息:
@Retention(RetentionPolicy.RUNTIME)
public@interfaceInterfaceConfig{
有关论文范文主题研究: | 关于接口的论文范文文献 | 大学生适用: | 自考毕业论文、大学毕业论文 |
---|---|---|---|
相关参考文献下载数量: | 79 | 写作解决问题: | 写作参考 |
毕业论文开题报告: | 标准论文格式、论文目录 | 职称论文适用: | 刊物发表、职称评副高 |
所属大学生专业类别: | 写作参考 | 论文题目推荐度: | 经典题目 |
publicStringname();//接口名称
publicintsize()default0;//接口最大并发数
publiclongtimeOut()default30*1000;}//接口执行超时时间
这里通过注解描述了接口名称、最大并发数、超时时间等,然后通过Ja的反射机制动态加载接口信息.代码片断如下:
ConcurrentHashMap
Set
for(Classclazz:classes){
if(clazz.isAnnotationPresent(InterfaceConfig.class)){//获取接口类对应的注解信息
Annotationannotation等于clazz.getAnnotation(InterfaceConfig.class);
InterfaceConfigdescr等于(InterfaceConfig)annotation;
Map
intconcurrentSize等于descr.size();
prop.put("InterfaceConfig",descr);
prop.put("interfaceClass",clazz);
configMap.put(descr.name(),prop);}}
2.2接口调用过程
当用户端请求到达接口写作技巧时,由写作技巧类调用实际的接口逻辑并返回结果,代码如下:
privateJSONObjectinvokeProcess(Map
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所示.