Avatar billede mik28 Seniormester
11. juli 2005 - 11:48 Der er 46 kommentarer og
1 løsning

problem med databaseforbindelse

Hej Eksperter,

Efter jeg har rodet med at hoste flere domæner har jeg fået problemer med at oprette databaseforbindelser. Jeg er ikke helt med på hvor det er kæden hopper af. Jeg får denne fejl

java.lang.NullPointerException
    util.Databaseforbindelsemysqlprepared.select(Databaseforbindelsemysqlprepared.java:33)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:147)
    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 mik28 Seniormester
11. juli 2005 - 11:49 #1
i toppen af mit jsp dokument har jeg

<%@ page language="java" import="java.util.*,java.sql.*,util.*" %>

og det giver ingen fejl
Avatar billede arne_v Ekspert
11. juli 2005 - 11:57 #2
linie 33 i Databaseforbindelsemysqlprepared.java kalder en metode på noget som er null ...
Avatar billede mik28 Seniormester
11. juli 2005 - 11:59 #3
PreparedStatement pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
Avatar billede mik28 Seniormester
11. juli 2005 - 12:01 #4
Ligger JDBC driveren stadig rigtigt? Den ligger under WEB-INF/lib
Avatar billede mik28 Seniormester
11. juli 2005 - 12:06 #5
i Databaseforbindelsemysqlprepared.java opretter jeg forbindelsen således

public Databaseforbindelsemysqlprepared(String data, String driver)
    {
       
        try
        {
            Class.forName(driver);
            conn = DriverManager.getConnection(data, "", "");

        }
        catch(Exception s)
        {
            System.out.println("SQL dataforbindelse fejlede"+s);
        }   
    }
Avatar billede arne_v Ekspert
11. juli 2005 - 12:07 #6
lyder som om  er null
Avatar billede arne_v Ekspert
11. juli 2005 - 12:07 #7
bliver

System.out.println("SQL dataforbindelse fejlede"+s);

udskrevet ?
Avatar billede arne_v Ekspert
11. juli 2005 - 12:07 #8
WEB-INF/lib er rigtigt nok
Avatar billede mik28 Seniormester
11. juli 2005 - 12:09 #9
Det ved jeg faktisk ikke. Det kører under Linux og jeg ved ikke hvor tingene bliver udskrevet.
Avatar billede arne_v Ekspert
11. juli 2005 - 12:14 #10
der burde være en log fil et sted

kan du ikke mens du troubleshooter udskrive noget til browseren ?
Avatar billede mik28 Seniormester
11. juli 2005 - 12:15 #11
Jo men hvordan gør jeg det. Jeg kan jo ikke skrive out.println
Avatar billede arne_v Ekspert
11. juli 2005 - 12:27 #12
du kan skriv til en fil med kendt ppacering

du kan smide en runtime exception

du kan lave en ny constructor som får et argument mere over med hvor der kan
skrives

etc.etc.
Avatar billede arne_v Ekspert
11. juli 2005 - 12:28 #13
re 2)

        catch(Exception s)
        {
            System.out.println("SQL dataforbindelse fejlede"+s);
            throw new RuntimeException(s.getMessage());
        }
Avatar billede arne_v Ekspert
11. juli 2005 - 12:30 #14
re 3)

public Databaseforbindelsemysqlprepared(String data, String driver, PrintWriter pw)

og kald med response.getWriter() som 3. argument
Avatar billede mik28 Seniormester
11. juli 2005 - 12:39 #15
Det skal jeg altså lige bruge noget tid på :-)
Avatar billede mik28 Seniormester
11. juli 2005 - 13:43 #16
Hmmm. Det var rigtigt at ligge JDBC driveren her ikke?

/var/tomcat/websteder/MITSITE/ROOT/WEB-INF/lib
Avatar billede arne_v Ekspert
11. juli 2005 - 13:59 #17
ja

hvis det er virtual host MITSITE og web app ROOT
Avatar billede mik28 Seniormester
11. juli 2005 - 14:02 #18
<Host name="www.MITSITE.dk" appBase="/var/tomcat/websteder/MITSITE.dk"/>
<Host name="MITSITE.dk" appBase="/var/tomcat/websteder/MITSITE.dk"/>
Avatar billede mik28 Seniormester
11. juli 2005 - 14:12 #19
det ligger her

/var/tomcat/websteder/MITSITE/ROOT
Avatar billede mik28 Seniormester
11. juli 2005 - 14:20 #20
Jeg forstår det bare ikke. (jeg har ingen problemer med at give dig root adgang til min server hvis jeg kan lokke dig til at se på det :-) )
Avatar billede mik28 Seniormester
11. juli 2005 - 14:21 #21
altså via ssh
Avatar billede arne_v Ekspert
11. juli 2005 - 14:59 #22
appBase="/var/tomcat/websteder/MITSITE.dk"

og

/var/tomcat/websteder/MITSITE/ROOT/WEB-INF/lib

matcher vel ikke helt !?!?
Avatar billede mik28 Seniormester
11. juli 2005 - 15:08 #23
hvad skal det så være?
Avatar billede arne_v Ekspert
11. juli 2005 - 15:10 #24
appBase="/var/tomcat/websteder/MITSITE.dk"

antyder vel at det skal være

/var/tomcat/websteder/MITSITE.dk/ROOT/WEB-INF/lib
Avatar billede mik28 Seniormester
11. juli 2005 - 15:14 #25
præcis, men det virker ikke
Avatar billede mik28 Seniormester
11. juli 2005 - 15:15 #26
Det ser præcis således ud

<Host name="www.flexbreeze.dk" appBase="/var/tomcat/websteder/www.flexbreeze.dk/"/>
<Host name="flexbreeze.dk" appBase="/var/tomcat/websteder/www.flexbreeze.dk/"/>
Avatar billede mik28 Seniormester
11. juli 2005 - 15:16 #27
driveren ligger her

/var/tomcat/websteder/www.flexbreeze.dk/ROOT/WEB-INF/lib
Avatar billede arne_v Ekspert
11. juli 2005 - 15:17 #28
prøv lige og smid den her classpath.jsp på maskinen og se hvordan den ser ud:

<%@ page import="java.net.*" %>
<ul>
<%
    ClassLoader cl = this.getClass().getClassLoader();
    while(cl != null) {
        %>
        <li><%=cl.getClass().getName()%></li>
        <%
        if(cl instanceof URLClassLoader) {
            %>
            <ul>
            <%
            URL[] urls = ((URLClassLoader)cl).getURLs();
            for(int i = 0; i < urls.length; i++) {
                %>
                <li><%=urls[i]%></li>
                <%
            }
            %>
            </ul>
            <%
        }
        cl = cl.getParent();
    }
%>
</ul>
Avatar billede arne_v Ekspert
11. juli 2005 - 15:18 #29
men ellers få fingeren i fejlen

vi ved jo ikke at det er driveren som mangler

det kan jo også være database login som er forkert

eller noget helt tredie
Avatar billede mik28 Seniormester
11. juli 2005 - 15:25 #30
Avatar billede arne_v Ekspert
11. juli 2005 - 15:33 #31
den kigger kun i /var/tomcat/websteder/www.flexbreeze.dk/ROOT/WEB-INF/classes/
ikke i nogen jar filer i lib

har du genstartet serveren efter at have smidt jar fil i lib ?
Avatar billede mik28 Seniormester
11. juli 2005 - 15:40 #32
JDBC driveren skal altså ligger her ikke

/var/tomcat/websteder/www.flexbreeze.dk/ROOT/WEB-INF/classes/lib/
Avatar billede arne_v Ekspert
11. juli 2005 - 15:42 #33
nej

/var/tomcat/websteder/www.flexbreeze.dk/ROOT/WEB-INF/lib/
Avatar billede mik28 Seniormester
11. juli 2005 - 15:46 #34
det er så det jeg har troet, men virker det gør det ikke :-(
Avatar billede mik28 Seniormester
11. juli 2005 - 15:50 #35
/var/tomcat/websteder/www.flexbreeze.dk/ROOT/WEB-INF/lib

Jeg fatter ikke en hat af det :-(
Avatar billede mik28 Seniormester
11. juli 2005 - 15:53 #36
har du mulighed for at give mig en mailadresse jeg kan sende oplysningerne så du kan logge på min server via ssh?
Avatar billede mik28 Seniormester
11. juli 2005 - 15:56 #37
Jeg mener altså at jeg har gjort alting rigtigt, men det har jeg åbenbart ikke
Avatar billede arne_v Ekspert
11. juli 2005 - 16:04 #38
arne_v@mail.danbbs.dk
Avatar billede mik28 Seniormester
11. juli 2005 - 16:13 #39
Nu har du root passwordet :-)
Avatar billede mik28 Seniormester
11. juli 2005 - 16:14 #40
Jeg ser frem til at vide hvad problemet er :-)
Avatar billede arne_v Ekspert
11. juli 2005 - 16:18 #41
Jeg tror ikke at din jar fil har det for godt !

[root@localhost lib]# /usr/java/jdk1.5.0_02/bin/jar tvf mysql-connector-java-3.0.16-ga-bin.jar
    0 Tue Nov 16 03:11:34 CET 2004 META-INF/
  103 Tue Nov 16 03:11:32 CET 2004 META-INF/MANIFEST.MF
19393 Tue Nov 16 03:11:12 CET 2004 COPYING
  1307 Tue Nov 16 03:11:10 CET 2004 README
    0 Tue Nov 16 03:11:10 CET 2004 com/
    0 Tue Nov 16 03:11:10 CET 2004 com/mysql/
    0 Tue Nov 16 03:11:30 CET 2004 com/mysql/jdbc/
  826 Tue Nov 16 03:11:24 CET 2004 com/mysql/jdbc/AssertionFailedException.class
  3474 Tue Nov 16 03:11:24 CET 2004 com/mysql/jdbc/Blob.class
  9057 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/Buffer.class
  6045 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/CharsetMapping.class
  4955 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/Clob.class
  3482 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/CompressedInputStream.class
20381 Tue Nov 16 03:11:26 CET 2004 com/mysql/jdbc/Connection$UltraDevWorkAround.class
45393 Tue Nov 16 03:11:26 CET 2004 com/mysql/jdbc/Connection.class
62623 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/DatabaseMetaData.class
  3115 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/Debug.class
  669 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/Driver.class
  7769 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/EscapeProcessor.class
  2061 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/EscapeTokenizer.class
  8198 Tue Nov 16 03:11:26 CET 2004 com/mysql/jdbc/Field.class
  502 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/LicenseConfiguration.class
  1316 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/MiniAdmin.class
  4671 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/MysqlDefs.class
33469 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/MysqlIO.class
  1802 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/NamedPipeSocketFactory$NamedPipeSocket.class
  1339 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/NamedPipeSocketFactory$RandomAccessFileInputStream.class
  1266 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/NamedPipeSocketFactory$RandomAccessFileOutputStream.class
  1766 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/NamedPipeSocketFactory.class
11646 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/NonRegisteringDriver.class
  392 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/NotImplemented.class
  733 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/NotUpdatable.class
  201 Tue Nov 16 03:11:24 CET 2004 com/mysql/jdbc/OutputStreamWatcher.class
  829 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/PacketTooBigException.class
  1224 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/PreparedStatement$BatchParams.class
  4125 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/PreparedStatement$ParseInfo.class
34393 Tue Nov 16 03:11:28 CET 2004 com/mysql/jdbc/PreparedStatement.class
java.util.zip.ZipException: invalid entry size (expected 39634 but got 39664 bytes)
        at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:368)
        at java.util.zip.ZipInputStream.read(ZipInputStream.java:141)
        at java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:91)
        at sun.tools.jar.Main.list(Main.java:743)
        at sun.tools.jar.Main.run(Main.java:191)
        at sun.tools.jar.Main.main(Main.java:903)
[root@localhost lib]#
Avatar billede arne_v Ekspert
11. juli 2005 - 16:19 #42
prøv og hent ogg lig den op igen og vær 110% sikker på at du FTP'er binært
Avatar billede mik28 Seniormester
11. juli 2005 - 16:21 #43
hvor kan jeg hente den
Avatar billede mik28 Seniormester
11. juli 2005 - 16:26 #44
Jeg tror du har ret
Avatar billede mik28 Seniormester
11. juli 2005 - 16:32 #45
Jeg har byttet JDBC driveren ud og nu virker det
Avatar billede mik28 Seniormester
11. juli 2005 - 16:37 #46
Tak for hjælpen som sædvanligt :-) Ligger du et svar
Avatar billede arne_v Ekspert
11. juli 2005 - 16:45 #47
kommer her
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