Avatar billede Slettet bruger
28. maj 2004 - 22:08 Der er 11 kommentarer og
1 løsning

Problemer med Apache Taglibs og Datasource

Hejsa (jeg spørger for en meget stresset og udkørt ven)

Han sidder med følgende, og laver JSP:

JSTL 1.1, MySQL 4.0.15, MySQL/J 3.0.8

Men en gang imellem kommer følgende fejl:

exception

javax.servlet.ServletException: Unable to get connection, DataSource invalid: "Unable to connect to any hosts due to exception: java.net.SocketException: errno: 48, error: Address already in use for fd: 64"
    at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)
    at org.apache.jsp.staevne_0005fdeltagerliste$jsp._jspService(staevne_0005fdeltagerliste$jsp.java:1749)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
    at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
    at java.lang.Thread.run(Thread.java:484)


root cause

javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "Unable to connect to any hosts due to exception: java.net.SocketException: errno: 48, error: Address already in use for fd: 64"
    at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:276)
    at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:159)
    at org.apache.taglibs.standard.tag.el.sql.QueryTag.doStartTag(QueryTag.java:85)
    at org.apache.jsp.staevne_0005fdeltagerliste$jsp._jspService(staevne_0005fdeltagerliste$jsp.java:1535)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
    at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
    at java.lang.Thread.run(Thread.java:484)

På forhånd tak, Anders :-)
Avatar billede Slettet bruger
28. maj 2004 - 22:09 #1
Det skulle måske lige tilføjes at det er vilkårligt hvornår fejlmeddelelsen fremkommer, men det er LANGT fra holdbart at en webapplikation fremkommer med en sådan fejl i tide og utide.
Avatar billede arne_v Ekspert
28. maj 2004 - 22:14 #2
Avatar billede Slettet bruger
28. maj 2004 - 22:19 #3
Det har han læst, og vi har for så vidt også selv fundet ud af at fejlen fremkommer i forbindelse med allokering af connections, spørgsmålet er bare hvad VI kan gøre ved det?
Avatar billede arne_v Ekspert
28. maj 2004 - 22:21 #4
Den egentlige løsning er formentlig noget tweak af TCP/IP på maskinen (som jeg
formoder er Linux).
Avatar billede arne_v Ekspert
28. maj 2004 - 22:22 #5
Men har I prøvet noget a la:

jdbc:mysql://.../...?autoReconnect=true&maxReconnects=1000

?
Avatar billede arne_v Ekspert
28. maj 2004 - 22:25 #6
Hvad står max connection til i MySQL og i connection pool ?
Avatar billede Slettet bruger
28. maj 2004 - 22:27 #7
Kan du SÅ smide et svar... jeg tror du har gjort min ven glad:

---- snippet fra MSN Messenger ---

Mikkel siger:
KYS HAM KRAM HAM FOR DET VIRKER SKU!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
Mikkel siger:
giv ham 1000 point
Mikkel siger:
nej 50000

--- Snippet slut ---

Tusind millioner tak :-)
Avatar billede arne_v Ekspert
28. maj 2004 - 22:29 #8
svar
Avatar billede Slettet bruger
28. maj 2004 - 22:29 #9
da vi ikke har hands-on til konfigurationsfiler på serveren (bliver hostet ved webhost-firma), er der så en anden mulighed (evt. fra et JSP-script) for at finde ud af max connection og connection pool ?
Avatar billede arne_v Ekspert
28. maj 2004 - 22:35 #10
SQL kommandoen:

SHOW VARIABLES

vil vise MySQL max connections.

Jeg ved ikke lige hvordan man fisker connection pool size ud af Tomcat.

Men et web hosting firma har forhåbentligt viden nok til at sætte connection pool
størrelse <= databasemax connections.

Lyder mere sandsyneligt at deres server er lidt belastet og at det hjælper
at prøve igen.
Avatar billede Slettet bruger
28. maj 2004 - 22:36 #11
ok :-) Takker....
Avatar billede arne_v Ekspert
28. maj 2004 - 22:39 #12
Man kunne selvfølgelig altid bare prøve at kalde getConnection og se hvor mange
man kan få ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester