java - JavaMail - Cannot folder.open() -


as title says, when attempting folder.open() fails, doesn't throw error though proving hard find reason. in debug console following error appear may/may not related (this shows after pressing resume after folder.open() breakpoint).

i using javamail api android development. working fine imap servers need able connect pop3 mail servers also. store being connected gmail , neccessary settings have been changed on gmail account.

04-12 13:22:26.682: info/dalvikvm(436): ljava/lang/illegalstateexception;: folder not open 04-12 13:22:26.682: info/dalvikvm(436):     @ com.sun.mail.pop3.pop3folder.checkopen(pop3folder.java:512) 04-12 13:22:26.682: info/dalvikvm(436):     @ com.sun.mail.pop3.pop3folder.close(pop3folder.java:227) 04-12 13:22:26.682: info/dalvikvm(436):     @ com.sun.mail.pop3.pop3folder.finalize(pop3folder.java:506) 04-12 13:22:26.682: info/dalvikvm(436):     @ dalvik.system.nativestart.run(native method) 

the connection method pop3 follows:

string ssl_factory = "javax.net.ssl.sslsocketfactory";          properties pop3props = new properties();          pop3props.setproperty("mail.pop3.socketfactory.class", ssl_factory);         pop3props.setproperty("mail.pop3.socketfactory.fallback", "false");         pop3props.setproperty("mail.pop3.port",  "995");         pop3props.setproperty("mail.pop3.socketfactory.port", "995");          urlname url = new urlname("pop3", "pop.gmail.com", 995, "",                 "******@googlemail.com", "*****");          //session = session.getinstance(pop3props, null);         session session = session.getinstance(pop3props, new javax.mail.authenticator()          {                protected passwordauthentication getpasswordauthentication()              {                 return new passwordauthentication("***********", "*****");             }         });          session.setdebug(true);          store = new pop3sslstore(session, url);         store.connect(); 

the method connecting store follow (where problems being encountered):

folders = store.getfolder("inbox");         //folder folder = store.getfolder("inbox");         if (folders.isopen())          {             if ((folders.getmode() & folder.read_write) != 0)              {                 folders.close(false);                 folders.open(folder.read_only);             }         }          else          {             try             {                 folders.open(folder.read_only);             }             catch (exception e)             {                 log.i("folder opening,", e.tostring());             }         } 

any ideas helpful! session has been debugged , no problems apparent. if more information needed assist not hesitate ask! i'm sure i'm not person getting problem.

thanks! rhys

so, came across issue well.

i took @ implementation of pop3folder exception being triggered.

it seems pop3folder overriding finalize() in order perform cleanup before object goes out of existence. finalize() override calls close() checks if folder open, , if isn't, illegalstateexception see thrown.

this why may seeing sporadically; happens when gc comes along take @ object, , @ point, folder may have been closed already, time finalize() calls close(), check see if folder open throw exception.

now, can't speak whether smart or dumb. seem code better if close() ignore fact folder closed , move along, instead of throwing exception.

pop3folder takes parameterized constructor. unfortunately, isn't public or protected, can't derive , override close() method, removing check whether folder open.

but, since exception call stack originates finalize(), should make less of danger leave alone, since exception thrown finalize() typically halt finalization process (garbage collection) object, without causing more damage.

would love see proper solution this, though.


Comments

Popular posts from this blog

php - What is the difference between $_SERVER['PATH_INFO'] and $_SERVER['ORIG_PATH_INFO']? -

fortran - Function return type mismatch -

queue - mq_receive: message too long -