Mina Filter 丢失是为什么?
最近项目中需要用到socket通信 去处理大并发设备请求所以选择了使用mina框架来处理socket请求。
服务端socket 代码如下:
IoAcceptor acceptor = new NioSocketAcceptor(); acceptor.getFilterChain().addLast("logger", new LoggingFilter()); acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory())); acceptor.getFilterChain().addLast("exector",new ExecutorFilter(Executors.newCachedThreadPool())); // add other company device API CODEC protocol acceptor.getFilterChain().addLast("prune", new PruneFilter()); acceptor.getFilterChain().addLast("auth", new AuthFilter()); acceptor.getFilterChain().addLast("body", new BodyFilter()); acceptor.getSessionConfig().setReadBufferSize(ConfigSet.READ_BUFFERED_SIZE); // read-write channel 10 second no-OPS into the idle state acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, ConfigSet.IDLE_TIME); acceptor.setHandler(new DataHandler()); acceptor.setDefaultLocalAddress(new InetSocketAddress(ConfigSet.PORT)); try { acceptor.bind(); log.info("socket server start successfull, port: " + ConfigSet.PORT); } catch (IOException e) { log.error("socket bind failed.", e); }
通过mina的filter机制来处理协议定义的过滤,然后把处理完的结果丢给业务层去处理(DataHandler)
filter部门,先通过mina本身提供过滤器去处理,然后再依次交给PruneFilter、AuthFilter、BodyFilter三个过滤器来对协议定义进行审核,审核通过才能交给handler去处理,否则直接终止。
但是自定义filter部分不知道 怎么弄的,并不是链式结构去处理,我本地开启100个socket线程并发请求服务端,服务端有时候会跳过自定义filter,跳过任意一个或多个filter。并不经过filter 数据就直接到了handler层。 请问哈这个是什么问题导致的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是不是你加的过滤器太多了?你好好测试一下!
是不是你加的过滤器太多了?你好好测试一下!