版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Maybeno1314/article/details/81557807
八月 10, 2018 9:22:24 上午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [DispatcherServlet] in context with path [/spring.mvc] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: No DataSource set] with root cause
java.lang.IllegalStateException: No DataSource set
at org.springframework.util.Assert.state(Assert.java:73)
at org.springframework.jdbc.support.JdbcAccessor.obtainDataSource(JdbcAccessor.java:77)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:446)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:456)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:484)
at com.zzxt.spring.mvc.hello.entity.BankDaoImpl.getAllCardInfo(BankDaoImpl.java:86)
at com.zzxt.spring.mvc.hello.action.HelloController.sayHi(HelloController.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1152)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
八月 10, 2018 9:30:11 上午 org.apache.catalina.core.StandardContext reload
信息: Reloading Context with name [/spring.mvc] has started
八月 10, 2018 9:30:11 上午 org.apache.catalina.core.ApplicationContext log
信息: Destroying Spring FrameworkServlet 'DispatcherServlet'
八月 10, 2018 9:30:11 上午 org.springframework.context.support.AbstractApplicationContext doClose
信息: Closing WebApplicationContext for namespace 'DispatcherServlet-servlet': startup date [Fri Aug 10 09:22:11 CST 2018]; parent: Root WebApplicationContext
八月 10, 2018 9:30:11 上午 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
八月 10, 2018 9:30:11 上午 org.springframework.context.support.AbstractApplicationContext doClose
信息: Closing Root WebApplicationContext: startup date [Fri Aug 10 09:22:10 CST 2018]; root of context hierarchy
八月 10, 2018 9:30:11 上午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} closed
八月 10, 2018 9:30:11 上午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesJdbc
警告: The web application [spring.mvc] registered the JDBC driver [com.alibaba.druid.proxy.DruidDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
八月 10, 2018 9:30:11 上午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesJdbc
警告: The web application [spring.mvc] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
八月 10, 2018 9:30:11 上午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
警告: The web application [spring.mvc] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:64)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
八月 10, 2018 9:30:14 上午 org.apache.jasper.servlet.TldScanner scanJars
信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
八月 10, 2018 9:30:14 上午 org.apache.catalina.core.ApplicationContext log
信息: No Spring WebApplicationInitializer types detected on classpath
八月 10, 2018 9:30:14 上午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
八月 10, 2018 9:30:14 上午 org.springframework.web.context.ContextLoader initWebApplicationContext
信息: Root WebApplicationContext: initialization started
八月 10, 2018 9:30:14 上午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing Root WebApplicationContext: startup date [Fri Aug 10 09:30:14 CST 2018]; root of context hierarchy
八月 10, 2018 9:30:14 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext-jdbc.xml]
八月 10, 2018 9:30:14 上午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} inited
八月 10, 2018 9:30:14 上午 org.springframework.web.context.ContextLoader initWebApplicationContext
信息: Root WebApplicationContext: initialization completed in 422 ms
八月 10, 2018 9:30:14 上午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring FrameworkServlet 'DispatcherServlet'
八月 10, 2018 9:30:14 上午 org.springframework.web.servlet.FrameworkServlet initServletBean
信息: FrameworkServlet 'DispatcherServlet': initialization started
八月 10, 2018 9:30:14 上午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing WebApplicationContext for namespace 'DispatcherServlet-servlet': startup date [Fri Aug 10 09:30:14 CST 2018]; parent: Root WebApplicationContext
八月 10, 2018 9:30:14 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext-mvc.xml]
八月 10, 2018 9:30:14 上午 org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry register
信息: Mapped "{[/stu/showView]}" onto public org.springframework.web.servlet.ModelAndView com.zzxt.spring.mvc.hello.action.HelloController.sayHi()
八月 10, 2018 9:30:14 上午 org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry register
信息: Mapped "{[/stu/add]}" onto public org.springframework.web.servlet.ModelAndView com.zzxt.spring.mvc.hello.action.HelloController.insertStu()
八月 10, 2018 9:30:14 上午 org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry register
信息: Mapped "{[/stu/doAdd]}" onto public org.springframework.web.servlet.ModelAndView com.zzxt.spring.mvc.hello.action.HelloController.doInsertStu(com.zzxt.spring.mvc.hello.entity.DButil)
八月 10, 2018 9:30:15 上午 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter initControllerAdviceCache
信息: Looking for @ControllerAdvice: WebApplicationContext for namespace 'DispatcherServlet-servlet': startup date [Fri Aug 10 09:30:14 CST 2018]; parent: Root WebApplicationContext
八月 10, 2018 9:30:15 上午 org.springframework.web.servlet.FrameworkServlet initServletBean
信息: FrameworkServlet 'DispatcherServlet': initialization completed in 440 ms
八月 10, 2018 9:30:15 上午 org.apache.catalina.core.StandardContext reload
信息: Reloading Context with name [/spring.mvc] is completed
八月 10, 2018 9:30:16 上午 org.apache.catalina.loader.WebappClassLoaderBase checkStateForResourceLoading
信息: Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1372)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1042)
at com.mysql.jdbc.AbandonedConnectionCleanupThread.checkContextClassLoaders(AbandonedConnectionCleanupThread.java:90)
at com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我出现这个错误的原因是:我的applicationContext.xml中的配置出现了问题,
如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd ">
<!--
<context:property-placeholder location="classpath:db.properties"></context:property-placeholder>
<bean id="dbutil" class="com.zzxt.spring.jdbc.CardInfo">
<property name="stuNo" value="${stuNo}"></property>
<property name="stuName" value="${stuName}"></property>
<property name="age" value="${age}"></property>
<property name="classNo" value="${classNo}"></property>
<property name="gender" value="${gender}"></property>
</bean>
创建一个jdbcTemplate bean 将dataSources 注入
com.alibaba.druid.pool.DruidDataSource ;连接池
-->
<context:property-placeholder location="classpath:db-account.properties"></context:property-placeholder>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test;useSSL=false"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--
DataSOurce 接口,为了从数据库中得到数据,需要获取一个数据库的连接,Spring通过DataSources对象来完成这个链接,
DataSource 是JDBC规范的一部分
他被视为一个通用的数据库连接工厂
通过DataSource ,Container,Framework,可以将连接池及事务管理的细节从应用代码中分理出来
<bean id="bankDaoImpl1" class="com.zzxt.spring.jdbc.BankDaoImpl" >
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
-->
<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg name="dataSource" ref="dataSource"></constructor-arg>
</bean>
<bean id="bankDaoImpl" class="com.zzxt.java.servlet.BankDaoImpl">
<property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate"></property>
</bean>
</beans>
由于xml文件中我配置的是这个NameParameterJdbcTemplate,而我的工程中却使用了没有配置完全的JdbcTemlpate,所以引发了
DataSource not set 的错误。
<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg name="dataSource" ref="dataSource"></constructor-arg>
</bean>
<bean id="bankDaoImpl" class="com.zzxt.java.servlet.BankDaoImpl">
<property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate"></property>
</bean>
这个问题对我的工程来说具有特殊性, 但是也具有一般性,出现这个问题的原因肯定在xml文件配置中。