Think that the servlet Extractor did not import the correct DataSource class.
2012/4/5 Michele Perrotta <[email protected]> > Hi all, > > I premise that I am approached to the apache Geronimo/Tomcat world only > recently and I don't know much details about those servers. > > > Ok, now here's my problem: > > On Geronimo 2.2.1 + Tomcat6 I create a mysql database pool via the wizard > in order to connect a war to my mysql db. > I used mysql-connector-java-5.1.12-bin.jar as driver (or connector?). > > I also, as described in the "usage" link of the pool (on the console), > added to the war the geronimo-web.xml file. > > > web.xml: > ============================================ > > <?xml version="1.0" encoding="UTF-8"?> > <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" > http://java.sun.com/xml/ns/javaee > http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> > > <servlet> > <servlet-name>Extractor</servlet-name> > <servlet-class>database.Extractor</servlet-class> > </servlet> > > <servlet-mapping> > <servlet-name>Extractor</servlet-name> > <url-pattern>/Extractor</url-pattern> > </servlet-mapping> > > <session-config> > <session-timeout>30</session-timeout> > </session-config> > > <resource-ref> > <res-ref-name>mysqlpool</res-ref-name> > <res-type>javax.sql.DataSource</res-type> > <res-auth>Container</res-auth> > <res-sharing-scope>Shareable</res-sharing-scope> > </resource-ref> > > </web-app> > > ============================================ > > > > geronimo-web.xml: > ============================================ > > <?xml version="1.0" encoding="UTF-8"?> > <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1"> > > <environment> > > <moduleId> > <artifactId>TestPool2</artifactId> > </moduleId> > > <dependencies> > <dependency> > <groupId>console.dbpool</groupId> > <artifactId>jdbc_local_mysql</artifactId> > </dependency> > </dependencies> > > </environment> > > <context-root>/TestPool2</context-root> > > <resource-ref> > <ref-name>mysqlpool</ref-name> > <resource-link>jdbc/local_mysql</resource-link> > </resource-ref> > > </web-app> > > ============================================ > > > > Servlet: > ============================================ > > ... > > InitialContext ctx = new InitialContext(); > > String resourcename = "mysqlpool"; > > DataSource ds = (DataSource) ctx.lookup("java:comp/env/"+resourcename); > > con = ds.getConnection(); > > String sql = "select message from log.mito_logbook limit 10"; > PreparedStatement pstm = con.prepareStatement(sql); > > ResultSet rs = pstm.executeQuery(); > > while(rs.next()) > { > out.println("<p>"+rs.getString(1)+"</p>"); > } > > ... > > ============================================ > > > After the war deploy (no problems with it), I tried to run the application > and I got the following (Extractor is the name of my servlet): > > ERROR [[Extractor]] Servlet.service() for servlet Extractor threw > exception java.lang.NoClassDefFoundError: > org/apache/tomcat/jdbc/pool/DataSource > > at database.Extractor.processRequest(Extractor.java:50) > at database.Extractor.doGet(Extractor.java:104) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:693) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) > at > org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:420) > at > org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) > at > org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:396) > at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:214) > at > org.apache.geronimo.pool.ThreadPool$ContextClassLoaderRunnable.run(ThreadPool.java:344) > at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown > Source) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > Source) > at java.lang.Thread.run(Unknown Source) > > > > I really don't know what's going on. > Well it's a "No Class Definition", but I cannot understand, the mysql > connector (the jar I mentioned above) doesn't provide the tomcat jdbc > DataSource class too? > > I am missing some basic connector-related concepts? > > > -- > Michele. > > ** > > AVVERTENZE: Il presente messaggio e/o i suoi allegati (di seguito il > "messaggio") possono contenere informazioni privilegiate e/o confidenziali. > Se non siete i destinatari indicati nel messaggio (o persona incaricata di > inoltrare il messaggio al/i destinatario/i), non potete copiare o inoltrare > il messaggio ad altri e siete invitati a distruggerlo dandone informazione > al mittente a mezzo e-mail. Il contenuto del presente messaggio non deve > essere considerato come trasmesso o autorizzato da Cabel. Cabel non si > assume alcuna responsabilità per eventuali intercettazioni, modifiche o > danneggiamenti del presente messaggio e-mail e per le eventuali conseguenze. > > DISCLAIMER: Privileged/Confidential Information may be contained in this > message and in any of its attachments (the "message"). If you are not the > addressee indicated in this message (or responsible for delivery of the > message to such person), you may not copy or deliver this message to > anyone. In such case, you should destroy this message and kindly notify the > sender by reply e-mail. The contents of this message shall be understood as > neither given nor endorsed by Cabel. Cabel does not accept liability for > corruption, interception or amendment, if any, or the consequences thereof. > -- Ivan
