Centos6, java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory

1,182 views
Skip to first unread message

ppcharli

unread,
Nov 7, 2011, 12:34:53 PM11/7/11
to psi-probe-discuss
In Centos6, the last package tomcat6-lib-6.0.24-33.el6.noarch.rpm
does not contain the file /usr/share/java/tomcat6/tomcat-
dbcp-6.0.24.jar and I get this error :

javax.naming.NamingException: Could not create resource factory
instance [Root exception is java.lang.ClassNotFoundException:
org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]


Can psi-probe set to use commons-dbcp.jar instead dbcp.jar-
tomcat-6.0.24.jar ?


Thanks

Mark

unread,
Nov 11, 2011, 10:23:59 AM11/11/11
to psi-prob...@googlegroups.com
Probe doesn't create those resources.  It just displays them.  It will find both commons-dbcp and tomcat-jdbc resources.

This error is likely because the server itself or one of the apps is trying to create a resource, and that class is not in the classpath.  It is not an issue in Probe.

ppcharli

unread,
Nov 14, 2011, 2:30:19 AM11/14/11
to psi-probe-discuss
Hello,

But I get this error when I select "Data Sources" tab in psi-probe.

I have only this datasource:

<Resource name="jdbc/ds1 auth="Container"
type="javax.sql.DataSource"
initialSize="3" maxActive="10" maxIdle="20" maxWait="30000"
validationQuery="select * from dual"
driverClassName="oracle.jdbc.OracleDriver"
poolPreparedStatements="true"
username="user"
password="password"
url="jdbc:oracle:thin:@192.168.1.1:1521/dbsid"/>

Thanks,

Mark

unread,
Nov 14, 2011, 1:33:02 PM11/14/11
to psi-prob...@googlegroups.com
Can you post the full stack trace?

ppcharli

unread,
Nov 15, 2011, 1:24:41 AM11/15/11
to psi-probe-discuss
[http-8180-3] INFO  com.googlecode.psiprobe.beans.ResourceResolverBean
 - reading resource: jdbc/ds[http-8180-3] ERROR
com.googlecode.psiprobe.beans.ResourceResolverBean  - Failed to
lookup: jdbc/ds1javax.naming.NamingException: Could not create
resource factory instance [Root exception is
java.lang.ClassNotFoundException:
org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]        at
org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:
118)        at
javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:
321)        at
org.apache.naming.NamingContext.lookup(NamingContext.java:793)       
at org.apache.naming.NamingContext.lookup(NamingContext.java:140)     
  at org.apache.naming.NamingContext.lookup(NamingContext.java:781)   
    at org.apache.naming.NamingContext.lookup(NamingContext.java:140) 
      at org.apache.naming.NamingContext.lookup(NamingContext.java:
781)        at
org.apache.naming.NamingContext.lookup(NamingContext.java:140)       
at org.apache.naming.NamingContext.lookup(NamingContext.java:781)     
  at org.apache.naming.NamingContext.lookup(NamingContext.java:153)   
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:
152)        at javax.naming.InitialContext.lookup(InitialContext.java:
409)        at
com.googlecode.psiprobe.beans.ResourceResolverBean.lookupResource(ResourceResolverBean.java:
148)        at
com.googlecode.psiprobe.beans.ResourceResolverBean.getApplicationResources(ResourceResolverBean.java:
112)        at
com.googlecode.psiprobe.beans.ContainerWrapperBean.getPrivateDataSources(ContainerWrapperBean.java:
172)        at
com.googlecode.psiprobe.controllers.datasources.ListAllJdbcResourcesController.handleRequestInternal(ListAllJdbcResourcesController.java:
31)        at
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:
153)        at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:
48)        at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:
875)        at
com.googlecode.psiprobe.ProbeServlet.doDispatch(ProbeServlet.java:54) 
      at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:
807)        at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:
571)        at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:
501)        at javax.servlet.http.HttpServlet.service(HttpServlet.java:
617)        at javax.servlet.http.HttpServlet.service(HttpServlet.java:
717)        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290)        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)        at
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:
118)        at
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:
52)        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
235)        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.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:
558)        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
127)        at
com.googlecode.psiprobe.Tomcat60AgentValve.invoke(Tomcat60AgentValve.java:
30)        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)        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.Http11AprProcessor.process(Http11AprProcessor.java:
865)        at org.apache.coyote.http11.Http11AprProtocol
$Http11ConnectionHandler.process(Http11AprProtocol.java:579)        at
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:
1556)        at java.lang.Thread.run(Thread.java:636)Caused by:
java.lang.ClassNotFoundException:
org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory        at
java.net.URLClassLoader$1.run(URLClassLoader.java:217)        at
java.security.AccessController.doPrivileged(Native Method)        at
java.net.URLClassLoader.findClass(URLClassLoader.java:205)        at
java.lang.ClassLoader.loadClass(ClassLoader.java:321)        at
java.lang.ClassLoader.loadClass(ClassLoader.java:266)        at
java.lang.Class.forName0(Native Method)        at
java.lang.Class.forName(Class.java:186)        at
org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:
115)        ... 42 more

Mark

unread,
Nov 16, 2011, 2:00:09 PM11/16/11
to psi-prob...@googlegroups.com
I don't think there is any change that can be made in PSI Probe to fix this.  It is trying to resolve the datasource, and the JNDI lookup fails with a ClassNotFoundException for the connection pool factory.  Are your connection pool and JDBC driver installed to Tomcat's /lib directory?  They must be for cross-context JNDI lookups to work correctly.

Reply all
Reply to author
Forward
0 new messages