Newsgroup: it.comp.java
Titolo: Tomcat e MySql

Spoero che qualcuno di voi mi possa aiutare, poichč ho grossi ,. ma
veramente grossi problemi con tomcat e mysql e precisamente con JNDI
Datasource.
Allora, diciamo che ho fatto tutto ciņ che č scritto su questo link
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/printer/jndi-datasource-examples-howto.html
- aggiungendo come da esempio quella parte nel server.xml
- modificando il web.xml per quella applicazione
- ho creato un db di nome TestDB
- ho messo il driver di mysql "mysql-connector-java-3.0.10-stable.jar" in
\common\lib
- o messo il class e jsp al loro posto
Insomma ho fattoi tutto questo, ma ancora, ed č con grande disperazione
che lo dico :-) l'esempio non vą.
L'errore che mi restituisce e sempre e costantemente questo, cosa vuole
dire? non riesce ad istanziare questa classe?
HTTP Status 500 -
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 6 in the jsp file: /test.jsp
Generated servlet error:
    [javac] Compiling 1 source file
C:\Programmi\Apache Group\Tomcat
4.1\work\Standalone\localhost\DBTest\test_jsp.java:48: cannot resolve
symbol
symbol  : class DBTest 
location: class org.apache.jsp.test_jsp
    DBTest tst = new DBTest();
    ^
An error occurred at line: 6 in the jsp file: /test.jsp
Generated servlet error:
C:\Programmi\Apache Group\Tomcat
4.1\work\Standalone\localhost\DBTest\test_jsp.java:48: cannot resolve
symbol
symbol  : class DBTest 
location: class org.apache.jsp.test_jsp
    DBTest tst = new DBTest();
                     ^
2 errors
	at
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)
	at
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)
	at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:340)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:352)
	at
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:474)
	at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:184)
	at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	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:260)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
	at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
	at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
	at java.lang.Thread.run(Thread.java:536)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
devi:
1) essere sicuro che la classe sia nel classpath
2) devi importarla (esattamente come gli import nei sorgenti java):
<%@page import = "qui.metti.il.package.DBTest"%>

 <%@page import = "qui.metti.il.package.DBTest"%>
Ciao Dimitri, sono agli inizi con java e ti chhiedo cortesemente cosa vuol
dire devi metterela nel classpath??
Io nel classpath mi ritrovo questo 
C:\java;C:\Programmi\Apache Group\Tomcat 4.1\common\lib\servlet.jar;.
e tutte le altre classi, devo dire che, fungono alla perfezione solo
questo pool di connessioni mi sta dando problemi.
E poi ancora cosa vuol dire che devo importarla, nel senso che è errato
l'esempio di jakarta??
in ogni caso la classe è questa:
import javax.naming.*;
import javax.sql.*;
import java.sql.*;
public class DBTest {
  String foo = "Not Connected";
  int bar = -1;
 
  public void init() {
    try{
      Context ctx = new InitialContext();
      if(ctx == null ) 
          throw new Exception("Boom - No Context");
      DataSource ds = 
            (DataSource)ctx.lookup("java:comp/env/jdbc/TestDB");
      if (ds != null) {
        Connection conn = ds.getConnection();
 
        if(conn != null)  {
            foo = "Got Connection "+conn.toString();
            Statement stmt = conn.createStatement();
            ResultSet rst = 
                stmt.executeQuery(
                  "select id, foo, bar from testdata");
            if(rst.next()) {
               foo=rst.getString(2);
               bar=rst.getInt(3);
            }
            conn.close();
        }
      }
    }catch(Exception e) {
      e.printStackTrace();
    }
 }
 public String getFoo() { return foo; }
 public int getBar() { return bar;}
}
mentre il file jsp e questo:
<html>
  <head>
    <title>DB Test</title>
  </head>
  <body>
  <%
    DBTest tst = new DBTest();
    tst.init();
  %>
  <h2>Results</h2>
    Foo <%= tst.getFoo() %><br/>
    Bar <%= tst.getBar() %>
  </body>
</html>
lunica cosa che ho modificato  e che c'era nella classe un 
     package foo;
che ho eliminato e di conseguenza ho tolto "foo" davanti alla classe ,
 
foo.DBTest tst = new foo.DBTest();
     ma questo è giusto vero??
Forse devo solo importare la classe nella jsp, come :-).
Ciao e ancora grazie.
(scusate... forse sono stato un pò prolisso...)


 dire devi metterela nel classpath??
mmmhh, come hai deployato la webapp ?
Hai creato un file myaapp.war o l'hai messa sotto /webapps/<NOMEWEBAPP> ?
Se hai scelto la seconda, devi mettere le tue classi sotto 
/<NOMEWEBAPP>/WEB-INF/classes e le eventuali librerie sotto 
/<NOMEWEBAPP>/WEB-INF/lib
perchè in questo modo sono viste solo da questa webapp e non dalle 
eventuali altre.
Inoltre devi aggiungere
<%@page import = "DBTest"%>
all'inizio della pagina...comunque io ti consiglio di usare i package, 
quando le classi sono molte poi diventa un casino senza di loro...
-- 
                 ''~``
                ( o o )
+---------.oooO--(_)--Oooo.----+
 
http://megadix.clarence.com/

 quando le classi sono molte poi diventa un casino senza di loro...
per questo, grazie del consiglio naturalmente ben accetto.
E graze ancora della pazienza che hai. :-) 
ciao Giuseppe


 3 errors
Perdon,
quello era il secondo errore perchè ho provato ad aggiungere il punto così
come mi chiedeva.
Così è come dicevi tu.
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 7 in the jsp file: /test.jsp
Generated servlet error:
    [javac] Compiling 1 source file
C:\Programmi\Apache Group\Tomcat
4.1\work\Standalone\localhost\DBTest\test_jsp.java:7: '.' expected
import DBTest;
             ^
C:\Programmi\Apache Group\Tomcat
4.1\work\Standalone\localhost\DBTest\test_jsp.java:50: cannot resolve
symbol
symbol  : class DBTest 
location: class org.apache.jsp.test_jsp
    DBTest tst = new DBTest();
    ^
An error occurred at line: 7 in the jsp file: /test.jsp
Generated servlet error:
C:\Programmi\Apache Group\Tomcat
4.1\work\Standalone\localhost\DBTest\test_jsp.java:50: cannot resolve
symbol
symbol  : class DBTest 
location: class org.apache.jsp.test_jsp
    DBTest tst = new DBTest();
                     ^
3 errors
Ciao e grazie ancora
Giuseppe r.
