У меня есть файл jar, который использует библиотеку Jsoup, и когда я запускаю ее, она открывает веб-сайт, и jar выводит простую строку с этого веб-сайта.
Чтобы получить доступ к нему с моего личного сайта, я звоню с exec()
функция php. В большинстве случаев это работает отлично, и результат хорошо отображается. Но иногда у меня ничего нет. Я запускал jar много раз из сеанса ssh и видел, что примерно в 5% случаев у меня появляется сообщение об ошибке с Exception in thread "main"
, вызванный java.net.SocketTimeoutException: Read timed out
,
Я думаю, что, возможно, сайту требуется слишком много времени, чтобы ответить, и java просто прерывает программу. Как я мог справиться с этим? Из моего php или из моей банки?
Сказав, что пока у меня нет выхода, я должен снова запустить банку. Я думал о том, чтобы сделать это в php, но я думаю, что было бы лучше управлять им прямо в банке.
Спасибо заранее за вашу помощь.
Вы должны скорее увеличить время ожидания Jsoup в банке, чем пытаться выполнить банку. Не зная код приложения Java, использующего jsoup. но должна быть запись вроде: Connection con = Jsoup.connect("the page url")
здесь создается соединение jsoup. Тайм-аут по умолчанию в соответствии с документы является 3
секунд.
Вы можете увеличить это время ожидания до 5 секунд (обратите внимание, что метод ожидает миллисекунды):
con.timeout(5000);
Или без локальной переменной:
Jsoup.connect("the page url").timeout(5000).get()
Других решений пока нет …