怎么实现MINA写的服务器程序支持多个自定义协议,并且在运行时期随意更换?
怎么实现MINA写的服务器程序支持多个自定义协议,并且在运行时期(注:运行时期这个词其实是一个限制条件,就是不能让mina的server程序停)随意更换?
如果可以 自定义协议应该以什么文件格式引入到服务器中?请大神帮忙解答啊 想了好长时间都没想出来
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
求解答
自己做一个网关,这跟mina没关系。
大神 请将详细一点 谢谢
首先 谢谢您 需求目标其实您已经说全了 就是支持多个协议同时可以动态更换协议 我现在程序不是web程序 所以不用tomcat之类的中间件 我想问 容器路由您指的是什么? 使用网关应该怎么做 请您指明 谢谢
继续求解答
协议相关的代码与server怎么分离啊? 二进制转报文 和 报文转数据的 代码 我想与server分开 现在是动态加载jar的方法 实现解耦 主要是用反射 但是发现这种方式有点麻烦 而且报文转数据的filter好像没办法用反射加载到filterchain中
自己写个推送配置的代码,监听到配置有变化了那就换个协议 或者 jmx
无人问津了啊
回复
感觉反射真的可以有。LZ去试试
回复
试过了 方法调用异常 我将自定义的协议(里面有报文头/报文体/报文尾等数据的封装还有编解码器)打包成jar文件 用jar动态加载实现协议与服务器程序的解耦 但服务器程序还是没办法与协议完全解耦
回复
运行期是,服务器程序在不停止的情况下
回复
那方法还是可行的吧,只是没写对?
回复
不放jar包里 就能运行
思路如下:
1,写好你需要的多个协议的codec
2,使用,filter对过来的首次请求做判断后动态添加 codec,以后这个会话就固定到这个添加的codec了;比如你server同一个端口,既要支持text协议,又要支持object协议,对与server端,只需要对client的连接做判断,判断他需要走什么协议(你client的请求包可以做标志来区分)后,动态add codec就行了