Newsgroup: it.comp.java
Titolo: java mail: connection refused

Ciao a tutti.
Ho un problema con javamail1.2
La mia applicazione controlla un numero indefinito ( < = 50) di accounts
sullo stesso server, con uno sleeptime di 1 secondo tra un account e
l'altro.
Dopo un numero casuale di cicli ( > 50), succede un NullPointerException
chiamando store.connect(host, username,password).
Di li' in poi tutti i tentativi di connessione generano un
MessagingException ("Connection refused").
L'unica cosa che posso fare e' chiudere l'applicazione, aspettare 10-15
minuti prima di riavviare il tutto.
L'applicazione non lascia ne connessione ne' folder aperti. Inoltre il
loop esterno non crea un thread per account, quindi non ci sono
connessioni simultenee. Inoltre solo io ho accesso a questo mail server.
Qualcuno ha avuto (e risolto) lo stesso problema?
Per maggior chiarezza vi posto il pezzo di codice interessato.
Questo metodo viene chiamato in un loop infinito, in cui vengono
avvalorati m_user, m_phost e m_password.
m_cat e' di tipo org.apache.log4j.Category
Grazie a chiunque si vorra' cimentare.
Marcello
private static final String MAILBOX = "INBOX";
private static org.apache.log4j.Category m_cat ;
public void run() {
        int messageCount;
        int newMessageCount;
 
m_cat.info
( "Checking email for " + m_user +" on "+ m_host);
        Folder folder = null;
        Store store = null;
        try {
                Properties props = System.getProperties();
                //Get a session object
                Session session = Session.getDefaultInstance(props,
null);
 
m_cat.info
("got the session");
                session.setDebug(MAIL_DEBUG);
                //Get a store object
                store = session.getStore("imap");
                if(store == null) {
                    throw new Exception("Invalid STORE!");
                }
 
m_cat.info
("got the Store");
                //Connect
 
m_cat.info
( "Connecting to " +
m_user+":"+m_password+"@"+m_host + " ... ");
                // ************* QUI SUCCEDE IL GUAIO
                store.connect(m_host,  m_user, m_password);
                // ******************
 
m_cat.info
( "Connection to " +
m_user+":"+m_password+"@"+m_host + " obtained!");
                //Open a folder
                folder = store.getFolder(MAILBOX);
 
m_cat.info
("got the folder "+ MAILBOX);
                if (folder == null || !folder.exists())
                    throw new Exception("Invalid folder!");
                folder.open(Folder.READ_WRITE);
 
m_cat.info
("Folder "+ MAILBOX+ " opened");
                newMessageCount  = folder.getNewMessageCount();
 
m_cat.info
("got "+newMessageCount+" new messages");
                messageCount = folder.getMessageCount();
                for(int ii=newMessageCount; ii>0 ; ii--){
                    Message message = folder.getMessage(messageCount -
ii);
 
m_cat.info
(message.getFrom()[0].toString());
 
m_cat.info
(message.getSubject());
                    // this will store the message into the messages
table
                    storeMessage(message);
                }
        }
        catch (NullPointerException npExc){
              m_cat.error(  m_user + "@" + m_host + " :
NullPointerException");
        }
        catch (ConnectException connExc){
              m_cat.error(  m_user + "@" + m_host + " : "+
connExc.getLocalizedMessage());
        }
        catch (Exception exc) {
            m_cat.error( "Exception on " + m_user + "@" + m_host + " : "
+ exc.getClass().getName());
            exc.printStackTrace();
        }
        finally{
 
m_cat.info
("Enter finally block");
            try {
                if((folder != null) && folder.exists()) {
                    folder.close(false);
 
m_cat.info
("Folder "+ MAILBOX+ " closed");
                }
                if(store != null ){
                    store.close();
 
m_cat.info
("Store closed");
                }
            }
            catch (Exception ex) {
                m_cat.error("another exception occurred:
"+ex.getLocalizedMessage());
                ex.printStackTrace();
            }
        }
 
m_cat.info
("Exiting");
        return;
    }

 chiamando store.connect(host, username,password).
Non e' che il server non fa' in tempo a ripulire la sua memoria,
e ad un certo punto ti risponde "picche" sul serio? Se aumenti lo
sleep time a 30 secondi/1 minuto come funziona la cosa ?
Davide

dbia...@square.nl
 wrote:

Spero che non sia questo, altrimenti non potro' mai dormire tranquillo....
:-)
comunque, ci provo e ti faccio sapere....
grazie
Marcello

dbia...@square.nl
 wrote:

azz...
con lo sleeptime di 10 secondi sembra non avere piu' il problema:
sta andando bene da un'oretta.
Credo che succeda una cosa simile al tuo suggerimento, come sospettavo.
Il problema, quindi, e' grave!
Se, per caso, nella mondo reale l'applicazione si ritrova a controllare
troppi accounts sullo setesso server potrebbe andare in crash.
Grazie per l'aiuto
Marcello

 Il problema, quindi, e' grave!
Ok, pero' adesso sai che il problema sta' sul server e non sul client,
ora devi capire perche' il server ti risponde picche, ci sono dei
parametri che puoi modificare ? (buffer, cache, memoria, priorita')...
Davide