Java 是否使用gwt和c3p0连接池重新加载web服务器?

Java 是否使用gwt和c3p0连接池重新加载web服务器?,java,gwt,connection-pooling,c3p0,Java,Gwt,Connection Pooling,C3p0,我有一个用gwt编写的web应用程序,我在后端使用PostgreSQL数据库。在服务器上创建新会话时,我设置c3p0并获得jdbc连接: ComboPooledDataSource source = new ComboPooledDataSource(); Properties connectionProps = new Properties(); connectionProps.put("user", "username"); connectionProps.put("password", "

我有一个用gwt编写的web应用程序,我在后端使用PostgreSQL数据库。在服务器上创建新会话时,我设置c3p0并获得jdbc连接:

ComboPooledDataSource source = new ComboPooledDataSource();
Properties connectionProps = new Properties();
connectionProps.put("user", "username");
connectionProps.put("password", "password");   
source.setProperties(connectionProps);
source.setJdbcUrl("some jdbc url that works");
当我关闭服务器上的会话时,我关闭ComboPooledDataSource

然而。。。当我在GWT开发模式下按下黄色的“重新加载web服务器”按钮并刷新我的页面时,我得到以下警告,以及一系列后续错误,阻止我获得数据库连接:

ComboPooledDataSource source = new ComboPooledDataSource();
Properties connectionProps = new Properties();
connectionProps.put("user", "username");
connectionProps.put("password", "password");   
source.setProperties(connectionProps);
source.setJdbcUrl("some jdbc url that works");
警告:C3P0MBean注册表已注册。这可能意味着使用c3p0的应用程序已取消部署,但并非所有PooledDataSources在取消部署之前都已关闭。随着时间的推移,这可能会导致资源泄漏。请注意关闭所有池数据源


我假设这意味着重新加载web服务器并没有关闭我所做的ComboPooledDataSource(可能是一个安全的假设)。是否有任何方法可以让它这样做,以便在重新加载web服务器后获得连接?

通常关闭数据源(不仅仅是C3P0)是不可取的,因为它们应该从服务器上的许多应用程序中使用。如果关闭此连接池,其他连接池可能会丢失数据访问。实际上,应该将池管理留给容器,只使用JNDI

无论如何,如果您需要消除GWT控制台中的警告,请在EventListener contextDestroyer中使用此方法:

}

很酷,谢谢。忘记了ServletContextListener,以及关于数据源的好建议,尽管我相信这是将在我的服务器上运行的唯一应用程序,对于开发模式而言,这更方便。再次感谢!