Newsgroup: it.comp.java
Titolo: help servlet & mysql ...

Ciao a tutti, ho il seguente problema, lavoro su W2000 con Tomcat 4.0, Ho
sviluppato una Web-app che si connette a un database mysql e mostra tutti i
dati di una tabella, la servlet funziona, ma dopo circa 100 record si ferma
e trovo un errore anche nel log di tomcat, il problema è che i record sono
circa 1000 .... qualcuno ha idea di quale potrebbe essere il problema??? Sto
impazzendo .... di seguito il codice della servlet e l'errore del log di
tomcat.
Questo è il codice della servlet:
 public void doGet(HttpServletRequest req, HttpServletResponse res)
  throws ServletException, IOException {
  res.setContentType("text/html");
  PrintWriter out = res.getWriter();
  out.print("<html><head>");
  out.print("</head><body>");
  out.print("<form action=\"");
  out.print( req.getRequestURI() );
  out.print("\" method=\"post\">");
  out.print("<input type=\"submit\" ");
  out.print("value=\" \">  ");
  out.print("Display Records</form>");
  out.print("</body></html>");
  out.close();
 }
 public void doPost(HttpServletRequest req, HttpServletResponse res)
  throws ServletException, IOException {
  res.setContentType("text/html");
  PrintWriter out = res.getWriter();
  out.print("<html><head>");
  out.print("</head><body>");
  out.print("<code><pre>");
  out.print("<font color=green>ID\tFirst ");
  // debugging info
  long time1 = System.currentTimeMillis();
  // connecting to database
  Connection con = null;
  Statement stmt = null;
  ResultSet rs = null;
  try {
   Class.forName("org.gjt.mm.mysql.Driver");
   con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/myalbums");
   stmt = con.createStatement();
   rs = stmt.executeQuery("SELECT * FROM albums");
   // displaying records
                        out.print("<table>");
                        out.print("<tr
bgcolor=#336699><td>ID</td><td>artista</td><td>Album</td><td>NumeroCD</td></
tr>");
   while(rs.next()) {
                                out.print("<tr>");
    out.print("<td>"+rs.getObject(1).toString()+"</td>");
    out.print("<td>"+rs.getObject(2).toString()+"</td>");
    out.print("<td>"+rs.getObject(3).toString()+"</td>");
    out.print("<td>"+rs.getObject(4).toString()+"</td>");
//out.print("<td>"+rs.getObject(5).toString()+"</td>");
                                out.print("</tr>");
   }
                        out.print("</table>");
  } catch (SQLException e) {
   throw new
   ServletException("Servlet Could not display records.", e);
  } catch (ClassNotFoundException e) {
   throw new
   ServletException("JDBC Driver not found.", e);
  } finally {
   try {
    if(rs != null) {
     rs.close();
     rs = null;
    }
    if(stmt != null) {
     stmt.close();
     stmt = null;
    }
    if(con != null) {
     con.close();
     con = null;
    }
   } catch (SQLException e) {}
  }
Questo è il lgo di Tomcat che mi segnala l'errore (non riesco assolutamente
a cavarne un ragno dal buco).
2002-04-28 22:51:45 StandardWrapperValve[myalbums]: Servlet.service() for
servlet myalbums threw exception
java.lang.NullPointerException
 at MyAlbums.doPost(MyAlbums.java:68)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
 at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
 at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
 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.ja
va:190)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
 at
org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:2
46)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
 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:2343)
 at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180
)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
 at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
 at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
 at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
 at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
 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:5
66)
 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:
1012)
 at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1107
)
 at java.lang.Thread.run(Thread.java:536)

 Questo č il lgo di Tomcat che mi segnala l'errore (non riesco



Se ci hai preso .... direi proprio di si, grazie 1000, adesso la servlet
funziona alla perfezione!!!! Intanto (per aggirare il problema) ho scritto
una jsp che fa la stessa cosa... Adesso ne approfitto e ho un'altra domanda
:
Nella Jsp ho aggiunto la possibilità di cliccare sul titolo della colonna
per eseguire l'ordinamento in base alla colonna cliccata semplicemente con
un semplicissimo anchor:
<a href="index.jsp?ord=0">Titolo</a>
Sia la JSP sia la servlet funzionano in locale: localhost/...
Quando provo ad accederci attreaverso internet (ho un servizio di dns
dinamico) per la servlet va tutto bene, la JSP mi da un errore del server se
provo ad accedere a
http://{mio_nome_dinamico}/{nome_della_WEBAPP}/index.jsp, ma riprende a
funzionare se aggiungi il parametro ?ord alla fine dell'URL. Cosa sbaglio?
Grazie 1000 ancora, ma è da poco che mi sono messo a smanettare con
jsp/servlet, sebbene con Java didatticamente non sono a zero!
Grava

 funzionare se aggiungi il parametro ?ord alla fine dell'URL. Cosa sbaglio?
Questo è più strano... suona come un problema di cache del browser o
qualcosa che riguarda il proxy...
Se usi un proxy dovresti dire al browser di ignorare il proxy quando ti
connetti a macchine locali .

 ha scritto nel messaggio
news:newscache$r1jbvg$c9o$1...@listsrv01.csi.it...

Ok, ho risolto spostando il controllo della request.getParameter("ord")
all'inizio della jsp, mi viene in mente un altro problema, è possibile
"nascondere" i parametri della GET alla fine dell'URL, tanto per intenderci
tutto quello che viene dopo il "?".
Grazie ancora!
Grava

 tutto quello che viene dopo il "?".
Usi il metodo post anziché il metodo get; ma ci sono un sacco di tecniche

Spero di averci preso.
[CUT]
Forse sě. O forse no. Io non so dirlo.
Ma ti chiedo se, per cortesia, per il futuro potessi ridurre un po' il 
numero delle linee quotate... ;-)
-- 
Ciao
	Fabrizio C.

 numero delle linee quotate... ;-)
Ok :-) Prendo nota e mi scuso.