vorrei creare una pipeline di gestori quali:Netty - Come passare informazioni tra i gestori nella stessa conduttura
public ChannelPipeline getPipeline() throws Exception
{
return Channels.pipeline(
new ObjectEncoder(),
new ObjectDecoder(),
new AuthenticationServerHandler(),
new BusinessLogicServerHandler());
}
La chiave qui è che mi piacerebbe il AuthenticationServerHandler
di essere in grado di passare le informazioni di accesso allo BusinessLogicServerHandler
.
Capisco che è possibile utilizzare uno Attachment
, tuttavia questo memorizza solo le informazioni per quel gestore, gli altri gestori della pipeline non possono accedervi. Ho anche notato che c'era qualcosa chiamato ChannelLocal
che potrebbe fare il trucco, tuttavia non riesco a trovare alcuna informazione reale su come usarlo. Tutto quello che ho visto è che le persone creano un'istanza statica su di esso, ma come recuperare e accedere alle informazioni in un altro gestore? Supponendo che sia il metodo corretto.
La mia domanda è: come si passano le informazioni tra gestori nella stessa pipeline. Nell'esempio sopra, come faccio a passare le credenziali di accesso dallo AuthenticationServerHandler
allo BusinessLogicServerHandler
?
Questo è quello che ho capito (più o meno nel concetto), ma non ho trovato alcun esempio su come esattamente esattamente come farlo. Sono ancora un po 'confuso sui dettagli ... –
Non lo usiamo più nei protocolli Apache James ma penso che tu possa ottenere l'idea dal vecchio codice: 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/protocolli/tag/protocolli-1.5/impl/src/main/java/org/apache/james/protocolli/impl/AbstractChannelUpstreamHandler.java? view = markup –
Ecco un esempio per ChannelLocal. http://stackoverflow.com/questions/8449663/usage-of-nettys-channellocal – Veebs