is not a @Sharable handler解決方法

昨天在寫編碼器的時候,因為是和spring整合,因此在使用編碼的時候用Autowired自動注入

@Autowired
private ProtocolDecoder protocolDecoder ;

@Autowired
private ProtocolEncoder protocolEncoder;

結果在多個客戶端連接(其實不是多客戶端的問題)的時候?qū)е乱恢痹趫箦e,如下

io.netty.channel.ChannelPipelineException: com.sim.server.game.net.coder.decoder.ProtocolDecoder is not a @Sharable handler, so can't be added or removed multiple times.

于是我就自作聰明的將ProtocolDecoder上加了個@Sharable注解,結果在啟動的時候就報錯了。

Caused by: java.lang.IllegalStateException: ChannelHandler com.sim.server.game.net.coder.decoder.ProtocolDecoder is not allowed to be shared

最后的解決方法是,不要使用單例了,每次添加handler的時候直接new

        pipeline.addLast("decoder",new ProtocolDecoder() );
        pipeline.addLast("encoder",new ProtocolEncoder()) ;

當然如果是在ChannelInitializer的子類報錯說is not a @Sharable handler,一般情況加上@Sharable注解即可。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,261評論 6 342
  • spring官方文檔:http://docs.spring.io/spring/docs/current/spri...
    牛馬風情閱讀 1,852評論 0 3
  • 又是一道選擇題 人生總會遇到很多次選擇,看似不經(jīng)意的一次選擇,很可能關系到命運 而這次,是一個看似就很關系到以后的...
    Joker_宇閱讀 231評論 0 0
  • 很久以前,看過一篇文章。大致是說,“我”的閨蜜一直傾心一個男人,瘋狂愛戀,受盡心酸。狗血的是,最后,最后他們在一起...
    夏映暮曉閱讀 649評論 0 3

友情鏈接更多精彩內(nèi)容