如何配置Tomcat连接MySQL

Posted

技术标签:

【中文标题】如何配置Tomcat连接MySQL【英文标题】:How to configure Tomcat to connect with MySQL 【发布时间】:2011-03-29 22:46:51 【问题描述】:

谁能提供一些关于如何配置 Tomcat 以访问 mysql 的详细信息?

    我应该将mysql-connector-java-5.1.13-bin 放在Tomcat 的哪个目录中?我应该把它放在Tomcat 6.0\webapps\myapp\WEB-INF\lib 下吗?

    是否需要向context.xmlserver.xml 添加配置?

    我应该创建一个web.xml 文件并将其放在Tomcat 6.0\webapps\myapp\WEB-INF 下吗?如果是这样,那么这个文件的内容应该是什么样的?

【问题讨论】:

【参考方案1】:

1: 将mysql-connector-java-5.1.13-bin 放在Tomcat 目录的什么位置?我应该把它放在Tomcat 6.0\webapps\myapp\WEB-INF\lib下面吗?

这取决于要管理连接的位置。通常,您希望创建一个连接池 JNDI 数据源以提高连接性能。在这种情况下,Tomcat 正在管理连接并且需要访问 JDBC 驱动程序。然后,您应该将 JAR 文件放入 Tomcat/lib

但是,如果您使用DriverManager#getConnection() 以基本方式进行操作,那么实际上将其放入Tomcat/libYourApp/WEB-INF/lib 并不重要。但是,您需要意识到 Tomcat/lib 中的一个将适用于所有部署的 webapp,YourApp/WEB-INF/lib 中的一个将覆盖 Tomcat/lib 中的一个,仅适用于特定的 webapp。


2:我需要确认context.xmlserver.xml 文件吗?

这取决于要管理连接的位置。使用 JNDI 数据源时,使用YourApp/META-INF/context.xml 配置它就足够了,如下所示(如果不存在则创建文件):

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource
        name="jdbc/yourdb" type="javax.sql.DataSource"
        maxActive="100" maxIdle="30" maxWait="10000" 
        url="jdbc:mysql://localhost:3306/yourdb"
        driverClassName="com.mysql.jdbc.Driver"
        username="yourname" password="yourpass"
    />
</Context>

YourApp/WEB-INF/web.xml如下:

<resource-env-ref>
    <resource-env-ref-name>jdbc/yourdb</resource-env-ref-name>
    <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
</resource-env-ref>

如果您使用基本的DriverManager 方式,那么一切都取决于您。硬编码、属性文件、XML 文件等。你应该自己管理。 Tomcat 不会(也不能)为您做任何有用的事情。

应该注意YourApp/META-INF/context.xml 是特定于 Tomcat 和克隆的。每个 servletcontainer/appserver 都有自己定义 JNDI 资源的方式。例如,在 Glassfish 中,您希望通过基于 Web 的管理界面来执行此操作。


3: 我应该写web.xml 文件并且需要放在Tomcat 6.0\webapps\myapp\WEB-INF 下吗?如果是,那么文件的内容应该是什么?

您应该始终提供一个。不仅要配置资源,还要定义 servlet、过滤器、侦听器以及运行 webapp 所需的那些东西。该文件是标准 Servlet API 的一部分。

另见:

Is it safe to use a static java.sql.Connection instance in a multithreaded system? How should I connect to JDBC database / datasource in a servlet based application? Where do I have to place the JDBC driver for Tomcat's connection pool? DAO Tutorial - basic JDBC/DAO tutorial, targeted on Tomcat/JSP/Servlet

【讨论】:

【参考方案2】:

你的问题的答案:

    您提到的一个选项是:将驱动程序放在 WAR 文件中的WEB-INF/lib 目录下。另一个将在$TOMCAT_HOME/lib 目录中。后者的优点是您不需要将连接器 jar 复制到您在该应用程序服务器上部署的每个项目中。缺点是您需要记住在将应用程序部署到不同的应用程序服务器之前放置 jar 文件。 如果您需要更改默认配置中的某些内容,可以。否则,有 context.xmlserver.xml 文件,它们带有随 tomcat 安装提供的默认选项。 您的应用程序 (WAR) web.xml 应位于部署文件中的 WEB-INF 目录下。您可以在 Java EE 的 servlet 容器规范中查看该文件接受的内容。通常,您将 servlet、过滤器及其对应的映射放在该文件中。

【讨论】:

以上是关于如何配置Tomcat连接MySQL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Tomcat 7 中使用 MySql 连接池设置领域?

tomcat服务器连接MySQL数据库的JNDI数据源配置以及获得连接的Java代码

Tomcat7和mysql连接池dbcp方式的配置方法和测试

Tomcat登陆mysql的密码设置

FineReport 部署到tomcat后配置jndi连接

Tomcat优化-提高并发