tomcat jndi 连接 mysql 报 BEGIN NESTED EXCEPTION 错误的解决办法

我在 tomcat conf 目录下配置了一个jndi

<Resource  
		name="jdbc/mydb"   
		scope="Shareable"   
		type="javax.sql.DataSource"  
		factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"  
		url="jdbc:mysql://localhost:3306/mydb"  
		driverClassName ="com.mysql.jdbc.Driver"  
		username="aaa"  
		password="123456"
	/>


刚开始使用没问题,一段时间之后出现这个错误

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.io.EOFException

STACKTRACE:

java.io.EOFException
 at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1956)
 at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2368)
 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2867)
 at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 可以通过以下步骤来连接Tomcat 8.5和MySQL 8.0: 1. 下载并安装MySQL Connector/J驱动程序。 2. 将MySQL Connector/J驱动程序的JAR文件复制到Tomcat的/lib目录中。 3. 在Tomcat的context.xml文件中添加以下内容: ```xml <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="yourusername" password="yourpassword" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/yourdatabase?useSSL=false&serverTimezone=UTC"/> ``` 请注意,将“yourusername”和“yourpassword”替换为您的MySQL用户名和密码,将“yourdatabase”替换为您要连接MySQL数据库的名称。确保指定正确的驱动程序类名和JDBC URL。 4. 在您的应用程序中使用以下代码来获取数据库连接: ```java Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql"); Connection conn = ds.getConnection(); ``` 这将从TomcatJNDI环境中查找数据源,并返回一个连接MySQL数据库的Connection对象。 ### 回答2: 要将Tomcat 8.5连接MySQL 8.0,请按照以下步骤操作: 1. 首先,确保已经将MySQL数据库安装在您的机器上,并且已经启动了MySQL服务。 2. 下载MySQLJava连接器(MySQL Connector/J)。您可以访问MySQL的官方网站(https://dev.mysql.com/downloads/connector/j/)下载适用于您的操作系统的最新版本。 3. 将下载的MySQL连接器的JAR文件(通常以mysql-connector-java-x.x.xx.jar命名)放置在Tomcat服务器的/lib目录下。如果该目录不存在,请先创建该目录。 4. 配置Tomcat服务器以使用连接器。打开Tomcat的config目录中的context.xml文件。 5. 在context.xml文件中,找到`<Context>`标签,之后在该标签中添加以下内容: ```xml <Resource name="jdbc/YourDatabaseName" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="your_username" password="your_password" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/your_database_name"/> ``` 请注意,将`your_username`替换为您的MySQL用户名,`your_password`替换为您的MySQL密码,`your_database_name`替换为您要连接MySQL数据库名称。如果MySQL服务器不在本地主机上或端口号不是3306,请相应更改`url`的值。 6. 保存并关闭context.xml文件。 7. 启动Tomcat服务器。当Tomcat启动时,它将自动加载并配置MySQL连接器。 现在,您的Tomcat服务器应该能够成功连接MySQL 8.0数据库。您可以在您的代码中使用JNDI数据源名称`jdbc/YourDatabaseName`来获取与MySQL连接。 ### 回答3: 要使用Tomcat 8.5连接MySQL 8.0,需要进行以下配置步骤: 1. 首先,确保已经下载并安装了Java Development Kit(JDK)和MySQL数据库。 2. 下载适用于Tomcat 8.5的MySQL驱动程序(mysql-connector-java-5.1.xx.jar)。将其复制到Tomcat的lib目录中,通常位于$CATALINA_HOME/lib目录下。 3. 打开Tomcat的conf目录,找到server.xml文件。编辑这个文件并在<GlobalNamingResources>标签之前添加如下内容: <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> 4. 继续编辑server.xml文件,在<GlobalNamingResources>标签内添加以下内容: <Resource name="jdbc/MySQLDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8&useSSL=false" username="你的数据库用户名" password="你的数据库密码" maxTotal="20" maxIdle="10" initialSize="1" validationQuery="SELECT 1" /> 将"数据库名"、"你的数据库用户名"和"你的数据库密码"替换为实际的数据库信息。这个配置中的url参数中文字符编码、使用SSL等都根据需要进行调整。 5. 在你的应用程序中,你可以通过以下方式来访问数据库连接: Context initCtx = new InitialContext(); DataSource ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/MySQLDB"); Connection conn = ds.getConnection(); // 使用连接执行数据库操作 这样配置后,Tomcat就可以通过指定的URL连接MySQL数据库。记得在操作过程中谨慎处理数据库的安全性、权限设置等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值