Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Allgemeine Java-Programmierung > Mails empfangen / versenden "Access to default session denied"
Antwort
 
Themen-Optionen
Alt 14.12.2005, 15:11   Nach oben    #1
Robinson
Benutzer
 
Registriert seit: 13.08.2005
Beiträge: 67
Standard Mails empfangen / versenden "Access to default session denied"

Hi.

Ich schreibe an meinem Programm das Mails empfangen und versenden soll.
Hierzu habe ich ein eigenständiges Tool geschrieben das im Hintergrundläuft.

2 Threads, einen zum Abholen der Mails und einen zum Senden der Mails.
Beide starte ich in einer Main Routine.

Wenn ich beide Threads starten lasse kommt es zu dieser Fehlermeldung:

Code:
Exception in thread "Thread-4" java.lang.SecurityException: Access to default session denied
Starte ich nur einen der beiden Threads dann gibt es keine Probleme.

Jetzt habe ich mir schon gedacht es könne an dem gleichzeitigen Zugriff liegen und habe deshalb ein Semaphor eingefügt. Aber das scheint nicht zu klappen denn wie mir das System out zeigt greifen die ineinander ein.

Thread 1:

PHP-Code:

import java
.io.IOException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.concurrent.Semaphore;

import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;

import DbConnection;
import MainFrame;

public class 
MailReaderThread extends Thread {

    private 
Properties props = new Properties();

    private 
String host "";
    private 
String username "";
    private 
String password "";

    private 
String provider "pop3";
    
    private 
int sleepInterval 600000;
    private 
MainFrame mainFrame null;
    
    private 
Semaphore semaphore null;
    
    public 
MailReaderThread(MainFrame mainFrameSemaphore semaphore) {
        
this.mainFrame mainFrame;
        
this.semaphore=semaphore;
    }
    
    private 
void workMessage(Message message) {
        
Object content;
        try {
            
content message.getContent();
            if (
content instanceof String) {
                
java.sql.Statement stmt;
                try {
                    
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
                    
StringBuffer buffer = new StringBuffer("EXECUTE dbo.addMessage '");
                    
buffer.append(content);
                    
buffer.append("','");
                    
buffer.append(df.format(new Date()));
                    
buffer.append("'");
                    
stmt DbConnection.get().createStatement();
                    
stmt.execute(buffer.toString());
                } catch (
SQLException e) {
                    
e.printStackTrace();
                }
            }
        } catch (
IOException e) {
            
e.printStackTrace();
        } catch (
MessagingException e) {
            
e.printStackTrace();
        }
    }
    
    public 
void run() {
        while (!
interrupted()) {
            try {
                
                if (
semaphore!=nullsemaphore.acquire();
                
System.out.println("Mailreader in");
                
                try {
                    
mainFrame.setMailReaderState(2);
                    
// Update Mail Settings
//                    host="pop.kundenserver.de";//DbConnection.readProperty("syncronize_host");
                    
host=DbConnection.readProperty("syncronize_host");
                    
username=DbConnection.readProperty("syncronize_user");
                    
password=DbConnection.readProperty("syncronize_password");
                    
                    
// Connect to the POP3 server
                    
Session session Session.getDefaultInstance(propsnull);
                    
Store store session.getStore(provider);
                    
store.connect(hostusernamepassword);

                    
// Open the folder
                    
Folder inbox store.getFolder("INBOX");
                    if (
inbox == null) {
                        
System.exit(1);
                    }
                    
inbox.open(Folder.READ_WRITE);

                    
// Get the messages from the server
                    
Message[] messages inbox.getMessages();
                    for (
int i 0messages.lengthi++) {
                        
workMessage(messages[i]);
                        
messages[i].setFlagFlags.Flag.DELETEDtrue );
                    }

                    
// Close the connection
                    
inbox.close(true);
                    
store.close();

                } catch (
NoSuchProviderException e1) {
                    
e1.printStackTrace();
                } catch (
MessagingException e) {
                    
e.printStackTrace();
                }
                
                
                
                try {
                    
sleepInterval Integer.valueOf(DbConnection.readProperty("mailreader_sleep")).intValue();
                } catch (
Exception e) {
                }
                
                if (
semaphore!=nullsemaphore.release();
                
System.out.println("Mailreader out");
                
                
mainFrame.setMailReaderState(1);
                
Thread.sleep(sleepInterval);
            } catch (
InterruptedException e) {
                
mainFrame.setMessageWorkerState(0);
                
e.printStackTrace();
            }
        }
    }



Thread 2:

PHP-Code:

import java
.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.Vector;
import java.util.concurrent.Semaphore;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import DbConnection;
import MainFrame;
import SMTPAuth;

public class 
MailWriterThread extends Thread {

    private 
int sleepInterval 600000;
    private 
MainFrame mainFrame null;
    
    private 
Semaphore semaphore null;
    
    public 
MailWriterThread(MainFrame mainFrameSemaphore semaphore) {
        
this.mainFrame mainFrame;
        
this.semaphore=semaphore;
    }

    @
SuppressWarnings("unchecked")
    public 
void run() {
        while (!
interrupted()) {
            try {
                
mainFrame.setMailWriterState(2);

                if (
semaphore!=nullsemaphore.acquire();
                
System.out.println("Mailwriter in");
                try {
                    
                    
Properties props = new Properties();
                    
props.put("mail.smtp.host""auth.smtp.kundenserver.de");
//                    props.put("mail.smtp.host", DbConnection.readProperty("syncronize_host_smtp"));
                    
props.put("mail.smtp.auth""true");
                    
                    
Session session Session.getDefaultInstance(props,SMTPAuth.get());
                    
session.setDebug(false);
                    
                    
Message msg = new MimeMessage(session);
                    
                    
msg.setFrom(new InternetAddress(DbConnection.readProperty("syncronize_mail")));
            
                    
ResultSet rs DbConnection.get().createStatement().executeQuery("SELECT * FROM dbo.getRecipients('')");
                    
Vector<Stringbuffer = new Vector();
                    while(
rs.next()) buffer.add(rs.getString("mail"));
                    
                    
InternetAddress[] addressTo = new InternetAddress[buffer.size()];
                    for (
int i 0buffer.size(); i+=1)
                    {
                        
System.out.println(buffer.get(i));
                        
addressTo[i] = new InternetAddress(buffer.get(i));
                    }
                    
msg.setRecipients(Message.RecipientType.TOaddressTo);
                    
                    
msg.setSubject("1234");
                    
msg.setContent("1234""text/plain");
                    
Transport.send(msg);
                    
                    
                } catch (
MessagingException e) {
                    
e.printStackTrace();
                }
                
                if (
semaphore!=nullsemaphore.release();
                
System.out.println("Mailwriter out");
                
                try {
                    
sleepInterval Integer.valueOf(DbConnection.readProperty("mailwriter_sleep")).intValue();
                } catch (
Exception e) {
                }
                
                
mainFrame.setMailWriterState(1);
                
Thread.sleep(sleepInterval);
            } catch (
InterruptedException e) {
                
mainFrame.setMailWriterState(0);
                
e.printStackTrace();
            } catch (
SQLException e) {
                
e.printStackTrace();
            }
        }
    }

Meine Main:

PHP-Code:
Semaphore mailSemaphore = new Semaphore(1,true);
        
        
// Threads starten
        
MailReaderThread mailReaderThread = new MailReaderThread(this,mailSemaphore);
        
mailReaderThread.start();
        
MailWriterThread mailWriterThread = new MailWriterThread(this,mailSemaphore);
        
mailWriterThread.start(); 

Und die Console:

PHP-Code:
Mailreader in
Exception in thread 
"Thread-4" java.lang.SecurityExceptionAccess to default session denied
    at javax
.mail.Session.getDefaultInstance(Session.java:292)
    
at MailWriterThread.run(MailWriterThread.java:47)
Mailwriter in
Mailreader out 
Ich komme irgendwie nicht auf den Fehler!
Robinson ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Welches Join soll ich verwenden? Chr!s Datenbanken 8 06.07.2006 12:33
Query verbessern? björn Datenbanken 4 05.06.2006 13:48


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:35 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44