Java Grails:在Glassfish上取消部署会导致连接池不再可用

Java Grails:在Glassfish上取消部署会导致连接池不再可用,java,grails,jdbc,glassfish,connection-pooling,Java,Grails,Jdbc,Glassfish,Connection Pooling,我正在做一个运行在glassfish 3.1.2.2上的grails 2.2.1项目,使用一个连接到postgres 9.2数据库的jndi池数据源。 当我第一次部署应用程序时,我没有任何问题,一切正常 但是,每次我取消部署(或重新部署)应用程序时,我的连接池都会停止工作。 如果我尝试使用glassfish管理控制台ping,则会出现以下错误: Avertissement: RAR8054: Exception while creating an unpooled [test] connecti

我正在做一个运行在glassfish 3.1.2.2上的grails 2.2.1项目,使用一个连接到postgres 9.2数据库的jndi池数据源。 当我第一次部署应用程序时,我没有任何问题,一切正常

但是,每次我取消部署(或重新部署)应用程序时,我的连接池都会停止工作。 如果我尝试使用glassfish管理控制台ping,则会出现以下错误:

Avertissement: RAR8054: Exception while creating an unpooled [test] connection for pool [ sample ],
Connection could not be allocated because: No suitable driver found for
jdbc:postgresql://localhost:5432/sample?loginTimeout=0&socketTimeout=0&prepareThreshold=5&unknownLength=2147483647&loglevel=0&tcpkeepalive=false
Grave: RestResponse.getResponse() donne FAILURE.
endpoint = http://localhost:4848/management/domain/resources/ping-connection-pool.json ; attrs = {id=sample}'
我重复一遍:我的连接池在部署时工作正常(我在“/glassfish/lib”中有postgresql驱动程序,我的连接池配置正确,等等),只有在我取消部署时才会出现问题。 这个bug是高度可复制的,我甚至做了一个小的grails项目来重现这个问题,您只需要在glassfish服务器上配置一个连接到“sample”数据库(jndi/sample)的jndi数据源

这是github链接:

战争:

和domains.xml文件:

在grails方面,我与池的连接配置如下:

environments {
    production {
        dataSource {
            dbCreate = "create-drop"
            jndiName = "jdbc/sample"
        }
    }
}
我认为这个bug很严重,因为它杀死了一个可以在其他webapp或ear之间共享的连接池。 作为参考,我做了一些研究,感觉可能是某种与取消部署相关的类卸载程序,我发现log4j可能与此问题有关,因此我尝试:

-Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false
但这没用

最后一点:事实上,postgresql驱动程序已完全卸载,因此在取消部署后,使用postgresql驱动程序的其他连接池将不可用

指向Grails邮件列表中相同问题的链接:

链接到Glassfish的Jira中的同一问题:

谢谢你的帮助