Netty - 如何在同一管道中的处理程序之间传递信息

Ste*_*ier 6 java networking nio netty

我想创建一个处理程序管道,例如:

public ChannelPipeline getPipeline() throws Exception 
{
    return Channels.pipeline(
            new ObjectEncoder(),
            new ObjectDecoder(),
            new AuthenticationServerHandler(),
            new BusinessLogicServerHandler());
}
Run Code Online (Sandbox Code Playgroud)

这里的关键是我希望AuthenticationServerHandler能够将登录信息传递给BusinessLogicServerHandler.

我确实理解你可以使用一个Attachment,但只存储该处理程序的信息,管道中的其他处理程序无法访问它.我还注意到有些东西ChannelLocal可能会起作用,但我找不到任何关于如何使用它的真实信息.我所见过的是人们为它创建一个静态实例,但是如何检索和访问另一个处理程序中的信息?假设这是正确的方法.

我的问题是:如何在同一管道中的处理程序之间传递信息.在上面的例子中,我如何从通过登录凭据AuthenticationServerHandlerBusinessLogicServerHandler

Nor*_*rer 2

ChannelLocal是去atm的方式。只需在某处创建一个静态实例,然后通过将 Channel 传递给 set/get 方法从处理程序中访问它。这样您就可以在频道之间共享内容。