# java.net.SocketTimeoutException: Read timed out



## DayXtry (5. Jan 2007)

Hi,
ich hab Probleme mit meiner Applikation.
Meine Applikation soll eigentlich nur die Einträge aus einer DB auslesen,...manchmal gehts ohne Probleme, aber dann kommt immer mal wieder folgender Fehler:


```
com.ebay.sdk.SdkSoapException: java.net.SocketTimeoutException: Read timed out
        at com.ebay.sdk.SdkSoapException.fromAxisFault(SdkSoapException.java:64)
        at com.ebay.sdk.ApiCall.executeByApiName(ApiCall.java:484)
        at com.ebay.sdk.ApiCall.execute(ApiCall.java:337)
        at com.ebay.sdk.call.GetItemCall.getItem(GetItemCall.java:154)
        at at.ecca.ebay.util.ApplicationViewItem.getCurrentAuctionPrice(ApplicationViewItem.java:56)
        at org.apache.jsp.overview_jsp._jspService(overview_jsp.java:316)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
        at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
        at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
        at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:822)
        at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:398)
        at org.apache.jsp.index_jsp._jspService(index_jsp.java:269)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)
```

Nach dem er den Fehler ausgespuckt hat, versucht er so lange die Daten von MySQL/eBay zu bekommen, bis ich meinen Tomcat beende.


Allerdings könnte das Problem auch noch wo anders liegen,...da ich eine Verbindung zum eBay Server aufbaue, und dort Informaionen auslese, könnte es ja auch sein, dass der Fehler von eBay kommt. Bin mir da nicht ganz sicher.

Zu sehen in der Fehlermeldung ist das auch in folgenden Zeilen:

```
at com.ebay.sdk.call.GetItemCall.getItem(GetItemCall.java:154)
        at at.ecca.ebay.util.ApplicationViewItem.getCurrentAuctionPrice(ApplicationViewItem.java:56)
```
GetItemCall ist eine Funktion die von der eBay API zur Verfügung gestellt wird, um ein Produkt abzurufen. getCurrentAuctionPrice ist eine Funktion von mir, welche sich von eBay den momentanen Auktionspreis hohlt.

Des weiteren hätte ich dann noch eine Frage. Ich verwende im Moment noch kein Connection Pooling...würdet ihr mir Connection Pooling empfehlen? Was für Vorteile hätte ich dann? Stimmt es, dass mit Connection Pooling nur eine Verbindung zu MySQL aufgebaut wird, welche dann von allen Benutzern genutzt werden kann, und somit nicht 1000de von Verbindungen aufgebaut werden?

Ich weiß, sind viele Fragen ...würde mich trotzdem über ein paar Antworten sehr freuen,...vorallem bezüglich des Fehlers.

Mit freundlichen Grüßen
DayXtry


----------



## L-ectron-X (5. Jan 2007)

API-Doc hat gesagt.:
			
		

> public class SocketTimeoutException
> extends InterruptedIOException
> 
> *Signals that a timeout has occurred on a socket read or accept.*


Also entweder dauerts zu lange etwas vom Socket zu lesen, oder es dauert zu lange, sich mit dem Socket zu verbinden.


----------



## DayXtry (5. Jan 2007)

ok, vielen dank.

Gibt es eine Möglichkeit, den Timeout hochzusetzen?


----------



## DayXtry (8. Jan 2007)

guten morgen,
wollte nochmal nachfragen, ob jemand ne Möglichkeit kennt, den Timeout hochzusetzen?

Gruß
DayXtry


----------



## L-ectron-X (8. Jan 2007)

Für Socket:
http://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html#setSoTimeout(int)

Für ServerSocket:
http://java.sun.com/j2se/1.5.0/docs/api/java/net/ServerSocket.html#setSoTimeout(int)

Mit der getSoTimeout()-Methode erhältst du das aktuelle Timeout...


----------



## DayXtry (8. Jan 2007)

vielen vielen Dank für die Links.

Gruß DayXtry


----------

