1

だから私はインスタンスでウェブアプリを実行しています

org.apache.mina.common.IoAcceptor

そのようにインスタンス化:

IoAcceptor acceptor = new SocketAcceptor();
SocketAcceptorConfig config = (SocketAcceptorConfig) acceptor.getDefaultConfig();
config.setReuseAddress(true);
config.getFilterChain().addLast("codec", new ProtocolCodecFilter(newFIXProtocolCodecFactory()));
acceptor.bind(new InetSocketAddress(port), clientHandler);

すべてが順調に機能します。リモートクライアントと話している間、チューリップ畑での接続を1日中受け入れます。

問題は、切断しようとするときです。

これまでのところ、私は単純な、

acceptor.unbindAll();

これはWindowsでは正常に機能しているように見えますが、Linuxで実行されているTomcatサーバーにデプロイすると、理論的には切断された後でも、ポートがリッスンしているように見えます。(netstatと、このポートへのソケットを開くことができないことの両方が確認されます)

私は次と同じ問題を抱えていると思います:http: //objectmix.com/apache/717994-unbind-not-working.html

もちろん、これは次のインスタンスです:http: //xkcd.com/979/

4

1 に答える 1

2

独自のテストスイートによると、unbind()は機能するはずです。ただし、Androidで確実に動作させるには、もう少し力を入れる必要があることがわかりました。YMMV。

acceptor.setCloseOnDeactivation(true);
for (IoSession ss : acceptor.getManagedSessions().values()) {
  ss.close(true);
}
acceptor.unbind();
acceptor.dispose();

私はほとんど何を見たかをあなたに話すことを忘れて先に進みました、しかしDenverCoder9のエコーは私を連れ戻しました。

于 2013-05-11T02:24:02.583 に答える