2016-05-04 7 views
0

Mein aktuelles Projekt beinhaltet die Verwendung einer JavaMail zur Bestätigung einer Benutzer-E-Mail. Das Problem, das ich habe ist, dass, Eclipse, jedes Mal, wenn ich baue & meine Web-Anwendung auf dem lokalen Server bereitstellen Glassfish die Java Mail mit folgenden Ausnahme abstürzt:JavaMail stürzt nach Build/deploy auf Glassfish ab 4

Severe: java.lang.SecurityException: Access to default session denied 
at javax.mail.Session.getDefaultInstance(Session.java:333) 
at utils.MailService.sendEmailSSL(MailService.java:58) 

Und hier den Code snipped, wo ich bin die Sitzung zu erhalten und welche die oben genannte Ausnahme werfen:

Session session = Session.getDefaultInstance(
        props, 
        new javax.mail.Authenticator(){ 
         protected PasswordAuthentication getPasswordAuthentication() { 
         return new PasswordAuthentication(usr, pwd); 
        } 
       }); 

die Abhilfe, die ich bisher gefunden habe ist Glassfish Neustart und nach, dass Java Mail-Funktionen wieder richtig. Das Problem ist, dass es sehr nervig und zeitraubend ist, einen Neustart selbst nach der kleinsten Änderung meines Codes durchzuführen.

Meine Frage: Gibt es eine Möglichkeit, nur den JavaMail-Dienst zurücksetzen und binden Sie dies mit dem Build-Ereignis?

Off natürlich auch alle anderen Vorschläge sind willkommen zu :)

Antwort

0

Wenn Sie Session.getDefaultInstance verwenden vermeiden. Verwenden Sie Session.getInstance und beheben Sie einige der common mistakes.

+0

Das wird wahrscheinlich das Problem beheben. Wenn Sie auf einem Anwendungsserver ausgeführt werden, sollten Sie darüber hinaus die JavaMail-Sitzung als eine verwaltete Ressource deklarieren, die auf dem Anwendungsserver konfiguriert und in die Anwendung injiziert wird. –

+0

@jmehrens, danke! Diese Information half. Offensichtlich war ich an diesem Punkt einer dieser Copy-Paste-Programmierer;] – Svetoslav

+0

@BillShannon, danke für deinen Vorschlag. Es macht definitiv Sinn. Gibt es in diesem Fall etwas Besonderes? Vielleicht hast du einen Link, über den ich mehr darüber lesen kann. – Svetoslav