Java jsp tomcat中带有netbeans的c3p0连接池
我正在jsp中执行连接池操作。 我在一个名为MCE_Server.java的特定类中创建了一个静态函数,并包括以下内容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
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();
}