У меня есть программа 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();
}
}
}
}