tomcat - Java servlet (tomcat) 跟踪到多个数据库的多个 jdbc 连接

标签 tomcat servlets jdbc

我正在使用 Tomcat 7 构建一个 Web 应用程序,它可以让团队成员直接访问任意数量的数据库(可以是任何类型。MySQL、Oracle 等)。

可能的数据库数量可能有几十个,它们的连接详细信息存储在应用程序自己的数据库中。

我正在寻找一种处理连接和连接池的方法。我无法决定如何处理连接的打开和关闭。我知道我不想为每个请求或每个 session 打开一个连接。我曾想过创建一个全局 HashMap 来存储当前打开的连接池,并创建一个进程来使未使用的连接池过期。

有什么东西可以做到这一点吗?我忍不住觉得我正在重新发明轮子。 Tomcats 连接池一次只能处理一个数据库,对吗?

最佳答案

您可以在您的 servlet 中实例化 Tomcat 的连接池。

它应该是这样的:

public class YourServlet extends HttpServlet {

  private DataSource ds;

  public void init(ServletConfig config) throws ServletException {
    org.apache.tomcat.jdbc.pool.PoolProperties prop;
    prop = new org.apache.tomcat.jdbc.pool.PoolProperties();
    prop.setUrl("jdbc:mysql://localhost:3306/foo");
    prop.setDriverClassName("com.mysql.jdbc.Driver");
    prop.setUsername("user");
    prop.setPassword("password");

    org.apache.tomcat.jdbc.pool.DataSource dataSource;
    dataSource = new org.apache.tomcat.jdbc.pool.DataSource();
    dataSource.setPoolProperties(prop);

    ds = dataSource;
  }

  protected void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException {
    Connection conn = ds.getConnection();
    ...
  }

详情请引用以下文档:

http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Plain_Ol '_Java

关于tomcat - Java servlet (tomcat) 跟踪到多个数据库的多个 jdbc 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17073443/

相关文章:

tomcat - java.io.NotSerializableException:org.saiku.datasources.connection.SaikuOlapConnection

java - 使用 Apache poi 和 servlets 创建多个工作表

tomcat - 在 servlet 应用程序中保存上传文件的推荐方法

java - getParameter 对于 post 和 get 操作的行为是什么?

java - 如何使用异步线程调整/分析线程池配置?

mysql - 将 csv 加载到 mysql 表中

java - JDBC 中的表列标题不正确

java - org.apache.derby.jdbc.ClientDriver 在哪里?

java - 无法加载在 Docker 中运行的 Spring Boot 应用程序

java - 文件夹安装后出现 FileNotFoundException?