内蒂/米娜合作。是否可以将netty的ChannelBuffer包装到MINA的IOBuffer?



的想法是将apache vysper集成到现有的netty应用程序中。是否可以将客户端的通道缓冲区连接到netty作为mina'a ChannelBuffer,以便它可以连接到vysper?

想法是为apache vysper制作自定义的基于netty的端点,获取ChanellBuffer并将其传递给vysper。

Apache Vysper 使用 MINA,一个类似于 netty 的非阻塞 I/O 框架。

当我设计 Vysper

时,我尽量不要将 MINA 与 Vysper 的其余部分紧密耦合。所以从理论上讲,如果你想走这条路,应该可以用netty替换MINA。查看源代码,您需要从包中移植所有功能https://svn.apache.org/repos/asf/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina到netty并替换它的用法。这是可行的,但需要一些工作。此外,Vypser使用XMPP作为基于XML的子集的协议。Vysper使用非阻塞XML解析器'nbxml',它是Vysper的一个子项目。(https://svn.apache.org/repos/asf/mina/vysper/trunk/nbxml)您还需要将其替换为nbxml的netty版本。在 Vysper 邮件列表中 dev@mina.apache.org 我可以详细帮助您。

另一种方法是使用 netty 端点,并且 - 正如 Norman 建议的那样 - 以某种方式将缓冲区传递给 Vysper/MINA。这听起来像是一种优雅的方法,但我怀疑它比以前的方法更可行。我不知道netty是否有符合Vysper需求的非阻塞XML解析器。它可能需要一些丑陋的特技来包裹MINA的内蒂。

最后一个建议是按原样使用 Vypser 。在过去的几年里,MINA没有像netty那样受到喜爱,但它也是一个非阻塞的IO框架。如果您真的坚持使用 netty,请考虑将其用作代理,在一个端点使用 netty,在另一个端点使用 Vysper/MINA,并且只需将您在 netty 端点收到的字节路由到 Vysper/MINA。

我想

你可以写你自己的 impl 来包装它。或者使用支持的字节数组并将其包装。

最新更新