38 个解决方案
#1
难道连接池没有配好吗?
#2
楼主的问题中的环境不明确呀。应该具体说说环境呀。什么数据库,什么连接池,怎么配置的连接池?tomcat连接池还是开源连接池?
是不是 主站连接池的最小连接数 + 副站连接池的最小连接数 > 数据库连接数了?
是不是 主站连接池的最小连接数 + 副站连接池的最小连接数 > 数据库连接数了?
#3
主站和副站是同一个工程么?
连接池以何种方式进行访问?(引用内置?外部服务器配置?配置文件配置?)
配置文件加载的是一个还是两个?
你想要的结果是什么?
@(#&%)(@#……%)@#&%)@&%)@#(%&)@#&%)@#&%)@#&%)#@&%)
连接池以何种方式进行访问?(引用内置?外部服务器配置?配置文件配置?)
配置文件加载的是一个还是两个?
你想要的结果是什么?
@(#&%)(@#……%)@#&%)@&%)@#(%&)@#&%)@#&%)@#&%)#@&%)
#4
贴一下你的配置
#5
都在一个应用下面吗?
#6
配置问题
#7
我用的数据库是SQL SERVER2000
这是连接数据库的类
这是连接数据库的类
public class DBConnection {
private static String
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver",//驱动
url = "jdbc:sqlserver://localhost:1433;DatabaseName=wz",//URL
Name="sa",//用户名
Password="***";//密码
private static Class driverClass = null;
private static ObjectPool connectionPool = null;
public DBConnection(){
}
/**
* 初始化数据源
*/
private static synchronized void initDataSource() {
if (driverClass == null) {
try {
driverClass = Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
/**
* 连接池启动
* @throws Exception
*/
public static void StartPool() {
//loadProperties();
initDataSource();
if (connectionPool != null) {
ShutdownPool();
}
try {
connectionPool = new GenericObjectPool(null);
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, Name, Password);
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
Class.forName("org.apache.commons.dbcp.PoolingDriver");
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
driver.registerPool("dbpool", connectionPool);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 释放连接池
*/
public static void ShutdownPool() {
try {
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
driver.closePool("dbpool");
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 取得连接池中的连接
* @return
*/
public static Connection getConnection() {
Connection conn = null;
if(connectionPool == null)
StartPool();
try {
conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:dbpool");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 获取连接
* getConnection
* @param name
* @return
*/
public static Connection getConnection(String name){
return getConnection();
}
/**
* 释放连接
* freeConnection
* @param conn
*/
public static void freeConnection(Connection conn){
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 释放连接
* freeConnection
* @param name
* @param con
*/
public static void freeConnection (String name,Connection con){
freeConnection(con);
}
}
#8
奇怪的是以前需要配置xml的,可现在不用也能连接数据库,不知道是什么原因?
#9
这个类是别人给我的
#10
只要我打开副站,主站就连不上数据库。
那么,打开主站,副站能用吗?
呵呵!实在看不懂。
你的数据库是远程的吗?不再本地本机上?
那么,打开主站,副站能用吗?
呵呵!实在看不懂。
你的数据库是远程的吗?不再本地本机上?
#11
两个项目是独立的项目,另外一个连接类也是用了这个类,就是数据库改变了.
#12
我是发布到服务器上去的,数据库也是在本地连接的,就是我打开主站,可以连接数据库,我打开副站,连接数据库后,我再打开主站,就连不上了。如果我先打开副站,然后再打开主站,还是会发生同样的情况。
#13
两个项目是不是发生了冲突,那冲突在哪呢?
#14
用什么数据库?什么类型连接池?
#15
一个连接池?两个不同的数据库?
#16
你主站和副站部署在一个web容器上面了?
#17
是同一个连接数据库类,两个不同的数据库,对了,同一个连接数据库类是不是表示同一个连接池呀,如果是这样的话,是不是有冲突呀
#18
嗯
#19
你在配置文件中建两个连接,然后分别去读取配置文件,这样应该能解决这个问题吧
#20
首先确定一下数据库可用连接是否足够,还有 看一下每台机器的数据库连接数量 netstat -na 看一下连接至端口1433数量
再确定你的Pool是否正常使用。
再确定你的Pool是否正常使用。
#21
不明白,幫頂
#22
两个不同的数据库应该配置两个连接池.楼主用的是什么连接池?怎么也没看到你配置呢?
#23
我觉得是这样的。因为你主站和副站在一个web容器中,而且你使用了一个连接池的类,去连接
两个不同的数据库。你的
包名和类名都一样吧?
当副站启动时,web容器 加载副站的连接池时,因为使用了一样的类名和包名,所以是不是就会把 主站的 连接池给替换,这样主站就连不上了。建议换一下副站连接池的类名?
仅供参考。
当副站启动时,web容器 加载副站的连接池时,因为使用了一样的类名和包名,所以是不是就会把 主站的 连接池给替换,这样主站就连不上了。建议换一下副站连接池的类名?
仅供参考。
#24
ls说的似乎有道理 顶一下
#25
<Context path="/ttkd" docBase="" debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt" timestamp="true"/>
<Resource name="JDBC/Server2000" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="JDBC/Server2000">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:sqlserver://localhost:1433;DatabaseName=wz</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>*</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20000</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10000</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>60000</value>
</parameter>
</ResourceParams>
</Context>
#26
这就是配置文件,另外我的副站没用配置文件。
#27
#28
我没有用配置文件也连到了数据库,怎么配置才能让那个配置文件有效呢。
#29
帮顶..学习..
#30
#31
是不是那个公用类有问题呀,大家帮看看。
#32
我那个数据库连接类是不是有问题呀,我没有配置文件都可以跑。
#33
这个类是别人给我的,是不是这个类的原因呀,好像都不用配置的。
#34
没有哪位高人知道吗?急用呀,江湖救急,大家快帮帮忙呀。
#35
怎么没人理呀,SOS,我今天要加班的呀,各位大哥帮帮忙,我怎么不需要配置文件就能连到数据库呀。这是怎么回事呀。
#36
怎么会有冲突呢。
#37
高人在哪?
#38
一个web服务器下,两个工程(虚拟目录)?
没有试过,那为什么不用web服务器自身的连接池呢?
没有试过,那为什么不用web服务器自身的连接池呢?
#1
难道连接池没有配好吗?
#2
楼主的问题中的环境不明确呀。应该具体说说环境呀。什么数据库,什么连接池,怎么配置的连接池?tomcat连接池还是开源连接池?
是不是 主站连接池的最小连接数 + 副站连接池的最小连接数 > 数据库连接数了?
是不是 主站连接池的最小连接数 + 副站连接池的最小连接数 > 数据库连接数了?
#3
主站和副站是同一个工程么?
连接池以何种方式进行访问?(引用内置?外部服务器配置?配置文件配置?)
配置文件加载的是一个还是两个?
你想要的结果是什么?
@(#&%)(@#……%)@#&%)@&%)@#(%&)@#&%)@#&%)@#&%)#@&%)
连接池以何种方式进行访问?(引用内置?外部服务器配置?配置文件配置?)
配置文件加载的是一个还是两个?
你想要的结果是什么?
@(#&%)(@#……%)@#&%)@&%)@#(%&)@#&%)@#&%)@#&%)#@&%)
#4
贴一下你的配置
#5
都在一个应用下面吗?
#6
配置问题
#7
我用的数据库是SQL SERVER2000
这是连接数据库的类
这是连接数据库的类
public class DBConnection {
private static String
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver",//驱动
url = "jdbc:sqlserver://localhost:1433;DatabaseName=wz",//URL
Name="sa",//用户名
Password="***";//密码
private static Class driverClass = null;
private static ObjectPool connectionPool = null;
public DBConnection(){
}
/**
* 初始化数据源
*/
private static synchronized void initDataSource() {
if (driverClass == null) {
try {
driverClass = Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
/**
* 连接池启动
* @throws Exception
*/
public static void StartPool() {
//loadProperties();
initDataSource();
if (connectionPool != null) {
ShutdownPool();
}
try {
connectionPool = new GenericObjectPool(null);
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, Name, Password);
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
Class.forName("org.apache.commons.dbcp.PoolingDriver");
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
driver.registerPool("dbpool", connectionPool);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 释放连接池
*/
public static void ShutdownPool() {
try {
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
driver.closePool("dbpool");
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 取得连接池中的连接
* @return
*/
public static Connection getConnection() {
Connection conn = null;
if(connectionPool == null)
StartPool();
try {
conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:dbpool");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 获取连接
* getConnection
* @param name
* @return
*/
public static Connection getConnection(String name){
return getConnection();
}
/**
* 释放连接
* freeConnection
* @param conn
*/
public static void freeConnection(Connection conn){
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 释放连接
* freeConnection
* @param name
* @param con
*/
public static void freeConnection (String name,Connection con){
freeConnection(con);
}
}
#8
奇怪的是以前需要配置xml的,可现在不用也能连接数据库,不知道是什么原因?
#9
这个类是别人给我的
#10
只要我打开副站,主站就连不上数据库。
那么,打开主站,副站能用吗?
呵呵!实在看不懂。
你的数据库是远程的吗?不再本地本机上?
那么,打开主站,副站能用吗?
呵呵!实在看不懂。
你的数据库是远程的吗?不再本地本机上?
#11
两个项目是独立的项目,另外一个连接类也是用了这个类,就是数据库改变了.
#12
我是发布到服务器上去的,数据库也是在本地连接的,就是我打开主站,可以连接数据库,我打开副站,连接数据库后,我再打开主站,就连不上了。如果我先打开副站,然后再打开主站,还是会发生同样的情况。
#13
两个项目是不是发生了冲突,那冲突在哪呢?
#14
用什么数据库?什么类型连接池?
#15
一个连接池?两个不同的数据库?
#16
你主站和副站部署在一个web容器上面了?
#17
是同一个连接数据库类,两个不同的数据库,对了,同一个连接数据库类是不是表示同一个连接池呀,如果是这样的话,是不是有冲突呀
#18
嗯
#19
你在配置文件中建两个连接,然后分别去读取配置文件,这样应该能解决这个问题吧
#20
首先确定一下数据库可用连接是否足够,还有 看一下每台机器的数据库连接数量 netstat -na 看一下连接至端口1433数量
再确定你的Pool是否正常使用。
再确定你的Pool是否正常使用。
#21
不明白,幫頂
#22
两个不同的数据库应该配置两个连接池.楼主用的是什么连接池?怎么也没看到你配置呢?
#23
我觉得是这样的。因为你主站和副站在一个web容器中,而且你使用了一个连接池的类,去连接
两个不同的数据库。你的
包名和类名都一样吧?
当副站启动时,web容器 加载副站的连接池时,因为使用了一样的类名和包名,所以是不是就会把 主站的 连接池给替换,这样主站就连不上了。建议换一下副站连接池的类名?
仅供参考。
当副站启动时,web容器 加载副站的连接池时,因为使用了一样的类名和包名,所以是不是就会把 主站的 连接池给替换,这样主站就连不上了。建议换一下副站连接池的类名?
仅供参考。
#24
ls说的似乎有道理 顶一下
#25
<Context path="/ttkd" docBase="" debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt" timestamp="true"/>
<Resource name="JDBC/Server2000" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="JDBC/Server2000">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:sqlserver://localhost:1433;DatabaseName=wz</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>*</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20000</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10000</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>60000</value>
</parameter>
</ResourceParams>
</Context>
#26
这就是配置文件,另外我的副站没用配置文件。
#27
#28
我没有用配置文件也连到了数据库,怎么配置才能让那个配置文件有效呢。
#29
帮顶..学习..
#30
#31
是不是那个公用类有问题呀,大家帮看看。
#32
我那个数据库连接类是不是有问题呀,我没有配置文件都可以跑。
#33
这个类是别人给我的,是不是这个类的原因呀,好像都不用配置的。
#34
没有哪位高人知道吗?急用呀,江湖救急,大家快帮帮忙呀。
#35
怎么没人理呀,SOS,我今天要加班的呀,各位大哥帮帮忙,我怎么不需要配置文件就能连到数据库呀。这是怎么回事呀。
#36
怎么会有冲突呢。
#37
高人在哪?
#38
一个web服务器下,两个工程(虚拟目录)?
没有试过,那为什么不用web服务器自身的连接池呢?
没有试过,那为什么不用web服务器自身的连接池呢?