me gustaría crear una fuente de los manipuladores como:Netty - Cómo pasar información entre los controladores de la misma tubería
public ChannelPipeline getPipeline() throws Exception
{
return Channels.pipeline(
new ObjectEncoder(),
new ObjectDecoder(),
new AuthenticationServerHandler(),
new BusinessLogicServerHandler());
}
La clave aquí es que me gustaría que el AuthenticationServerHandler
a ser capaz de pasar la información de inicio de sesión al BusinessLogicServerHandler
.
Entiendo que puede utilizar un Attachment
, sin embargo, que solo almacena la información para ese manejador, los otros controladores en la tubería no pueden acceder a él. También noté que había algo llamado ChannelLocal
que podría hacer el truco, sin embargo, no puedo encontrar ninguna información real sobre cómo usarlo. Todo lo que he visto es que las personas crean una instancia estática, ¿pero cómo recuperas y accedes a la información en otro controlador? Suponiendo que ese es el método correcto.
Mi pregunta es: cómo se pasa la información entre los controladores en la misma línea. En el ejemplo anterior, ¿cómo paso las credenciales de inicio de sesión del AuthenticationServerHandler
al BusinessLogicServerHandler
?
Eso es lo que entendí (más o menos en concepto), pero no he encontrado ejemplos en ningún lugar sobre cómo hacerlo exactamente. Todavía estoy un poco confuso con los detalles ... –
Ya no lo usaremos en Apache James Protocols, pero creo que se puede obtener la idea del código anterior: http://svn.apache.org/viewvc /james/protocols/tags/protocols-1.5/impl/src/main/java/org/apache/james/protocols/impl/ChannelAttributeSupport.java?view=markup http://svn.apache.org/viewvc/ james/protocols/tags/protocols-1.5/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelUpstreamHandler.java? view = markup –
Aquí hay un ejemplo de ChannelLocal. http://stackoverflow.com/questions/8449663/usage-of-nettys-channellocal – Veebs