EC2 Tomcat无法连接到MySQL

问题描述 投票:0回答:1

我正在研究亚马逊Linux的Amazon EC2实例,正好跟踪了this tutorial,但我无法弄清楚如何将Tomcat连接到MySQL。我是怎么做的呢?

我试过的

我遍历了/usr/share/tomcat8中的目录,并为每个目录:

  1. 将从mysql-connector-java-5.1.45-bin.jar获得的Connector / J文件here放在目录中
  2. 重启Tomcat
  3. 重新加载我的索引页面,app/index.jsp
  4. 得到一个错误:来自javax.servlet.ServletException: javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc/foo"第8行的/index.jsp

我在其他Java库中放置了一个Connector / J jar文件的副本,并将其添加到我的类路径中,尽管这种方法明显无效,因为Tomcat处理其类路径。

我已经合理地减少了我的代码,希望我做的其他事情产生了这种现象作为副作用。由于不到50行代码继续产生相同的错误,这可能不是这种情况,但从技术上讲,我还没有排除它。

我的文件

/usr/share/tomcat8/webapps/app/index.jsp

<!DOCTYPE html>
<%@ page import="java.io.*, java.util.*, java.sql.*, javax.servlet.http.*, javax.servlet.*" @>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<% Class.forName("com.mysql.jdbc.Driver").getInstance(); /* for good measure */ %>
<html>
    <body>
        <sql:query dataSource="jdbc/foo" var="result">
            SELECT name FROM Users;
        </sql:query>
        <c:forEach var="r" items="${result.rows}">
            <c:out value="${r.name}"/><br/>
        </c:forEach>
    </body>
</html>

/usr/share/tomcat8/webapps/app/META-INF/context.xml

<?xml version="1.0" encoding="utf-8"?>
<Context>
    <Resource name="jdbc/foo" auth="Container" type="javax.sql.DataSource" maxTotal="64"
              maxIdle="16" maxWaitMillis="10000" username="user" password="password"
              driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/foo"/>
</Context>

/usr/share/tomcat8/webapps/app/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true>

    <request-character-encoding>UTF-8></request-character-encoding>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <resource-ref>
        <description>Database connection</description>
        <res-ref-name>jdbc/foo</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>

我的数据库在'user'@'localhost' IDENTIFIED BY 'password'上有一个用户SELECTfoo.*特权。数据库foo有一张表Users(email varchar(127) NOT NULL PRIMARY KEY, name varchar(127) NOT NULL);

结论

我很可能错过了一些愚蠢的东西,因为这是我第一次在我的本地机器之外的Tomcat上做任何事情(顺便说一下,这样做很好)。任何人都可以找到我做错的事吗? (除了我的调试过程本身:我完全清楚这是多么可怕。)

TL / DR:我已经尝试了很多东西,Tomcat仍然无法连接到我的EC2实例上的MySQL。

编辑

要清楚,因为我被指示将mysql-connector-java-5.1.45-bin.jar放在不同的地方或者问我把它放在哪里:我已经尝试将它放在tomcat8的每个目录中。

jdbc amazon-ec2 tomcat8 mysql-connector
1个回答
0
投票

请尝试以下方法

选项1:将文件“mysql-connector-java-5.1.4.4-bin.jar”放在tomcat lib文件夹中

选项2:将文件“mysql-connector-java-5.1.4.4-bin.jar”放在应用程序“foo”的lib文件夹中

选项3:将文件“mysql-connector-java-5.1.4.4-bin.jar”放在java类路径中。

© www.soinside.com 2019 - 2024. All rights reserved.