JGroups的MethodCall匹配问题

本文探讨了JGroups 2.6.9-GA版本中使用RpcDispatcher进行远程调用的过程,重点分析了MethodCall类的不同模式,包括OLD、METHOD、TYPES、SIGNATURE和ID模式,并给出了在不同模式下可能遇到的问题及解决方案。

      JGroups(2.6.9-GA)使用RpcDispatcher来调用callRemoteMethods等类似的一系列函数来实现远程调用,并且推荐使用MethodCall作为远程调用的函数信息,MethodCall类包装了包括函数名,函数参数及其类型等信息。MethodCall类部分代码如下:

      RPC调用端通过序列化MethodCall来传输MethodCall实例,远程的服务器端通过反序列化得到MethodCall实例,之后利用反射技术在预先设定的ServerObject类上查找匹配的函数并利用反射技术调用该方法得到返回结果。

      JGroups查找匹配的函数时提供了多种选择,并且通过MethodCall的属性mode设定。这些模式包括:

说明:1.OLD模式:检查函数名与函数参数个数;

          2.METHOD模式:此模式同ID模式,先通过ID模式找到Method,并设置MethodCall的method属性;

          3.TYPES模式:检查函数名,函数参数个数,并且通过Class.isAssignableFrom(Class clazz)判断是否是匹配类型。

          4.ID模式:通过函数ID来查找匹配的函数。

      默认的查找方式是OLD,其实现方式是: ,也就是说只检查函数名以及参数个数。这就会导致匹配出现问题。

      函数查找模式的设定是通过不同的构造函数类确定的。如:

      如果我们在使用MethodCall时并没有设定函数查找模式而使用默认的模式时,那么我们的远程的ServerObject类就不能有参数个数相同而参数类型不同的重载函数。如果出现这种情况的话,MethodCall会找到最先“匹配”到的函数,而未必是我们想调用的函数。如下面两个函数:

      ,调用 并不能确定能调用ServerObject的 方法。因为它使用的TYPES的查找模式。这种模式检查函数名,参数个数之后用如下的语句判断函数参数类型是否匹配。那么任何Object的子类都是可以复制给万能的Object类型的。  

 

解决办法:1.设定函数匹配模式。

               2.对与OLD模式,ServerObject中避免出现函数参数个数相同而类型不同的函数重载。

               3.对于TYPES模式,ServerObject中避免出现函数的参数个数相同,类型不同但是有“父子”关系的函数重载。

               4.对于SIGNATURE模式,显示通过signature获取参数类型,进而又用TYPES模式去匹配,此模式下同TYPES模式。

               5.对于ID模式,需要同步两边的函数ID?。。。

      代价最小的修改应该就是通过不同的构造函数去设定函数模式。经上面的讨论在JGroups-2.6.9-GA中就没有精确匹配的办法,除非自己改造ServerObject的函数,不能出现1,2,3,4中的情况。但是此方法代价太大,涉及到应用逻辑部分代码都需要修改。还有就是降低版本了,使用2.6.1版本的TYPES模式是可行的,其他的待考证。升级不靠谱,至少2.9.0以及2.10.0两个版本的存在同样的问题,其他的待考证。

内容概要:文章以“智能网页数据标注工具”为例,深入探讨了谷歌浏览器扩展在毕业设计中的实战应用。通过开发具备实体识别、情感分类等功能的浏览器扩展,学生能够融合前端开发、自然语言处理(NLP)、本地存储与模型推理等技术,实现高效的网页数据标注系统。文中详细解析了扩展的技术架构,涵盖Manifest V3配置、内容脚本与Service Worker协作、TensorFlow.js模型在浏览器端的轻量化部署与推理流程,并提供了核心代码实现,包括文本选择、标注工具栏动态生成、高亮显示及模型预测功能。同时展望了多模态标注、主动学习与边缘计算协同等未来发展方向。; 适合人群:具备前端开发基础、熟悉JavaScript和浏览器机制,有一定AI模型应用经验的计算机相关专业本科生或研究生,尤其适合将浏览器扩展与人工智能结合进行毕业设计的学生。; 使用场景及目标:①掌握浏览器扩展开发全流程,理解内容脚本、Service Worker与弹出页的通信机制;②实现在浏览器端运行轻量级AI模型(如NER、情感分析)的技术方案;③构建可用于真实场景的数据标注工具,提升标注效率并探索主动学习、协同标注等智能化功能。; 阅读建议:建议结合代码实例搭建开发环境,逐步实现标注功能并集成本地模型推理。重点关注模型轻量化、内存管理与DOM操作的稳定性,在实践中理解浏览器扩展的安全机制与性能优化策略。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值