Avatar billede joki Mester
21. juli 2005 - 15:28 Der er 9 kommentarer og
1 løsning

periodisk fejl ved brug af odbc

Hej

Jeg får denne fejl periodisk. Jeg kan ikke finde noget system i hvornår, men samme side og database fungere fint lokalt på en xp, men nu skulle det så ligges på serveren (2003, med tomcat) og så kommer denne fejl.
Den er samme version af java og tomcat begge steder.


javax.servlet.ServletException: [FileMaker][ODBC FileMaker Pro driver][FileMaker Pro]Receive failure
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.fmkortfejl_jsp._jspService(fmkortfejl_jsp.java:151)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Avatar billede arne_v Ekspert
21. juli 2005 - 16:06 #1
du har sikkert hørt det før: JDBC ODBC bridge sucks big time

den er bl.a. ikke thread safe

og det kan jo naturligvis give periodiske fejl på en busy server

hvis det er det som er skyld i problemet kan du prøve at ændre koden
så den er synchronized så der kun er en af gangen som bruger
den database
Avatar billede arne_v Ekspert
21. juli 2005 - 16:06 #2
hvis du bruger connection pool kunne du bare sætte max connections til 1
Avatar billede joki Mester
21. juli 2005 - 18:39 #3
ja er desværre ved at finde ud af det med JDBC ODBC brige.
Det ser ikke ud som om at man kan sætte connections til 1 noget sted.
Hvordan ændre jeg koden til synchronized ?
Min kode til at forbinde til databasen ligger på samme den anden kode og ikke i en klasse for sig selv
Avatar billede arne_v Ekspert
21. juli 2005 - 18:54 #4
[du burde måske strukturere din DB adgang lidt ...]

du skal lave objekt at synkronisere på

public class BareEnKlasse {
    public static String bareetobjekt = "ABC";
}

eller lignende - og

synchronized(BareEnKlasse.bareetobejkt) {
  // db kode
}
Avatar billede arne_v Ekspert
21. juli 2005 - 18:55 #5
du kan kun sætte max hvis du bruger Tomcat's connection pool og henter en DataSource
via JNDI
Avatar billede joki Mester
21. juli 2005 - 19:50 #6
takker prøver at kigge lidt på det. Har i mellemtiden fundet dokumentation på hvordan den direkte driver mellem filemaker og java burde fungere, så checker også lige dette.
får dog en fejlem " found  : boolean required: java.sql.ResultSet" når jeg forsøger at danne recordset.
Siger det dig noget ?
Avatar billede arne_v Ekspert
21. juli 2005 - 20:00 #7
lyder som om du kalder execute fremfor executeQuery
Avatar billede joki Mester
21. juli 2005 - 20:32 #8
Du er jo et geni :-)  smid et svar. Der er godt nok stor forskel på performance i forhold til via odbc
Avatar billede arne_v Ekspert
21. juli 2005 - 20:33 #9
:-)
Avatar billede arne_v Ekspert
21. juli 2005 - 20:35 #10
JDBC ODBC bridge er noget man bruge til demo på hello world niveauet

til seriøs brug skal man have en ægte JDBC driver (helst type 4)

og hvis ikke man kan få en JDBC driver så græder man
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