当前位置: 技术问答>java相关
请问启动的多个java虚拟机如何共享一个连接池?
来源: 互联网 发布时间:2017-03-23
本文导语: 只能有一个实例的连接池在多个java进程中好像是独立的,如何实现共享?难道必须都在一个进程里面然后通过多线程来使用? | 如果象访问普通的类一样访问连接池那一定不可以,我的理解是...
只能有一个实例的连接池在多个java进程中好像是独立的,如何实现共享?难道必须都在一个进程里面然后通过多线程来使用?
|
如果象访问普通的类一样访问连接池那一定不可以,我的理解是这样你可以用应用服务器启动一个连接池如Weblogic之后建立Datasource,之后两个虚拟机上的java程序分别通过JNDI访问不知道是否可以?
|
使用分布式
多个 business logic server对应一个DAO server
例如:采用EJB
多个 business logic server对应一个DAO server
例如:采用EJB
|
实际上你要是知道连接池的工作原理以后就很简单了,连接池实际上就是一个Connection数组,他在应用程序服务器初始化的时候就和数据库连接上了。当我们用连接池的时候,就从数组里头取出一个Connection,
比如 Connection myCon=ConnectionPool[i];
ConnectionPool[i]=null;
当我们用完该连接后又重新还给数组:
ConnectionPool[i]=myCon;
myCon=null;
这之后就没有任何与数据库建立连接的操作,这样就实现了数据库连接池。
以后有什么问题,可以切磋切磋 : hxgui@sina.com
比如 Connection myCon=ConnectionPool[i];
ConnectionPool[i]=null;
当我们用完该连接后又重新还给数组:
ConnectionPool[i]=myCon;
myCon=null;
这之后就没有任何与数据库建立连接的操作,这样就实现了数据库连接池。
以后有什么问题,可以切磋切磋 : hxgui@sina.com
|
每个虚拟机是独立的线程阿,这个之间不可能共享一个数据库连接阿,共享数据倒是可以。听听其他人的说法了。