Java Grails:在Glassfish上取消部署会导致连接池不再可用
我正在做一个运行在glassfish 3.1.2.2上的grails 2.2.1项目,使用一个连接到postgres 9.2数据库的jndi池数据源。 当我第一次部署应用程序时,我没有任何问题,一切正常 但是,每次我取消部署(或重新部署)应用程序时,我的连接池都会停止工作。 如果我尝试使用glassfish管理控制台ping,则会出现以下错误: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
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中的同一问题:
谢谢你的帮助