从纯JAVA程序保持JDBC连接池的活动状态

从纯JAVA程序保持JDBC连接池的活动状态,java,jdbc,pool,Java,Jdbc,Pool,我的目标是:在Apache中建立一个JDBC连接池,在纯JAVA程序的多次运行之间保持活动/可重用 到目前为止,我知道如何做: 1) 在Netbeans中创建一个JavaScript应用程序,该应用程序基于context.xml中定义的数据源使用JDBC连接池。已建立的连接在应用程序的多次运行之间保持活动状态,无论我在应用程序中连接/断开连接多少次,数据库端连接的数量都不会增加。这正是我想要在纯JAVA中实现的 2) 在Netbeans中创建一个纯JAVA应用程序,该应用程序建立并使用JDBC连

我的目标是:在Apache中建立一个JDBC连接池,在纯JAVA程序的多次运行之间保持活动/可重用

到目前为止,我知道如何做:

1) 在Netbeans中创建一个JavaScript应用程序,该应用程序基于context.xml中定义的数据源使用JDBC连接池。已建立的连接在应用程序的多次运行之间保持活动状态,无论我在应用程序中连接/断开连接多少次,数据库端连接的数量都不会增加。这正是我想要在纯JAVA中实现的

2) 在Netbeans中创建一个纯JAVA应用程序,该应用程序建立并使用JDBC连接池。 问题:每次运行应用程序时,都会建立/销毁JDBC连接池。 该应用程序计划为短命程序,运行频繁,只需几次连接/断开连接。因此,上述池的创建/销毁违背了其自身的目的


是否有可能结合以上两种方法中的最佳方法来实现我的目标:
不知何故,让Apache创建一个JDBC连接池,该连接池在我的纯JAVA应用程序的多次运行之间存活下来,而这些应用程序将使用该连接池?

您的做法是错误的

没有任何连接池可以在JVM重启后继续存在,因为退出JVM时,它打开的所有套接字都将被销毁

如果您想要有一个持久连接池,您需要在某处运行一个持久JVM进程

Tomcat是一个非常熟练的长时间运行的服务器,可以托管连接池

如果您有一个只想偶尔运行的查询,那么可以在Tomcat中部署的应用程序中使用不同的技术来执行该查询。两个现成的示例是Java计时器,或者使用Quartz之类的库

如果您坚持“运行一次”风格的程序,则始终可以部署一个简单的WAR,该WAR在启动时运行代码一次(使用ContextListener或启动时加载Servlet的init方法),然后让外部进程根据需要部署该代码。Tomcat的连接池将保持活动状态,您可以反复部署程序来运行代码


因此,这里可以应用不同的技术。

我了解到,实现我想要的更好的方法是开发一个Web服务,并将我的“纯Java”代码打包到Web服务客户端。

您想要一个跨多个JVM运行的连接池吗?如果连接只是做少量的工作,那么为什么要有一个池,而不是每次运行都创建和销毁一个连接呢?我发现在Apache中运行Java应用程序是非常不寻常的。通常,服务器端Java应用程序在一些Java应用程序服务器中运行,如Tomcat。在这种情况下,只要服务器处于运行状态,您的连接池就会一直存在。是的,这是Apache Tomcat,我应该更准确地说。连接池在多个JVM运行中持续存在的原因:例如,这可能是一个每30秒连接数据库的金丝雀查询。建立新的连接通常会使数据库负担过重,因此需要池。池或其连接出现任何问题都将表明存在问题。谢谢。是的,我确实想要一个由Apache Tomcat托管的持久连接池。该连接池将由在自己的JVM中运行的独立JAVA程序使用。我一直在寻找一种解决方案,如果可能的话,可以避免在每次重复运行时重新部署那些JAVA程序。因此,应尽量减少新数据库连接的数量。JAVA效率和资源使用将被视为次要问题。