geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michele Perrotta" <michele.perro...@cabel.it>
Subject mysql db pool and NoClassDefFoundError
Date Thu, 05 Apr 2012 13:26:09 GMT
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. 
Mime
View raw message