在IDEA中已经配置postgis数据库驱动并且能在Java类中连接数据库,但在servlet中无法连接数据库且导致Tomcat自动断开连接的解决方案
最近在IDEA中用JDBC连接PostgreSQL数据库时遇到了这样一个奇怪的事情:
从PostgreSQL JDBC Driver官网下载好JDBC驱动之后,在IDEA的Project Structure的Modules中已经添加好jar包的依赖,并且在普通的Java类(自己封装的数据库工具类)中能够成功的连接上数据库,也能从里面读取数据。
但是,正当咱连接上数据库而高兴的时候,悲剧悄然来临。如果在servlet中调用自己编写数据库工具类进行数据库连接,就会出现如下图所示的错误,然后自动断开与tomcat服务器的连接。
这是什么原因呢,调试之后,咱发现就是在跳转到数据库工具类中进行postgis数据库连接时出错,而出错时会提示java.lang.ClassNotFoundException: org.postgresql.Driver
这就相当明显了,就是web应用没有找到我们的JDBC Driver。我们的servlet只会加载到web项目的目录(webapp或WebRoot目录)里面的jar包。这比较让人疑惑,但事实就是这样,我们添加的jar包没有被web应用加载到。
那如何解决呢?只需要在自己web项目根目录(webapp或者WebRoot等)下的WEB-INF目录中添加lib文件夹,将其添加到依赖。然后吧需要的数据库驱动jar包放到该目录下即可。
我在的另一篇博客中也提到过,/WEB-INF/lib/ 这个目录一般放置仅在这个web应用中用到的jar文件,例如数据库驱动jar文件(我们链接postgis数据库时就用到)。
这样,我们在servlet中就能够连接数据库,愉快地读取数据了。
在IDEA中已经配置postgis数据库驱动并且能在Java类中连接数据库,但在servlet中无法连接数据库且导致Tomcat自动断开连接的解决方案的更多相关文章
- MySQL5.6数据库8小时内无请求自动断开连接
问题: 最近的项目中,发现Mysql数据库在8个小时内,没有请求时,会自动断开连接,这是MySQL服务器的问题.The last packet successfully received from t ...
- CentOS 6.5系统中安装配置MySQL数据库
就像Windows server 2003,2008中一般安装的是Sql Server 数据库,在linux系统中一般安装的是mysql数据库,而且Mysql数据库的第一个版本就是发行在Linux系统 ...
- dbcp基本配置和重连配置 -- mysql 8小时自动断开连接的问题
1. 引入dbcp (选择1.4) Java代码 com.alibaba.external jakarta.commons.dbcp 1.4 2. dbcp的基本配置 相关配置说明: initia ...
- SSH自动断开连接的原因、配置(转)
方法一: 用putty/SecureCRT连续3分钟左右没有输入, 就自动断开, 然后必须重新登陆, 很麻烦. 在网上查了很多资料, 发现原因有多种, 环境变量TMOUT引起,ClientAliveC ...
- Java之通过反射机制选择servlet中的对应的方法
此方法用于在对Javaee开发中的通过对应的名称而选择servlet中的对应的方法 注:主要代码如下 protected void doGet(HttpServletRequest req, Http ...
- python---django中models配置修改数据库引擎
Django支持多种数据库,sqlite,mysql,oracle等,其默认数据库是sqlite 在settings文件中可以发现: DATABASES = { 'default': { 'ENGIN ...
- Docker中安装配置Oracle数据库
本文使用的OS是Ubuntu([16.04.1_server][1])[注:Ubuntu是安装在vmware虚拟机上的]. 其他的Oracle连接工具:[sqldeveloper-4.1.5.21.7 ...
- [原创]java WEB学习笔记05:Servlet中的ServletConfig对象
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- java基础77 Http协议及Servlet中的GET、POST提交方式
本文知识点(目录): 1.什么是http协议 2.查看http协议的工具 3.http协议的内容 4.请求方式 5.请求头和响应头(以及获取请求头信息的方法) 6.实体内 ...
随机推荐
- Active MQ 整合SpringBoot
配置文件 POM <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...
- mysql索引失效原理(联合索引失效问题)
单值索引B+树图单值索引在B+树的结构里,一个节点只存一个键值对 联合索引开局一张图,由数据库的a字段和b字段组成一个联合索引. 从本质上来说,联合索引也是一个B+树,和单值索引不同的是,联合索引的键 ...
- 为什么需要消息系统,mysql 不能满足需求吗?
1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据 丢失风险.许多消息队列所采用的& ...
- consumer 是推还是拉?
Kafka 最初考虑的问题是,customer 应该从 brokes 拉取消息还是 brokers 将消 息推送到 consumer,也就是 pull 还 push.在这方面,Kafka 遵循了一种大 ...
- Replicated State Machine和WAL
在阅读raft论文的时候,考虑两个问题: 为什么要用Replicated State Machine?没有其他方式吗 为什么要先写日志再应用到Replicated State Machine,直接应用 ...
- mysql常见命令参数(一)
1.mysql命令常用参数 1.--auto-rehash (tab键自动补全,表名及表字段) # mysql -u root --auto-rehash # vim my.cnf [mysql] a ...
- C++ - free()函数释放内存后的指针行为
一个指针释放后不置空的后果: free(p)之后原本那块内存的数据已经被释放了,内存重新收回.但此时的指针变量依然指向那块内存,在以后的代码中若不小心继续调用指针变量,会出现不可预料的错误. 不置空的 ...
- Java_lambda表达式之"stream流学习,Map学习,collect学习,Conllectors工具类学习"
Lambda表达式学习 对List<Integer> userIdList = UserList.stream().map(User::getUserId).collect(Collect ...
- C++ pair的基本用法总结
1,pair的应用 pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存.另一个应用是,当一个函数需要返回2个数据的时候, ...
- can总线第二讲
一 CAN总线拓扑结构CAN是一种分布式的控制总线,总线上的每一个节点一般来说都比较简单,使用MCU控制器处理CAN总线数据,完成特定的功能:通过CAN总线将各节点连接只需较少的线缆(两根线:CAN_ ...