У меня есть исключение java. net .SocketTimeoutException при записи событий в Google Calendar - PullRequest
0 голосов
/ 19 июня 2020

У меня есть программа Java, которая в течение нескольких дней при записи событий в Google Calendar после одного или двух записанных ветров переходит в «java. net .SocketTimeoutException: время чтения истекло»

Программа сама без проблем считывает события.

Записано на Java 1.8

Используемая версия календаря API: v3-rev411-1.25.0

Все последовательно и в одном потоке. Каждой операции предшествует ожидание.

большое спасибо

        Dipendente dip = getDipendente(assenza.getMatr());
        
        String[] datgius = assenza.getDatgiu().split("/");
        
        int anno = Integer.parseInt(datgius[0]);
        int mese = Integer.parseInt(datgius[1]);
        int giorno = Integer.parseInt(datgius[2]);
        
        String[] dalles = assenza.getDalle().split(":");
        int dalleOra = Integer.parseInt(dalles[0]);
        int dalleMinuti = Integer.parseInt(dalles[1]);
        
        String[] alles = assenza.getAlle().split(":");
        int alleOra = Integer.parseInt(alles[0]);
        int alleMinuti = Integer.parseInt(alles[1]);
        
        Event evento = new Event();
        
        GregorianCalendar calendario = new 
        GregorianCalendar(TimeZone.getTimeZone("Europe/Rome"));
        
        calendario.set(anno, mese - 1, giorno, dalleOra, dalleMinuti);
        Date startDate = calendario.getTime();
        
        calendario.set(anno, mese - 1, giorno, alleOra, alleMinuti);
        Date endDate = calendario.getTime();
        
        evento.setStart(new EventDateTime().setDateTime(new DateTime(startDate)));
        evento.setEnd(new EventDateTime().setDateTime(new DateTime(endDate)));
        
        String tipoAssenza = assenza.getDescr();
       
        String summary = String.format("%s %s [%s] %s", dip.getNome().substring(0,1)+".", dip.getCognme(), dip.getMatr(), tipoAssenza);
        String location = String.format("%s / %s", dip.getSede(), dip.getReparto());
        String descripion = assenza.getEmail();

Thread.sleep(1000);
        
        try {
            evento = service.events().insert(idCalendario, evento).setSendUpdates("none").execute();
        } catch(java.net.SocketTimeoutException e1) {
            logger.warn("Errore java.net.SocketTimeoutException rilevato, riprovo (1 volta) ");
            Thread.sleep(1000);
            try {
                evento = service.events().insert(idCalendario, evento).setSendUpdates("none").execute();
            } catch(java.net.SocketTimeoutException e2) {
                logger.warn("Errore java.net.SocketTimeoutException rilevato, riprovo (2 volta) ");
                Thread.sleep(5000);
                try {
                    evento = service.events().insert(idCalendario, evento).setSendUpdates("none").execute();
                } catch(java.net.SocketTimeoutException e3) {
                    try {
                        logger.warn("Errore java.net.SocketTimeoutException rilevato, riprovo (3 volta)");
                        Thread.sleep(10000);
                        evento = service.events().insert(idCalendario, evento).setSendUpdates("none").execute();
                    } catch(java.net.SocketTimeoutException e4) {
                        logger.warn("Errore java.net.SocketTimeoutException rilevato, riprovo (4 volta!)");
                        Thread.sleep(20000);
                        evento = service.events().insert(idCalendario, evento).setSendUpdates("none").execute();
                        
                    }
                }               
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...