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

时间:2013-06-12 19:12:52

标签: tomcat servlets jdbc

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

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

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

这样做有什么作用吗?我不禁感到我正在重新发明轮子。 Tomcats Connection Pool一次只能处理一个数据库吗?

1 个答案:

答案 0 :(得分:1)

您可以在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'_爪哇