怎么实现MINA写的服务器程序支持多个自定义协议,并且在运行时期随意更换?

刀剑千秋 发布于 2014/04/17 08:41
阅读 531
收藏 0

怎么实现MINA写的服务器程序支持多个自定义协议,并且在运行时期(注:运行时期这个词其实是一个限制条件,就是不能让mina的server程序停)随意更换?

如果可以 自定义协议应该以什么文件格式引入到服务器中?请大神帮忙解答啊 想了好长时间都没想出来


加载中
0
王全
王全

思路如下:

1,写好你需要的多个协议的codec

2,使用,filter对过来的首次请求做判断后动态添加 codec,以后这个会话就固定到这个添加的codec了;比如你server同一个端口,既要支持text协议,又要支持object协议,对与server端,只需要对client的连接做判断,判断他需要走什么协议(你client的请求包可以做标志来区分)后,动态add codec就行了

0
Romen
Romen

你是指协议编解码器那里么?

刀剑千秋
刀剑千秋
回复 @Romen : 不放jar包里 就能运行
Romen
Romen
回复 @码之翔 :那方法还是可行的吧,只是没写对?
刀剑千秋
刀剑千秋
回复 @Romen : 运行期是,服务器程序在不停止的情况下
刀剑千秋
刀剑千秋
回复 @Romen : 试过了 方法调用异常 我将自定义的协议(里面有报文头/报文体/报文尾等数据的封装还有编解码器)打包成jar文件 用jar动态加载实现协议与服务器程序的解耦 但服务器程序还是没办法与协议完全解耦
Romen
Romen
回复 @Romen : 感觉反射真的可以有。LZ去试试
下一页
0
刀剑千秋
刀剑千秋

无人问津了啊

0
Gaischen
Gaischen

自己写个推送配置的代码,监听到配置有变化了那就换个协议  或者 jmx

刀剑千秋
刀剑千秋
协议相关的代码与server怎么分离啊? 二进制转报文 和 报文转数据的 代码 我想与server分开 现在是动态加载jar的方法 实现解耦 主要是用反射 但是发现这种方式有点麻烦 而且报文转数据的filter好像没办法用反射加载到filterchain中
0
马太航
马太航

自己做一个网关,这跟mina没关系。

刀剑千秋
刀剑千秋
大神 请将详细一点 谢谢
0
朱宏青
朱宏青

首先你这个需求目标就不明确

到底是服务多协议支持

还是在不停服务的情况下动态更换协议

楼上的思路应该是可行的 但是需要更改协议 简单点说 客户端跟服务端都得加代码

如果只是在不停服务的情况下动态更换协议,可以考虑容器路由,可以用网关做.


刀剑千秋
刀剑千秋
首先 谢谢您 需求目标其实您已经说全了 就是支持多个协议同时可以动态更换协议 我现在程序不是web程序 所以不用tomcat之类的中间件 我想问 容器路由您指的是什么? 使用网关应该怎么做 请您指明 谢谢
0
刀剑千秋
刀剑千秋

继续求解答

返回顶部
顶部