我用的是tomcat5.5,配置了日志之后打印出下列信息:
ERROR main org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
Caused by:
java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
at java.lang.Class.getConstructor0(Class.java:2640)
at java.lang.Class.getDeclaredConstructor(Class.java:1953)
……
从日志信息看问题已经很明显了,是applicationContext.xml的dataSource问题。
解决方法:
1 将<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
改为<bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">之后问题得到解决。(org.springframework.jdbc.datasource.DriverManagerDataSource 不可以使用连接池。)
2 org.apache.commons.dbcp.BasicDataSource作为注入的DataSource源,为了使用 DBCP的功能,必须要将commons-dbcp.jar加入CLASSPATH中,另外还需要commons-pool.jar和commons- collections.jar,这些都可以在Spring的lib目录下找到。
org.springframework.jdbc.datasource.DriverManagerDataSource并没有提供连接池的功能,只能作作简单的单机连接测试。使用org.apache.commons.dbcp.BasicDataSource时缺少commons-pool.jar所以会出现如题的问题。
从日志信息看问题已经很明显了,是applicationContext.xml的dataSource问题。
解决方法:
1 将<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
改为<bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">之后问题得到解决。(org.springframework.jdbc.datasource.DriverManagerDataSource 不可以使用连接池。)
2 org.apache.commons.dbcp.BasicDataSource作为注入的DataSource源,为了使用 DBCP的功能,必须要将commons-dbcp.jar加入CLASSPATH中,另外还需要commons-pool.jar和commons- collections.jar,这些都可以在Spring的lib目录下找到。
org.springframework.jdbc.datasource.DriverManagerDataSource并没有提供连接池的功能,只能作作简单的单机连接测试。使用org.apache.commons.dbcp.BasicDataSource时缺少commons-pool.jar所以会出现如题的问题。