Tomcat DBCP(Database Connection Pool) 数据库毗连池入门先容 ...

打印 上一主题 下一主题

主题 878|帖子 878|积分 2634

拓展阅读

从零开始手写 mybatis (三)jdbc pool 怎样从零手写实现数据库毗连池 dbcp?
万字长文深入浅出数据库毗连池 HikariCP/Commons DBCP/Tomcat/c3p0/druid 对比
Database Connection Pool 数据库毗连池概览
c3p0 数据池入门使用教程
alibaba druid 入门先容
数据库毗连池 HikariCP 性能为什么这么快?
Apache Tomcat DBCP(Database Connection Pool) 数据库毗连池-01-入门先容
vibur-dbcp 并发、快速且功能完备的 JDBC 毗连池,提供先进的性能监控功能-01-入门先容
先容一下 tomcat dbcp

Apache Tomcat DBCP(Database Connection Pool)是一个用于管理数据库毗连的组件,通常与Apache Tomcat服务器一起使用。
它提供了一种机制来有效地管理数据库毗连,以便在高负载下提供更好的性能和可伸缩性。
以下是Tomcat DBCP的一些关键特性和工作原理:

  • 毗连池管理: Tomcat DBCP通过创建和维护一组预先配置的数据库毗连来管理毗连池。这些毗连在需要时可以被应用程序使用,并在不再需要时释放回池中。
  • 毗连池参数配置: 可以通过Tomcat的配置文件(如context.xml)大概直接在应用程序中的代码中配置毗连池的各种参数,比方最大毗连数、最小毗连数、最大等待时间等。
  • 毗连池的工作流程: 当应用程序需要与数据库进行交互时,它从毗连池中请求一个数据库毗连。假如毗连池中有空闲的毗连可用,毗连池会将一个毗连分配给应用程序。一旦应用程序完成了对数据库的操纵,它将毗连返回给毗连池,以供其他应用程序使用。
  • 毗连验证: Tomcat DBCP可以配置为在从毗连池中获取毗连时验证毗连的有效性。这可以通过执行简单的SQL查询或其他情势的毗连测试来实现。这有助于确保从池中获取的毗连是可用和有效的。
  • 性能优化: 通过维护一组已经打开的数据库毗连,Tomcat DBCP可以制止在每次数据库请求时都重新创建和销毁毗连,从而提高了性能和效率。
  • 异常处理: Tomcat DBCP可以或许处理数据库毗连的异常情况,比方数据库服务器断开毗连大概毗连超时。它会实验重新建立毗连大概返回错误信息,以便应用程序可以或许得当地处理这些异常情况。
  • 监控和管理: Tomcat DBCP提供了监控和管理毗连池的功能,可以通过JMX(Java Management Extensions)接口来查看毗连池的状态、运动毗连数、空闲毗连数等信息,并且可以通过管理工具对毗连池进行操纵。
总的来说,Tomcat DBCP是一个非常有用的工具,可以资助开发人员有效地管理数据库毗连,提高应用程序的性能和可伸缩性,并且可以通过灵活的配置来满足差别应用程序的需求。
为什么 tomcat 需要 dbcp?它有链接数据库的需求吗?

Apache Tomcat作为一个Java Servlet容器和Web服务器,并不直接涉及到与数据库的毗连。
然而,很多基于Java的Web应用程序通常需要与数据库进行交互,比方从数据库中检索数据、向数据库中写入数据等操纵。
在这种情况下,Apache Tomcat可以与数据库毗连池组件(好比DBCP)结合使用,以便有效地管理数据库毗连。
以下是为什么Apache Tomcat大概需要DBCP的一些原因:

  • 数据库毗连需求: 大多数Web应用程序需要访问数据库以存储和检索数据。这些应用程序可以是基于Java的,而且通常使用JDBC(Java Database Connectivity)来与数据库进行通信。
  • 毗连受理: 直接在应用程序中创建和管理数据库毗连大概会导致一些问题,好比毗连泄漏(未精确关闭毗连导致资源泄漏)、毗连池过载(同时打开太多毗连导致性能下降)等。毗连池组件(如DBCP)可以资助解决这些问题,提供了一种更好的方式来管理和重用数据库毗连。
  • 性能优化: 使用毗连池可以显着提高性能,由于它制止了在每次数据库请求时都重新创建和销毁毗连的开销。毗连池维护了一组已经打开的数据库毗连,这些毗连可以被应用程序重复使用,从而减少了毗连的创建和销毁次数,提高了体系的性能和效率。
  • 毗连验证和异常处理: 毗连池组件通常提供了毗连验证和异常处理的功能,可以确保从池中获取的毗连是有效的,并且可以或许处理数据库毗连的异常情况,比方数据库服务器断开毗连大概毗连超时等情况。
综上所述,尽管Apache Tomcat本身并不直接涉及与数据库的毗连,但大多数基于Java的Web应用程序通常需要与数据库进行交互。
在这种情况下,结合使用Apache Tomcat和数据库毗连池组件(如DBCP)可以提供更好的毗连受理和性能优化,从而更好地满足应用程序的需求。
tomcat 为什么不直接使用 c3p0 commons-dbcp 这些已有的?而是要本身实现

Apache Tomcat 一开始确实使用了像 Commons DBCP 和 Commons Pool 这样的外部组件来管理数据库毗连池。
然而,厥后 Apache Tomcat 团队决定开发本身的毗连池实现,即 Tomcat DBCP。
这是有几个原因的:

  • 更好的集成: 将毗连池功能直接集成到 Tomcat 中可以提供更好的性能和更好的集成。这样做可以更好地与 Tomcat 内部的线程管理、类加载器和上下文生命周期等功能集成,以便提供更同等和更可靠的毗连池管理。
  • 性能优化: Apache Tomcat 团队可以更深入地了解 Tomcat 本身的内部工作原理,以优化毗连池的性能,使其更适合与 Tomcat 一起使用。本身实现的毗连池大概会针对 Tomcat 的特定需求进行优化,以提供更好的性能和可靠性。
  • 更好的控制: 通过开发本身的毗连池实现,Apache Tomcat 团队可以更好地控制毗连池的开发和维护过程。他们可以根据本身的需求进行定制和扩展,而不受外部库的限制。
  • 解决特定问题: 有时间外部库大概存在一些限制大概问题,而开发本身的实现可以更灵活地解决这些问题。大概是由于在特定的使用情况下,已有的库无法满足 Tomcat 的需求,大概为了解决一些已知的问题而决定开发本身的实现。
总的来说,Apache Tomcat 团队决定开发本身的毗连池实现是出于对性能、集成和控制的思量。这样做可以更好地满足 Tomcat 用户的需求,并提供更优秀的毗连池管理功能。
给出 tomcat dbcp 的入门使用例子

下面是一个简单的示例,演示怎样在Apache Tomcat中使用DBCP毗连池:

  • 起首,确保你已经在Tomcat的lib目录中包含了所需的JAR文件,通常包括commons-dbcp.jar和commons-pool.jar。
  • 在你的Web应用程序的WEB-INF目录下创建一个名为context.xml的文件,并在其中配置数据库毗连池。以下是一个示例context.xml文件:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Context>
  3.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  4.                maxActive="100" maxIdle="30" maxWait="10000"
  5.                username="your_username" password="your_password"
  6.                driverClassName="com.mysql.jdbc.Driver"
  7.                url="jdbc:mysql://localhost:3306/your_database"/>
  8. </Context>
复制代码
请确保将username、password和url属性替换为你的数据库毗连信息。

  • 在你的Web应用程序中,你可以通过JNDI查找来获取数据库毗连。以下是一个简单的Servlet示例,演示怎样获取数据库毗连并执行查询:
  1. import java.io.*;import java.sql.*;import javax.naming.*;import javax.servlet.*;import javax.servlet.http.*;import javax.sql.*;public class MyServlet extends HttpServlet {<?xml version="1.0" encoding="UTF-8"?>
  2. <Context>
  3.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  4.                maxActive="100" maxIdle="30" maxWait="10000"
  5.                username="your_username" password="your_password"
  6.                driverClassName="com.mysql.jdbc.Driver"
  7.                url="jdbc:mysql://localhost:3306/your_database"/>
  8. </Context>public void doGet(HttpServletRequest request, HttpServletResponse response)<?xml version="1.0" encoding="UTF-8"?>
  9. <Context>
  10.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  11.                maxActive="100" maxIdle="30" maxWait="10000"
  12.                username="your_username" password="your_password"
  13.                driverClassName="com.mysql.jdbc.Driver"
  14.                url="jdbc:mysql://localhost:3306/your_database"/>
  15. </Context><?xml version="1.0" encoding="UTF-8"?>
  16. <Context>
  17.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  18.                maxActive="100" maxIdle="30" maxWait="10000"
  19.                username="your_username" password="your_password"
  20.                driverClassName="com.mysql.jdbc.Driver"
  21.                url="jdbc:mysql://localhost:3306/your_database"/>
  22. </Context><?xml version="1.0" encoding="UTF-8"?>
  23. <Context>
  24.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  25.                maxActive="100" maxIdle="30" maxWait="10000"
  26.                username="your_username" password="your_password"
  27.                driverClassName="com.mysql.jdbc.Driver"
  28.                url="jdbc:mysql://localhost:3306/your_database"/>
  29. </Context>throws ServletException, IOException {<?xml version="1.0" encoding="UTF-8"?>
  30. <Context>
  31.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  32.                maxActive="100" maxIdle="30" maxWait="10000"
  33.                username="your_username" password="your_password"
  34.                driverClassName="com.mysql.jdbc.Driver"
  35.                url="jdbc:mysql://localhost:3306/your_database"/>
  36. </Context><?xml version="1.0" encoding="UTF-8"?>
  37. <Context>
  38.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  39.                maxActive="100" maxIdle="30" maxWait="10000"
  40.                username="your_username" password="your_password"
  41.                driverClassName="com.mysql.jdbc.Driver"
  42.                url="jdbc:mysql://localhost:3306/your_database"/>
  43. </Context>response.setContentType("text/html");<?xml version="1.0" encoding="UTF-8"?>
  44. <Context>
  45.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  46.                maxActive="100" maxIdle="30" maxWait="10000"
  47.                username="your_username" password="your_password"
  48.                driverClassName="com.mysql.jdbc.Driver"
  49.                url="jdbc:mysql://localhost:3306/your_database"/>
  50. </Context><?xml version="1.0" encoding="UTF-8"?>
  51. <Context>
  52.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  53.                maxActive="100" maxIdle="30" maxWait="10000"
  54.                username="your_username" password="your_password"
  55.                driverClassName="com.mysql.jdbc.Driver"
  56.                url="jdbc:mysql://localhost:3306/your_database"/>
  57. </Context>PrintWriter out = response.getWriter();<?xml version="1.0" encoding="UTF-8"?>
  58. <Context>
  59.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  60.                maxActive="100" maxIdle="30" maxWait="10000"
  61.                username="your_username" password="your_password"
  62.                driverClassName="com.mysql.jdbc.Driver"
  63.                url="jdbc:mysql://localhost:3306/your_database"/>
  64. </Context><?xml version="1.0" encoding="UTF-8"?>
  65. <Context>
  66.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  67.                maxActive="100" maxIdle="30" maxWait="10000"
  68.                username="your_username" password="your_password"
  69.                driverClassName="com.mysql.jdbc.Driver"
  70.                url="jdbc:mysql://localhost:3306/your_database"/>
  71. </Context>Connection conn = null;<?xml version="1.0" encoding="UTF-8"?>
  72. <Context>
  73.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  74.                maxActive="100" maxIdle="30" maxWait="10000"
  75.                username="your_username" password="your_password"
  76.                driverClassName="com.mysql.jdbc.Driver"
  77.                url="jdbc:mysql://localhost:3306/your_database"/>
  78. </Context><?xml version="1.0" encoding="UTF-8"?>
  79. <Context>
  80.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  81.                maxActive="100" maxIdle="30" maxWait="10000"
  82.                username="your_username" password="your_password"
  83.                driverClassName="com.mysql.jdbc.Driver"
  84.                url="jdbc:mysql://localhost:3306/your_database"/>
  85. </Context>try {<?xml version="1.0" encoding="UTF-8"?>
  86. <Context>
  87.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  88.                maxActive="100" maxIdle="30" maxWait="10000"
  89.                username="your_username" password="your_password"
  90.                driverClassName="com.mysql.jdbc.Driver"
  91.                url="jdbc:mysql://localhost:3306/your_database"/>
  92. </Context><?xml version="1.0" encoding="UTF-8"?>
  93. <Context>
  94.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  95.                maxActive="100" maxIdle="30" maxWait="10000"
  96.                username="your_username" password="your_password"
  97.                driverClassName="com.mysql.jdbc.Driver"
  98.                url="jdbc:mysql://localhost:3306/your_database"/>
  99. </Context><?xml version="1.0" encoding="UTF-8"?>
  100. <Context>
  101.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  102.                maxActive="100" maxIdle="30" maxWait="10000"
  103.                username="your_username" password="your_password"
  104.                driverClassName="com.mysql.jdbc.Driver"
  105.                url="jdbc:mysql://localhost:3306/your_database"/>
  106. </Context>// 查找上下文中的数据库毗连池<?xml version="1.0" encoding="UTF-8"?>
  107. <Context>
  108.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  109.                maxActive="100" maxIdle="30" maxWait="10000"
  110.                username="your_username" password="your_password"
  111.                driverClassName="com.mysql.jdbc.Driver"
  112.                url="jdbc:mysql://localhost:3306/your_database"/>
  113. </Context><?xml version="1.0" encoding="UTF-8"?>
  114. <Context>
  115.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  116.                maxActive="100" maxIdle="30" maxWait="10000"
  117.                username="your_username" password="your_password"
  118.                driverClassName="com.mysql.jdbc.Driver"
  119.                url="jdbc:mysql://localhost:3306/your_database"/>
  120. </Context><?xml version="1.0" encoding="UTF-8"?>
  121. <Context>
  122.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  123.                maxActive="100" maxIdle="30" maxWait="10000"
  124.                username="your_username" password="your_password"
  125.                driverClassName="com.mysql.jdbc.Driver"
  126.                url="jdbc:mysql://localhost:3306/your_database"/>
  127. </Context>Context ctx = new InitialContext();<?xml version="1.0" encoding="UTF-8"?>
  128. <Context>
  129.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  130.                maxActive="100" maxIdle="30" maxWait="10000"
  131.                username="your_username" password="your_password"
  132.                driverClassName="com.mysql.jdbc.Driver"
  133.                url="jdbc:mysql://localhost:3306/your_database"/>
  134. </Context><?xml version="1.0" encoding="UTF-8"?>
  135. <Context>
  136.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  137.                maxActive="100" maxIdle="30" maxWait="10000"
  138.                username="your_username" password="your_password"
  139.                driverClassName="com.mysql.jdbc.Driver"
  140.                url="jdbc:mysql://localhost:3306/your_database"/>
  141. </Context><?xml version="1.0" encoding="UTF-8"?>
  142. <Context>
  143.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  144.                maxActive="100" maxIdle="30" maxWait="10000"
  145.                username="your_username" password="your_password"
  146.                driverClassName="com.mysql.jdbc.Driver"
  147.                url="jdbc:mysql://localhost:3306/your_database"/>
  148. </Context>DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/TestDB");<?xml version="1.0" encoding="UTF-8"?>
  149. <Context>
  150.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  151.                maxActive="100" maxIdle="30" maxWait="10000"
  152.                username="your_username" password="your_password"
  153.                driverClassName="com.mysql.jdbc.Driver"
  154.                url="jdbc:mysql://localhost:3306/your_database"/>
  155. </Context><?xml version="1.0" encoding="UTF-8"?>
  156. <Context>
  157.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  158.                maxActive="100" maxIdle="30" maxWait="10000"
  159.                username="your_username" password="your_password"
  160.                driverClassName="com.mysql.jdbc.Driver"
  161.                url="jdbc:mysql://localhost:3306/your_database"/>
  162. </Context><?xml version="1.0" encoding="UTF-8"?>
  163. <Context>
  164.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  165.                maxActive="100" maxIdle="30" maxWait="10000"
  166.                username="your_username" password="your_password"
  167.                driverClassName="com.mysql.jdbc.Driver"
  168.                url="jdbc:mysql://localhost:3306/your_database"/>
  169. </Context>// 从毗连池获取毗连<?xml version="1.0" encoding="UTF-8"?>
  170. <Context>
  171.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  172.                maxActive="100" maxIdle="30" maxWait="10000"
  173.                username="your_username" password="your_password"
  174.                driverClassName="com.mysql.jdbc.Driver"
  175.                url="jdbc:mysql://localhost:3306/your_database"/>
  176. </Context><?xml version="1.0" encoding="UTF-8"?>
  177. <Context>
  178.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  179.                maxActive="100" maxIdle="30" maxWait="10000"
  180.                username="your_username" password="your_password"
  181.                driverClassName="com.mysql.jdbc.Driver"
  182.                url="jdbc:mysql://localhost:3306/your_database"/>
  183. </Context><?xml version="1.0" encoding="UTF-8"?>
  184. <Context>
  185.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  186.                maxActive="100" maxIdle="30" maxWait="10000"
  187.                username="your_username" password="your_password"
  188.                driverClassName="com.mysql.jdbc.Driver"
  189.                url="jdbc:mysql://localhost:3306/your_database"/>
  190. </Context>conn = ds.getConnection();<?xml version="1.0" encoding="UTF-8"?>
  191. <Context>
  192.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  193.                maxActive="100" maxIdle="30" maxWait="10000"
  194.                username="your_username" password="your_password"
  195.                driverClassName="com.mysql.jdbc.Driver"
  196.                url="jdbc:mysql://localhost:3306/your_database"/>
  197. </Context><?xml version="1.0" encoding="UTF-8"?>
  198. <Context>
  199.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  200.                maxActive="100" maxIdle="30" maxWait="10000"
  201.                username="your_username" password="your_password"
  202.                driverClassName="com.mysql.jdbc.Driver"
  203.                url="jdbc:mysql://localhost:3306/your_database"/>
  204. </Context><?xml version="1.0" encoding="UTF-8"?>
  205. <Context>
  206.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  207.                maxActive="100" maxIdle="30" maxWait="10000"
  208.                username="your_username" password="your_password"
  209.                driverClassName="com.mysql.jdbc.Driver"
  210.                url="jdbc:mysql://localhost:3306/your_database"/>
  211. </Context>// 执行查询<?xml version="1.0" encoding="UTF-8"?>
  212. <Context>
  213.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  214.                maxActive="100" maxIdle="30" maxWait="10000"
  215.                username="your_username" password="your_password"
  216.                driverClassName="com.mysql.jdbc.Driver"
  217.                url="jdbc:mysql://localhost:3306/your_database"/>
  218. </Context><?xml version="1.0" encoding="UTF-8"?>
  219. <Context>
  220.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  221.                maxActive="100" maxIdle="30" maxWait="10000"
  222.                username="your_username" password="your_password"
  223.                driverClassName="com.mysql.jdbc.Driver"
  224.                url="jdbc:mysql://localhost:3306/your_database"/>
  225. </Context><?xml version="1.0" encoding="UTF-8"?>
  226. <Context>
  227.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  228.                maxActive="100" maxIdle="30" maxWait="10000"
  229.                username="your_username" password="your_password"
  230.                driverClassName="com.mysql.jdbc.Driver"
  231.                url="jdbc:mysql://localhost:3306/your_database"/>
  232. </Context>Statement stmt = conn.createStatement();<?xml version="1.0" encoding="UTF-8"?>
  233. <Context>
  234.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  235.                maxActive="100" maxIdle="30" maxWait="10000"
  236.                username="your_username" password="your_password"
  237.                driverClassName="com.mysql.jdbc.Driver"
  238.                url="jdbc:mysql://localhost:3306/your_database"/>
  239. </Context><?xml version="1.0" encoding="UTF-8"?>
  240. <Context>
  241.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  242.                maxActive="100" maxIdle="30" maxWait="10000"
  243.                username="your_username" password="your_password"
  244.                driverClassName="com.mysql.jdbc.Driver"
  245.                url="jdbc:mysql://localhost:3306/your_database"/>
  246. </Context><?xml version="1.0" encoding="UTF-8"?>
  247. <Context>
  248.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  249.                maxActive="100" maxIdle="30" maxWait="10000"
  250.                username="your_username" password="your_password"
  251.                driverClassName="com.mysql.jdbc.Driver"
  252.                url="jdbc:mysql://localhost:3306/your_database"/>
  253. </Context>ResultSet rs = stmt.executeQuery("SELECT * FROM your_table");<?xml version="1.0" encoding="UTF-8"?>
  254. <Context>
  255.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  256.                maxActive="100" maxIdle="30" maxWait="10000"
  257.                username="your_username" password="your_password"
  258.                driverClassName="com.mysql.jdbc.Driver"
  259.                url="jdbc:mysql://localhost:3306/your_database"/>
  260. </Context><?xml version="1.0" encoding="UTF-8"?>
  261. <Context>
  262.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  263.                maxActive="100" maxIdle="30" maxWait="10000"
  264.                username="your_username" password="your_password"
  265.                driverClassName="com.mysql.jdbc.Driver"
  266.                url="jdbc:mysql://localhost:3306/your_database"/>
  267. </Context><?xml version="1.0" encoding="UTF-8"?>
  268. <Context>
  269.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  270.                maxActive="100" maxIdle="30" maxWait="10000"
  271.                username="your_username" password="your_password"
  272.                driverClassName="com.mysql.jdbc.Driver"
  273.                url="jdbc:mysql://localhost:3306/your_database"/>
  274. </Context>while (rs.next()) {<?xml version="1.0" encoding="UTF-8"?>
  275. <Context>
  276.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  277.                maxActive="100" maxIdle="30" maxWait="10000"
  278.                username="your_username" password="your_password"
  279.                driverClassName="com.mysql.jdbc.Driver"
  280.                url="jdbc:mysql://localhost:3306/your_database"/>
  281. </Context><?xml version="1.0" encoding="UTF-8"?>
  282. <Context>
  283.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  284.                maxActive="100" maxIdle="30" maxWait="10000"
  285.                username="your_username" password="your_password"
  286.                driverClassName="com.mysql.jdbc.Driver"
  287.                url="jdbc:mysql://localhost:3306/your_database"/>
  288. </Context><?xml version="1.0" encoding="UTF-8"?>
  289. <Context>
  290.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  291.                maxActive="100" maxIdle="30" maxWait="10000"
  292.                username="your_username" password="your_password"
  293.                driverClassName="com.mysql.jdbc.Driver"
  294.                url="jdbc:mysql://localhost:3306/your_database"/>
  295. </Context><?xml version="1.0" encoding="UTF-8"?>
  296. <Context>
  297.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  298.                maxActive="100" maxIdle="30" maxWait="10000"
  299.                username="your_username" password="your_password"
  300.                driverClassName="com.mysql.jdbc.Driver"
  301.                url="jdbc:mysql://localhost:3306/your_database"/>
  302. </Context>out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name"));<?xml version="1.0" encoding="UTF-8"?>
  303. <Context>
  304.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  305.                maxActive="100" maxIdle="30" maxWait="10000"
  306.                username="your_username" password="your_password"
  307.                driverClassName="com.mysql.jdbc.Driver"
  308.                url="jdbc:mysql://localhost:3306/your_database"/>
  309. </Context><?xml version="1.0" encoding="UTF-8"?>
  310. <Context>
  311.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  312.                maxActive="100" maxIdle="30" maxWait="10000"
  313.                username="your_username" password="your_password"
  314.                driverClassName="com.mysql.jdbc.Driver"
  315.                url="jdbc:mysql://localhost:3306/your_database"/>
  316. </Context><?xml version="1.0" encoding="UTF-8"?>
  317. <Context>
  318.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  319.                maxActive="100" maxIdle="30" maxWait="10000"
  320.                username="your_username" password="your_password"
  321.                driverClassName="com.mysql.jdbc.Driver"
  322.                url="jdbc:mysql://localhost:3306/your_database"/>
  323. </Context><?xml version="1.0" encoding="UTF-8"?>
  324. <Context>
  325.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  326.                maxActive="100" maxIdle="30" maxWait="10000"
  327.                username="your_username" password="your_password"
  328.                driverClassName="com.mysql.jdbc.Driver"
  329.                url="jdbc:mysql://localhost:3306/your_database"/>
  330. </Context>out.println("
  331. ");<?xml version="1.0" encoding="UTF-8"?>
  332. <Context>
  333.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  334.                maxActive="100" maxIdle="30" maxWait="10000"
  335.                username="your_username" password="your_password"
  336.                driverClassName="com.mysql.jdbc.Driver"
  337.                url="jdbc:mysql://localhost:3306/your_database"/>
  338. </Context><?xml version="1.0" encoding="UTF-8"?>
  339. <Context>
  340.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  341.                maxActive="100" maxIdle="30" maxWait="10000"
  342.                username="your_username" password="your_password"
  343.                driverClassName="com.mysql.jdbc.Driver"
  344.                url="jdbc:mysql://localhost:3306/your_database"/>
  345. </Context><?xml version="1.0" encoding="UTF-8"?>
  346. <Context>
  347.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  348.                maxActive="100" maxIdle="30" maxWait="10000"
  349.                username="your_username" password="your_password"
  350.                driverClassName="com.mysql.jdbc.Driver"
  351.                url="jdbc:mysql://localhost:3306/your_database"/>
  352. </Context>}<?xml version="1.0" encoding="UTF-8"?>
  353. <Context>
  354.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  355.                maxActive="100" maxIdle="30" maxWait="10000"
  356.                username="your_username" password="your_password"
  357.                driverClassName="com.mysql.jdbc.Driver"
  358.                url="jdbc:mysql://localhost:3306/your_database"/>
  359. </Context><?xml version="1.0" encoding="UTF-8"?>
  360. <Context>
  361.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  362.                maxActive="100" maxIdle="30" maxWait="10000"
  363.                username="your_username" password="your_password"
  364.                driverClassName="com.mysql.jdbc.Driver"
  365.                url="jdbc:mysql://localhost:3306/your_database"/>
  366. </Context>} catch (Exception e) {<?xml version="1.0" encoding="UTF-8"?>
  367. <Context>
  368.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  369.                maxActive="100" maxIdle="30" maxWait="10000"
  370.                username="your_username" password="your_password"
  371.                driverClassName="com.mysql.jdbc.Driver"
  372.                url="jdbc:mysql://localhost:3306/your_database"/>
  373. </Context><?xml version="1.0" encoding="UTF-8"?>
  374. <Context>
  375.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  376.                maxActive="100" maxIdle="30" maxWait="10000"
  377.                username="your_username" password="your_password"
  378.                driverClassName="com.mysql.jdbc.Driver"
  379.                url="jdbc:mysql://localhost:3306/your_database"/>
  380. </Context><?xml version="1.0" encoding="UTF-8"?>
  381. <Context>
  382.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  383.                maxActive="100" maxIdle="30" maxWait="10000"
  384.                username="your_username" password="your_password"
  385.                driverClassName="com.mysql.jdbc.Driver"
  386.                url="jdbc:mysql://localhost:3306/your_database"/>
  387. </Context>e.printStackTrace();<?xml version="1.0" encoding="UTF-8"?>
  388. <Context>
  389.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  390.                maxActive="100" maxIdle="30" maxWait="10000"
  391.                username="your_username" password="your_password"
  392.                driverClassName="com.mysql.jdbc.Driver"
  393.                url="jdbc:mysql://localhost:3306/your_database"/>
  394. </Context><?xml version="1.0" encoding="UTF-8"?>
  395. <Context>
  396.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  397.                maxActive="100" maxIdle="30" maxWait="10000"
  398.                username="your_username" password="your_password"
  399.                driverClassName="com.mysql.jdbc.Driver"
  400.                url="jdbc:mysql://localhost:3306/your_database"/>
  401. </Context>} finally {<?xml version="1.0" encoding="UTF-8"?>
  402. <Context>
  403.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  404.                maxActive="100" maxIdle="30" maxWait="10000"
  405.                username="your_username" password="your_password"
  406.                driverClassName="com.mysql.jdbc.Driver"
  407.                url="jdbc:mysql://localhost:3306/your_database"/>
  408. </Context><?xml version="1.0" encoding="UTF-8"?>
  409. <Context>
  410.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  411.                maxActive="100" maxIdle="30" maxWait="10000"
  412.                username="your_username" password="your_password"
  413.                driverClassName="com.mysql.jdbc.Driver"
  414.                url="jdbc:mysql://localhost:3306/your_database"/>
  415. </Context><?xml version="1.0" encoding="UTF-8"?>
  416. <Context>
  417.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  418.                maxActive="100" maxIdle="30" maxWait="10000"
  419.                username="your_username" password="your_password"
  420.                driverClassName="com.mysql.jdbc.Driver"
  421.                url="jdbc:mysql://localhost:3306/your_database"/>
  422. </Context>// 关闭毗连<?xml version="1.0" encoding="UTF-8"?>
  423. <Context>
  424.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  425.                maxActive="100" maxIdle="30" maxWait="10000"
  426.                username="your_username" password="your_password"
  427.                driverClassName="com.mysql.jdbc.Driver"
  428.                url="jdbc:mysql://localhost:3306/your_database"/>
  429. </Context><?xml version="1.0" encoding="UTF-8"?>
  430. <Context>
  431.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  432.                maxActive="100" maxIdle="30" maxWait="10000"
  433.                username="your_username" password="your_password"
  434.                driverClassName="com.mysql.jdbc.Driver"
  435.                url="jdbc:mysql://localhost:3306/your_database"/>
  436. </Context><?xml version="1.0" encoding="UTF-8"?>
  437. <Context>
  438.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  439.                maxActive="100" maxIdle="30" maxWait="10000"
  440.                username="your_username" password="your_password"
  441.                driverClassName="com.mysql.jdbc.Driver"
  442.                url="jdbc:mysql://localhost:3306/your_database"/>
  443. </Context>try {<?xml version="1.0" encoding="UTF-8"?>
  444. <Context>
  445.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  446.                maxActive="100" maxIdle="30" maxWait="10000"
  447.                username="your_username" password="your_password"
  448.                driverClassName="com.mysql.jdbc.Driver"
  449.                url="jdbc:mysql://localhost:3306/your_database"/>
  450. </Context><?xml version="1.0" encoding="UTF-8"?>
  451. <Context>
  452.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  453.                maxActive="100" maxIdle="30" maxWait="10000"
  454.                username="your_username" password="your_password"
  455.                driverClassName="com.mysql.jdbc.Driver"
  456.                url="jdbc:mysql://localhost:3306/your_database"/>
  457. </Context><?xml version="1.0" encoding="UTF-8"?>
  458. <Context>
  459.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  460.                maxActive="100" maxIdle="30" maxWait="10000"
  461.                username="your_username" password="your_password"
  462.                driverClassName="com.mysql.jdbc.Driver"
  463.                url="jdbc:mysql://localhost:3306/your_database"/>
  464. </Context><?xml version="1.0" encoding="UTF-8"?>
  465. <Context>
  466.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  467.                maxActive="100" maxIdle="30" maxWait="10000"
  468.                username="your_username" password="your_password"
  469.                driverClassName="com.mysql.jdbc.Driver"
  470.                url="jdbc:mysql://localhost:3306/your_database"/>
  471. </Context>if (conn != null)<?xml version="1.0" encoding="UTF-8"?>
  472. <Context>
  473.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  474.                maxActive="100" maxIdle="30" maxWait="10000"
  475.                username="your_username" password="your_password"
  476.                driverClassName="com.mysql.jdbc.Driver"
  477.                url="jdbc:mysql://localhost:3306/your_database"/>
  478. </Context><?xml version="1.0" encoding="UTF-8"?>
  479. <Context>
  480.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  481.                maxActive="100" maxIdle="30" maxWait="10000"
  482.                username="your_username" password="your_password"
  483.                driverClassName="com.mysql.jdbc.Driver"
  484.                url="jdbc:mysql://localhost:3306/your_database"/>
  485. </Context><?xml version="1.0" encoding="UTF-8"?>
  486. <Context>
  487.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  488.                maxActive="100" maxIdle="30" maxWait="10000"
  489.                username="your_username" password="your_password"
  490.                driverClassName="com.mysql.jdbc.Driver"
  491.                url="jdbc:mysql://localhost:3306/your_database"/>
  492. </Context><?xml version="1.0" encoding="UTF-8"?>
  493. <Context>
  494.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  495.                maxActive="100" maxIdle="30" maxWait="10000"
  496.                username="your_username" password="your_password"
  497.                driverClassName="com.mysql.jdbc.Driver"
  498.                url="jdbc:mysql://localhost:3306/your_database"/>
  499. </Context><?xml version="1.0" encoding="UTF-8"?>
  500. <Context>
  501.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  502.                maxActive="100" maxIdle="30" maxWait="10000"
  503.                username="your_username" password="your_password"
  504.                driverClassName="com.mysql.jdbc.Driver"
  505.                url="jdbc:mysql://localhost:3306/your_database"/>
  506. </Context>conn.close();<?xml version="1.0" encoding="UTF-8"?>
  507. <Context>
  508.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  509.                maxActive="100" maxIdle="30" maxWait="10000"
  510.                username="your_username" password="your_password"
  511.                driverClassName="com.mysql.jdbc.Driver"
  512.                url="jdbc:mysql://localhost:3306/your_database"/>
  513. </Context><?xml version="1.0" encoding="UTF-8"?>
  514. <Context>
  515.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  516.                maxActive="100" maxIdle="30" maxWait="10000"
  517.                username="your_username" password="your_password"
  518.                driverClassName="com.mysql.jdbc.Driver"
  519.                url="jdbc:mysql://localhost:3306/your_database"/>
  520. </Context><?xml version="1.0" encoding="UTF-8"?>
  521. <Context>
  522.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  523.                maxActive="100" maxIdle="30" maxWait="10000"
  524.                username="your_username" password="your_password"
  525.                driverClassName="com.mysql.jdbc.Driver"
  526.                url="jdbc:mysql://localhost:3306/your_database"/>
  527. </Context>} catch (SQLException e) {<?xml version="1.0" encoding="UTF-8"?>
  528. <Context>
  529.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  530.                maxActive="100" maxIdle="30" maxWait="10000"
  531.                username="your_username" password="your_password"
  532.                driverClassName="com.mysql.jdbc.Driver"
  533.                url="jdbc:mysql://localhost:3306/your_database"/>
  534. </Context><?xml version="1.0" encoding="UTF-8"?>
  535. <Context>
  536.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  537.                maxActive="100" maxIdle="30" maxWait="10000"
  538.                username="your_username" password="your_password"
  539.                driverClassName="com.mysql.jdbc.Driver"
  540.                url="jdbc:mysql://localhost:3306/your_database"/>
  541. </Context><?xml version="1.0" encoding="UTF-8"?>
  542. <Context>
  543.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  544.                maxActive="100" maxIdle="30" maxWait="10000"
  545.                username="your_username" password="your_password"
  546.                driverClassName="com.mysql.jdbc.Driver"
  547.                url="jdbc:mysql://localhost:3306/your_database"/>
  548. </Context><?xml version="1.0" encoding="UTF-8"?>
  549. <Context>
  550.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  551.                maxActive="100" maxIdle="30" maxWait="10000"
  552.                username="your_username" password="your_password"
  553.                driverClassName="com.mysql.jdbc.Driver"
  554.                url="jdbc:mysql://localhost:3306/your_database"/>
  555. </Context>e.printStackTrace();<?xml version="1.0" encoding="UTF-8"?>
  556. <Context>
  557.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  558.                maxActive="100" maxIdle="30" maxWait="10000"
  559.                username="your_username" password="your_password"
  560.                driverClassName="com.mysql.jdbc.Driver"
  561.                url="jdbc:mysql://localhost:3306/your_database"/>
  562. </Context><?xml version="1.0" encoding="UTF-8"?>
  563. <Context>
  564.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  565.                maxActive="100" maxIdle="30" maxWait="10000"
  566.                username="your_username" password="your_password"
  567.                driverClassName="com.mysql.jdbc.Driver"
  568.                url="jdbc:mysql://localhost:3306/your_database"/>
  569. </Context><?xml version="1.0" encoding="UTF-8"?>
  570. <Context>
  571.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  572.                maxActive="100" maxIdle="30" maxWait="10000"
  573.                username="your_username" password="your_password"
  574.                driverClassName="com.mysql.jdbc.Driver"
  575.                url="jdbc:mysql://localhost:3306/your_database"/>
  576. </Context>}<?xml version="1.0" encoding="UTF-8"?>
  577. <Context>
  578.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  579.                maxActive="100" maxIdle="30" maxWait="10000"
  580.                username="your_username" password="your_password"
  581.                driverClassName="com.mysql.jdbc.Driver"
  582.                url="jdbc:mysql://localhost:3306/your_database"/>
  583. </Context><?xml version="1.0" encoding="UTF-8"?>
  584. <Context>
  585.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  586.                maxActive="100" maxIdle="30" maxWait="10000"
  587.                username="your_username" password="your_password"
  588.                driverClassName="com.mysql.jdbc.Driver"
  589.                url="jdbc:mysql://localhost:3306/your_database"/>
  590. </Context>}<?xml version="1.0" encoding="UTF-8"?>
  591. <Context>
  592.     <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  593.                maxActive="100" maxIdle="30" maxWait="10000"
  594.                username="your_username" password="your_password"
  595.                driverClassName="com.mysql.jdbc.Driver"
  596.                url="jdbc:mysql://localhost:3306/your_database"/>
  597. </Context>}}
复制代码
确保将上述代码中的your_table替换为你要查询的实际数据库表名。

  • 部署你的Web应用程序到Tomcat服务器,并访问相应的URL以查看结果。
请注意,以上示例只是一个简单的演示,实际上在生产环境中需要进行更多的配置和错误处理。
参考资料

https://github.com/apache/tomcat/tree/main/java/org/apache/tomcat/dbcp
https://github.com/seaswalker/tomcat-jdbc-notes/blob/master/note/note.md

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表