如何配置Tomcat以连接MySQL
有人可以提供一些关于如何配置Tomcat来访问MySQL的细节吗?
-
我在Tomcat中的哪个目录下放置
mysql-connector-java-5.1.13-bin
? 我应该将它放在Tomcat 6.0\webapps\myapp\WEB-INF\lib
吗? -
我是否需要将配置添加到
context.xml
或server.xml
? -
我应该创建一个
web.xml
文件并将其放在Tomcat 6.0\webapps\myapp\WEB-INF
吗? 如果是这样,那么这个文件的内容应该是什么样的?
1:在Tomcat目录中放置
mysql-connector-java-5.1.13-bin
? 我应该将它放在Tomcat 6.0\webapps\myapp\WEB-INF\lib
吗?
这取决于连接的管理位置。 通常,您希望创建一个连接池JNDI数据源以提高连接性能。 在这种情况下,Tomcat正在管理连接并需要访问JDBC驱动程序。 然后,您应该将JAR文件放在Tomcat/lib
。
但是如果你正在使用DriverManager#getConnection()
的基本方式,那么它实际上并不重要,如果你把它放在Tomcat/lib
或YourApp/WEB-INF/lib
。 但是,您需要意识到Tomcat/lib
那个将应用于所有已部署的YourApp/WEB-INF/lib
应用程序,并且YourApp/WEB-INF/lib
那个将覆盖Tomcat/lib
中仅适用于特定YourApp/WEB-INF/lib
应用程序的那个。
2:我是否需要确认
context.xml
或server.xml
文件?
这取决于连接的管理位置。 使用JNDI数据源时,使用YourApp/META-INF/context.xml
进行配置就足够了(如果不存在YourApp/META-INF/context.xml
创建文件):
和YourApp/WEB-INF/web.xml
如下:
jdbc/yourdb javax.sql.DataSource
如果您正在使用基本的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,filter,监听器以及运行webapp的强制性内容。 该文件是标准Servlet API的一部分。
也可以看看:
- 在multithreading系统中使用静态java.sql.Connection实例是否安全?
- 我应该如何连接到基于servlet的应用程序中的JDBC数据库/数据源?
- 我在哪里为Tomcat的连接池放置JDBC驱动程序?
- DAO教程 – 基本的JDBC / DAO教程,针对Tomcat / JSP / Servlet
你的问题的答案:
- 您提到的一个选项是:将驱动程序放在WAR文件中的
WEB-INF/lib
目录下。 另一个将在$TOMCAT_HOME/lib
目录中。 后者的优点是您不需要将连接器jar复制到您在该应用程序服务器上部署的每个项目中。 缺点是在将应用程序部署到其他应用程序服务器之前,您需要记住将jar文件放在适当的位置。 - 如果您需要更改默认配置中的某些内容,请执行。 否则,有一些context.xml和server.xml文件,其中包含tomcat安装附带的默认选项。
- 您的应用程序(WAR) web.xml应位于部署文件中的
WEB-INF
目录下。 您可以在Java EE的servlet容器规范中查看该文件的已接受内容。 通常,将servlet,filter及其对应的映射放在该文件中。