1

我在 Store 对象上的 java 邮件中面临 ConnectionListener 实现的问题。如果我断开互联网连接,我的断开方法和关闭方法不会被调用。我的代码片段是:

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

按照比尔香农所说的,听起来您需要执行定期检查以查看连接是否仍然存在。Javadocs 建议覆盖 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 回答