Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jsp tomcat中带有netbeans的c3p0连接池_Java_Jsp_Web_Connection Pooling_C3p0 - Fatal编程技术网

Java jsp tomcat中带有netbeans的c3p0连接池

Java jsp tomcat中带有netbeans的c3p0连接池,java,jsp,web,connection-pooling,c3p0,Java,Jsp,Web,Connection Pooling,C3p0,我正在jsp中执行连接池操作。 我在一个名为MCE_Server.java的特定类中创建了一个静态函数,并包括以下内容 public static void makeConnectionPool() { try { cpds = new ComboPooledDataSource(); cpds.setDriverClass("com.mysql.jdbc.Driver"); cpds.setJdbcUrl("jdbc:mysq

我正在jsp中执行连接池操作。 我在一个名为MCE_Server.java的特定类中创建了一个静态函数,并包括以下内容

 public static void makeConnectionPool()
 {
    try
    {
        cpds = new ComboPooledDataSource();
        cpds.setDriverClass("com.mysql.jdbc.Driver");
        cpds.setJdbcUrl("jdbc:mysql://localhost:3306/mce_db");
        cpds.setUser("root");
        cpds.setPassword("xxxxxx");
        cpds.setMaxPoolSize(100);
        cpds.setMinPoolSize(10);
        cpds.setAcquireIncrement(20);
    } 
    catch (PropertyVetoException ex) 
    {

        Logger.getLogger(MCE_Server.class.getName()).log(Level.SEVERE, null, ex);
    }

 }
从jsp页面调用以下静态函数

http://................/dbActivatePage.jsp

我在其中包含了函数

      <%@page import="xxxxx.MCE_Server"%>
      <html>
      .
      .
      .
      <body>
      <%
              MCE_Server.makeConnectionPool();
      %>
      .
      .
      .
      </body>
      </html>
i、 e当我需要连接时。我将包括
MCE\u Server.getConnectionfromPool()

现在我遇到的问题是我收到了一个错误

java.sql.SQLException:无法从基础数据库获取连接

为什么我会得到这个……?

关于进一步的试错法。。。。我发现代码下面的语句
cpds=new-ComboPooledDataSource()正在执行


那么,这里可能有什么问题。我的方法正确吗?

这不是一个好方法。每次客户端访问您的页面时,JSP中的内容都会被执行。每个web应用程序只能创建一次连接池,而不是每个用户请求创建一次

我最喜欢的在web应用程序中设置连接池的方法是设置ServletContextListener,它在contextInitialized(ServletContextEvent sce)中创建连接池,并将其绑定到应用程序范围中的名称(即设置ServletContext属性)。应在ServletContextListener的contextDestroyed方法中关闭该池


如果这看起来工作量太大,只需将makeConnectionPool()更改为私有方法,并仅从静态初始值设定项块内部调用它。完全摆脱。然后,在加载MCE_服务器类时,只调用一次makeConnectionPool()。但是,由于您从未破坏池,如果卸载并热重新部署应用程序(即在不退出Servlet容器的JVM的情况下修改并重新加载war文件),您将发现线程和其他资源泄漏。

这不是一个好方法。每次客户端访问您的页面时,JSP中的内容都会被执行。每个web应用程序只能创建一次连接池,而不是每个用户请求创建一次

我最喜欢的在web应用程序中设置连接池的方法是设置ServletContextListener,它在contextInitialized(ServletContextEvent sce)中创建连接池,并将其绑定到应用程序范围中的名称(即设置ServletContext属性)。应在ServletContextListener的contextDestroyed方法中关闭该池


如果这看起来工作量太大,只需将makeConnectionPool()更改为私有方法,并仅从静态初始值设定项块内部调用它。完全摆脱。然后,在加载MCE_服务器类时,只调用一次makeConnectionPool()。但是,由于您从未破坏池,如果卸载并热重新部署应用程序(即,在不退出Servlet容器的JVM的情况下修改并重新加载war文件),您将发现线程和其他资源泄漏。

请查看显示的错误

java.sql.SQLException:无法从基础数据库获取连接


虽然我同意Waldman使用ServletContextListener的想法,但您的c3p0配置似乎是正确的。在您的情况下,我坚信问题与mysql类路径有关。请检查您是否正确包含mysql连接器。

请仔细查看显示的错误

java.sql.SQLException:无法从基础数据库获取连接


虽然我同意Waldman使用ServletContextListener的想法,但您的c3p0配置似乎是正确的。在您的情况下,我坚信问题与mysql类路径有关。请检查您是否正确地包含了mysql连接器。

非常感谢您的帮助……我将看到此页面只加载一次……真正的问题是。。getConnection()函数中似乎存在一些问题…..因为您只需用一个简短的示例解释您的答案….?非常感谢您的帮助….我将看到此页面只加载一次…..真正的问题是。。getConnection()中似乎存在一些问题函数….因为你只是用一个简短的例子来解释你的答案…??@abidin…你说得对…ma'an…..我错过了mysql连接器,我一直在想c3p0有什么问题,一直在尝试各种xml东西…非常感谢…@abidin…你说得对…ma'an…..我错过了mysql连接器,我已经一直在考虑c3p0的一些问题,并且一直在尝试各种xml内容……非常感谢。。。。。
       public static Connection getConnectionfromPool() throws SQLException
       {
             return cpds.getConnection();
       }