1

Store オブジェクトの Java メールでの ConnectionListener 実装の問題に直面しています。インターネット接続を切断すると、disconnect メソッドと close メソッドが呼び出されません。私のコードスニペットは次のとおりです。

this.store.addConnectionListener(new ConnectionListenerImplmentedClass);  
this.store.connect(HOST, USER_NAME, PASSWORD);  

    public void opened(ConnectionEvent e) {
    LOGGER.info("Connection opened...");
}

public void disconnect(ConnectionEvent e) {
    LOGGER.info("Connection opened...");
}

public void close(ConnectionEvent e) {
    LOGGER.info("Connection opened...");
}

私が間違っているところを教えてください...

4

2 に答える 2

2

インターネット接続を「切断」した場合にいつ通知されるかは、オペレーティング システムによって異なります。通常、接続を使用する何かを実際に行っている場合にのみ通知されます。プログラムがただ座ってイベントを待っているだけの場合、通知が届かないことがあります。

于 2013-03-25T21:30:54.253 に答える
1

Bill Shannon の発言を続けると、接続がまだ有効かどうかを定期的に確認する必要があるようです。Javadoc では、メッセージ ストアへの接続がまだ有効であることを確認するために Service.isConnected() メソッドをオーバーライドすることを提案しています。

http://docs.oracle.com/javaee/6/api/javax/mail/Service.html#isConnected()

つながっている

public boolean isConnected() このサービスは現在接続されていますか? この実装では、プライベート ブール フィールドを使用して接続状態を格納します。このメソッドは、そのフィールドの値を返します。

サブクラスは、このメソッドをオーバーライドして、メッセージ ストアへの接続がまだ有効であることを確認することができます。

戻り値: サービスが接続されている場合は true、接続されていない場合は false

于 2013-03-26T20:35:31.800 に答える