geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ivan <xhh...@gmail.com>
Subject Re: mysql db pool and NoClassDefFoundError
Date Thu, 05 Apr 2012 14:14:22 GMT
Think that the servlet  Extractor did not import the correct DataSource
class.

2012/4/5 Michele Perrotta <michele.perrotta@cabel.it>

> 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

Mime
View raw message