2013-04-05 10 views
5

Ich analysiere eine Vielzahl von RSS-Feeds in Kaskade mit Java ROM als XML-Parser. Manchmal ist einer der RSS-Feeds aufgrund von Netzwerkproblemen nicht erreichbar, was zu einem Socket-Timeout beim Erstellen des XMLReader-Objekts (neuer XMLReader (url)) führt.Wie ändert man Java ROME Parser Standard-Socket-Timeout?

Das Problem ist, dass die Standard-Timeout dauert etwa 2 Jahrzehnten und wenn es passiert, verlangsamt es den gesamten Prozess.

Gibt es eine Möglichkeit, das Standard-Socket-Timeout in Java ROM zu ändern?

Antwort

6

Wenn Sie XMLReader object (new XMLReader(url)) erstellen, haben Sie bereits ein Objekt URLConnection, das als Argument für XMLReader übergeben wird. Rufen Sie setConnectTimeout(long) von URLConnection auf und legen Sie Ihren Zeitüberschreitungswert fest. Ich denke nicht, dass Rom bietet keine Verbindung Timeout-Optionen

+0

Vielen Dank. Das Objekt, das als Argument an den XMLReader-Konstruktor übergeben wird, ist eigentlich ein java.net.URL-Objekt, das keine setConnectTimeout-Methode bereitstellt. Eigentlich könnte ich das java.net.URL-Objekt in ein URLConnection-Objekt einbinden und dieses an den XMLReader-Konstruktor übergeben, aber dann werde ich gebeten, eine connect() - Methode für das URLConnection-Objekt zu implementieren, und ich habe keine Ahnung, was ich sagen soll in es .. – Francesco

+1

'XmlReader' kann mit URL und URLConnection konstruiert werden. Überprüfen Sie http://www.jarvana.com/jarvana/view/rome/rome/0.9/rome-0.9-javadoc.jar!/com/sun/syndication/io/XmlReader.html – rajesh

+4

Vielen Dank. Gelöst. \t \t \t \t \t \t \t 'URLConnection URLConnection = new URL (rssSource) .openConnection();' '\t urlConnection.setConnectTimeout (4000);' ' reader = new XmlReader (URLConnection);' ' Feed = new SyndFeedInput() .build (reader); ' – Francesco