Avatar billede pellekahn Nybegynder
13. november 2003 - 17:56 Der er 19 kommentarer og
1 løsning

Database problem med servlet

Vores problem er at det tilsyneladende ikke er muligt at komme i kontakt med DB via nedenstående kode. DB kaldet er testet ok i en alm. java app. Er der nogen der har et bud på hvad der kan være galt?

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;

public class TitleListServlet extends HttpServlet
{
    public void init(ServletConfig config) throws ServletException
    {
        super.init(config);
    }   

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
          doPost(request, response);   
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {       
          response.setContentType("text/html");     
          PrintWriter out = response.getWriter();

        out.println("<html>\n<body>\n<table border=\"1\" width=\"100%\">");

        String search_string = request.getParameter("search_string");

        Connection con = null;

        try
        {               
            Class.forName("oracle.jdbc.driver.OracleDriver");
            System.err.println("Getting Connection!");
   
            con =DriverManager.getConnection("jdbc:oracle:thin:@xx.xxx.xxx.xxx:xxxx:x","x","x");
           
            if ( con != null )
            {       
                System.err.println("Got Connection!");
   
                Statement statement = con.createStatement();
               
                ResultSet rs = statement.executeQuery("SELECT * " + "FROM person WHERE navn = '" + search_string + "'");
                       
                while ( rs.next() )
                {           
                    out.println("<tr>");           
                      out.println("<td>" + rs.getString("navn") + "</td>");
                      out.println("<td>" + rs.getString("email") + "</td>");                               
                    out.println("</tr>");
                }
           
                rs.close();
                out.println("</table>");
              }
        }
        catch (SQLException sqle)
        {       
          System.err.println(sqle.getMessage());
        }
        catch (ClassNotFoundException cnfe)
        {       
          System.err.println(cnfe.getMessage());
        }
        catch (Exception e)
        {       
          System.err.println(e.getMessage());
        }
        finally
        {       
            try
            {       
                if ( con != null )
                {                 
                      con.close();
                }
              }
              catch (SQLException sqle)
              {       
                System.err.println(sqle.getMessage());
              }
        }
        out.println("</body></html>");
        out.close();
    } 
       
    public String getServletInfo()
    {
        return "TitleListServlet Information";
      }
}
Avatar billede arne_v Ekspert
13. november 2003 - 17:59 #1
Får i en exception ? Hvis ja - hvilken ?
Avatar billede arne_v Ekspert
13. november 2003 - 18:00 #2
Hvor ligger Oracle JDBC driver jar/zip filen ?

(den skal ligge i webapps\dinapp\WEB-INF\lib)
Avatar billede pellekahn Nybegynder
13. november 2003 - 18:03 #3
Vi kører gennem tomcat, og har ikke nogen consol. Er det muligt at få en consol frem?
I tomcat vinduet, kan man se at den læser driveren ind. Men vi får ikke nogen exception i det vindue. Servletten går heller ikke ned, den genererer bare ikke noget resultat.
Avatar billede pellekahn Nybegynder
13. november 2003 - 18:04 #4
det gør den ikke :-)
Prøver lige...
Avatar billede pellekahn Nybegynder
13. november 2003 - 18:09 #5
stadig ingen respons fra db. Skal man sætte en path op for tomcat, eller leder den automatisk i lib mappen?
Avatar billede arne_v Ekspert
13. november 2003 - 18:09 #6
Hvis I starter Tomcat med startup.bat kommer der et konsole vindue
og System.err.println bør skrives i det.

Eller ligger der log filer i log directoriet !
Avatar billede arne_v Ekspert
13. november 2003 - 18:13 #7
Alle jar filer i WEB-INF lib bliver tilføjet til classpathen for
web applikationens kode.

[hvis Oracle skulle bruges til Tomcat managed security så skulle
driveren ligge et andet sted, fordi så skal den bruges af selve serveren
og ikke kun af en bestemt web applikation]
Avatar billede pellekahn Nybegynder
13. november 2003 - 18:30 #8
Har prøvet at sætte en println ind før driveren indlæses og den bliver udskrevet! Herefter bliver der udskrevet "oracle.jdbc.driver.OracleDriver" i consollen og applikationen ser ud til at dø... Så den kan sikkert ikke finde driveren vil jeg skyde på...
Driveren ligger her:
C:\tomcat\webapps\Pro_serv\WEB-INF\lib\classes12.zip
Avatar billede arne_v Ekspert
13. november 2003 - 18:34 #9
Placeringen er god nok.

Indeholder ZIP filen det den skal ?

(oracle/jdbc/driver/OracleDriver.class)
Avatar billede pellekahn Nybegynder
13. november 2003 - 18:35 #10
jepsen...
Avatar billede arne_v Ekspert
13. november 2003 - 18:38 #11
Der er ikke en exception i log-filen ?
Avatar billede pellekahn Nybegynder
13. november 2003 - 18:39 #12
sad lige og kiggede på Oracle's hp, og det ser ud til at classe12.zip er beregnet til jdk 1.3, kan det have noget med det at gøre? Jeg kører med nyeste Java vers.
Avatar billede arne_v Ekspert
13. november 2003 - 18:42 #13
Måske.

Det burde være 1.3 og nyere. Men måske.

Et andet skud i tågen var at udpakke den ZIP i WEB-INF\classes, så
det blev WEB-INF\classes\oracle\jdbc\driver\OracleDriver.class
Avatar billede pellekahn Nybegynder
13. november 2003 - 18:44 #14
prøver lige at udpakke, og hente den nyeste ojdbc driver...
Her er lige den seneste log smørre, fatter ikke meget af det, men det ser ikke farligt ud
2003-01-13 18:17:49 WebappLoader[/Pro_serv]: Deploy class files /WEB-INF/classes to C:\tomcat\webapps\Pro_serv\WEB-INF\classes
2003-01-13 18:17:49 StandardManager[/Pro_serv]: Seeding random number generator class java.security.SecureRandom
2003-01-13 18:17:49 StandardManager[/Pro_serv]: Seeding of random number generator has been completed
2003-01-13 18:17:49 StandardWrapper[/Pro_serv:default]: Loading container servlet default
2003-01-13 18:17:49 StandardWrapper[/Pro_serv:invoker]: Loading container servlet invoker
2003-01-13 18:18:25 StandardHost[localhost]: Removing web application at context path /admin
2003-01-13 18:18:25 StandardHost[localhost]: Removing web application at context path /webdav
2003-01-13 18:18:25 StandardHost[localhost]: Removing web application at context path /examples
2003-01-13 18:18:25 StandardHost[localhost]: Removing web application at context path /Pro_serv
2003-01-13 18:18:25 StandardHost[localhost]: Removing web application at context path /tomcat-docs
2003-01-13 18:18:25 StandardHost[localhost]: Removing web application at context path
2003-01-13 18:18:25 StandardHost[localhost]: Removing web application at context path /manager
Avatar billede arne_v Ekspert
13. november 2003 - 18:47 #15
Det er korrekt.
Avatar billede pellekahn Nybegynder
13. november 2003 - 18:48 #16
Har udpakket driveren direkte i lib og i en classes12 mappe, så nu ligger driveren i lib mappen på alle tænkelige måder, men stadig uden resultat
Avatar billede arne_v Ekspert
13. november 2003 - 18:52 #17
Har du System.err.println mellem hver linie ?

Og den går i stå på Class.forName uden exception ?
Avatar billede pellekahn Nybegynder
13. november 2003 - 18:54 #18
har en System.err.println på begge sider af Class.forName, og det er kun den første der bliver udskrevet. oracle.jdbc.driver.OracleDriver er det sidste der bliver skrevet i consollen...
Avatar billede pellekahn Nybegynder
13. november 2003 - 18:58 #19
UUUUUUUUUU-MAMENAM!!!
Den nyeste driver fra Oracle gjorde tricket.
Men du skal da have point for dit besvær... Så kast et svar!
Avatar billede arne_v Ekspert
13. november 2003 - 19:00 #20
Jeg takker
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