Netty / mina合作。是否可以将netty的ChannelBuffer包装到MINA的IOBuffer中?

时间:2012-08-19 18:05:56

标签: netty apache-mina apache-vysper

想法是将apache vysper集成到现有的netty应用程序中。来自客户端的ChannelBuffer是否可以作为mina'a ChannelBuffer连接到netty,因此它可以被分配到vysper?

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

2 个答案:

答案 0 :(得分:0)

我想你可以写自己的impl包装它。或者使用支持的bytearray并将其包装。

答案 1 :(得分:0)

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)您还需要用netty版本的nbxml替换它。 在dev@mina.apache.org的Vysper邮件列表中,我将能够为您提供详细的帮助。

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

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