2013-04-05 13 views
5

Parsuję spore ilości kanałów RSS w kaskadzie, używając Java ROME jako mojego parsera XML. Czasami jeden z kanałów RSS może być nieosiągalny z powodu problemów z siecią, co powoduje przekroczenie limitu czasu Gniazda podczas próby utworzenia obiektu XMLReader (nowy XMLReader (adres URL)).Jak zmienić limit czasu gniazda analizatora Java ROME?

Problem polega na tym, że domyślny limit czasu trwa około 2 dekady, a kiedy to się dzieje, spowalnia cały proces.

Czy istnieje sposób zmiany domyślnego limitu czasu gniazda w Java ROME?

Odpowiedz

6

Po utworzeniu XMLReader object (new XMLReader(url)), masz już obiekt URLConnection, który jest przekazywany jako argument dla XMLReader. Zadzwoń, setConnectTimeout(long) połączenia URLConnection i ustaw swoją wartość limitu czasu. Nie sądzę, aby w Rzymie dostępne były opcje limitu czasu połączenia:

+0

Dziękuję. Obiekt przekazany jako argument do konstruktora XMLReader jest w rzeczywistości obiektem java.net.URL, który nie udostępnia żadnej metody setConnectTimeout. Właściwie, mógłbym zawinąć obiekt java.net.URL do obiektu URLConnection i przekazać go do konstruktora XMLReader, ale potem poproszono mnie o zaimplementowanie metody connect() dla obiektu URLConnection i nie mam pojęcia, jaki jest kapelusz do wstawienia w nim .. – Francesco

+1

'XmlReader' może być zbudowany zarówno z URL jak i URLConnection. sprawdź http://www.jarvana.com/jarvana/view/rome/rome/0.9/rome-0.9-javadoc.jar !/com/sun/syndication/io/XmlReader.html – rajesh

+4

Dziękuję bardzo. Rozwiązany. \t \t \t \t \t \t \t 'URLConnection URLConnection = nowy adres URL (rssSource) .openConnection();' \t 'urlConnection.setConnectTimeout (4000);' 'czytnik = nowy XmlReader (URLConnection)' 'paszy = nowy SyndFeedInput() .build (czytnik); ' – Francesco