在用mina udp客戶端NioDatagramConnector的時候,如果斷線了,重連會提示埠被占用,斷線的時候用的dispose方法,但是本地埠沒有釋放,如何處理?這是不是框架的一個bug?
下面是連接:

下面是斷開后釋放連接:

下面是重連報錯:

下面調到原始碼,發現此處又重新連接這個埠,之前的dispose方法并沒有把本地埠釋放
uj5u.com熱心網友回復:
如果可能 最好換到nettyhttps://camel.apache.org/components/2.x/mina2-component.html
其中tip: Favor using Netty as Netty is a much more active maintained and popular project than Apache Mina currently is
支持使用Netty,因為Netty是一個比Apache Mina當前更活躍,更受青睞的專案
uj5u.com熱心網友回復:
查看了一下api檔案,dispose并不一定會釋放埠,可能會被阻塞http://mina.apache.org/mina-project/gen-docs/2.0.20/apidocs/org/apache/mina/transport/socket/nio/NioDatagramConnector.html
public final void dispose()
Releases any resources allocated by this service. Please note that this method might block as long as there are any sessions managed by this service.
Specified by:
dispose in interface IoService
所以,可以用getManagedSessions()把所有的IoSession關閉(呼叫closeNow()方法),然后再去dispose
getManagedSessions參考
http://mina.apache.org/mina-project/gen-docs/2.0.20/apidocs/org/apache/mina/core/service/IoService.html#getManagedSessions--
closeNow參考
http://mina.apache.org/mina-project/gen-docs/2.0.20/apidocs/org/apache/mina/core/session/IoSession.html#closeNow--
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/188042.html
標籤:Java相關
上一篇:map裝換為javabean物件
下一篇:關于list<> 賦值問題
