我完全熟悉连接池库,比如c3p0等。我对由web容器管理的连接池很满意,比如Tomcat和WebSphere。
但是,如果您有一个独立的、批处理模式的Java应用程序(带有main方法),并且希望它能够利用连接池,那该怎么办呢?我的意思是,如果独立程序是管理池,它将运行,创建池,使用连接,然后退出,销毁池。如果您希望应用程序运行并使用现有的连接池,这实际上不会给您带来任何好处。
我想问的是,在数据库和Java命令行应用程序之间是否可以运行一层软件来管理连接池?该软件将为您的Java应用程序提供一个端口,以便通过JDBC访问连接池。因此,任何具有指向此端口的JDBC URL的应用程序都将使用该连接池。现在,即使没有中间件服务器(tomcat、glassfish),独立的应用程序也可以利用连接池。
听起来很酷。它存在吗?它是否适用于Oracle :)
发布于 2013-07-28 16:28:59
我没有测试它,但它看起来很有趣:
DBPool : Java Database Connection Pooling
什么是DBPool?
基于Java的数据库连接池实用程序,支持基于时间的过期、语句缓存、连接验证和使用池管理器轻松配置。
发布于 2013-07-28 17:07:34
据我所知,您的设置池必须是独立的进程。这意味着,批处理为数据库使用了正确的JDBC驱动程序,但应该与池通信。这意味着,池必须使用数据库的专有协议。这不能由一个产品以合理的努力来完成。
因此,您不应该要求一个通用的解决方案,而应该要求一个特定数据库的解决方案。
例如,对于PostgreSQL,有两个这样的池: PgBouncer和pgpool。
https://stackoverflow.com/questions/16153638
复制相似问题